标签: 杂谈 |
一、关于数据接收。
我们想在程序中对接收的数据进行控制,但是readyRead() 信号是一旦有数据到来就发射的,
不过我们可以使用bytesAvailable() 函数来检查已经获得的字节数,从而对数据接收进行控
制。
(1)我们在widget.cpp 中添加头文件包含:#include
void Widget::readMyCom() //读取串口数据并显示出来
{
}
程序运行如下:
可以看到,我们获得的数据并不是一次获得的。
(2)利用上面的结论,我们可以让串口缓冲区拥有了一定的数据后再读取。
void Widget::readMyCom()
{
if(myCom->bytesAvailable() >=8 )
//如果可用数据大于或等于8字节再读取
}
我们发送了两次数据,可以看到,这样实现了每 8 个字节读取一次,而最后剩余的不够 8个字节的数据将会和后面的数据一起读出。
重要结论:我们发送一次数据,应该获得 37字节的数据,然后我们对比上面的结果,发现
了什么?是的,其实串口每次读取 8 字节的数据放到缓冲区,只有数据总数小于 8 字节时,
才会读取小于8 字节的数据。为了再次验证我们的结论,我们可以将上面程序中的“>=”
改为“==”,那么只有 8 的倍数才能读取数据(当然这里 37也可以),你可以测试一下。