用一个全局变量来接收串口数据,用信号和槽,每次接收到串口数据都在这个变量上追加数据,够7位后进行处理,然后继续下次的接收

反正我就是这么干的
头文件中定义串口:
QSerialPort *com0,*com1,*com2;//串口
初始化:
com0 = new QSerialPort(this);
com1 = new QSerialPort(this);
com2 = new QSerialPort(this);
信号和槽的连接(一旦串口可读,则执行槽函数read_com(),槽函数也要在头文件中定义)
connect(com0,SIGNAL(readyRead()),this,SLOT(read_com()));
槽函数
void Widget::read_com()
{
static QString data;
data.append(QString(com0->readAll()));
if(data.length()>=7){
QString tmp;
tmp=data.mid(0,7);
data=data.mid(8);
}
}
tmp就是取到的前七位数据
代码可能不对,但思路就是这样子