博主在制作一个QT软件与单片机进行数据传输(16进制的数据,结束标志是\r\n)的时候数据一直拿不完全。经过多日的研究终于成功了。
坑一:
QByteArray data;
data = Serial->readAll();//拿串口中的数据
因为串口设置的是8位数据位,因此拿到的数据是32位,但是博主想要的是“00 10 00 00 00 00 01 00 28 00 0A 01 01 01 01 00 \r\n”。但是QT使用qDebug()拿到是,如图(这样的数据不方便处理):
修改的代码如下:
QByteArray data;
data = Serial->readAll();//拿串口中的数据
temp.append(data);
if(temp.contains('\n'))//只有等到\n的时候才能进入
{
xxxx//
temp.clear();
}
这样处理后拿到的数据是:如图
坑二
单片机发送数据的时候需要加一个延时函数,不然还是会出现类似坑一的问题。
未完待续