最近因为项目的需要,需要qt与C语言的进程间通信,这里表示Qt为A进程,C语言为B进程。
这里采用管道通信。
A进程的线程读取管道,B进程写入管道。
A线程读到char 字符数组中,然后再主线程中lineEdit显示。
遇到一个char 和QString的相互转换
这里给出一个解决办法。
比如A从线程中读到char buffer[1]中,在A主线程中使用
QString str;
str.sprintf("%d",buffer[0]);
然后 lineEdit->setText(str);
可以正确在qt界面上的lineEdit显示,如果强制的QString(buffer[0]),则会出现乱码,比如网上的str=QString(QLatin1String(fifo_read->buffer))和str = QString().arg(fifo_read->buffer_tea[0]);。
这个过程也参考了:http://bbs.csdn.net/topics/380092788
http://bbs.csdn.net/topics/390147200