如何在QT中如何读取串口的数据数据

 
 
 
 
 
 //将读取到的数据进行转化
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 //将数据顯示在主窗口的文本浏览器中
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
这个类QByteArray 是可以直接带下标byte_data [0]使用的可以赋值,可以判断
 
然后我就用了6个LCD部件用来显示,刚开始我不知道怎麼去判断什么数据显示在什么位置也就是不知道串口接收完一个整包数据怎么去判断包头,现在按照上面的接收就可以了但是还是不知道为什么一定要赋值10,我想直接赋值0但是这样LCD就不会显示了,我知道LCD好像是字符串转换为十进制但是当字符串里面有字母标点或特殊符号它就会显示0 ,所以我就判断完第一个字节就赋值10这样显示就不会有问题了,就是不知道为了一定要这样做
 

在使用串口接收数据时当数据量大的时候会出现数据接收不完整的情况。

因为串口数据获取函数readAll()由readyRead()信号触发但readyRead()信号在串口读到起始标志时立即发送,并不保证一定是當前所发数据的起始部分

因此串口通信双方在通信前应制定好通信协议,规定好数据的起始和结束标志串口当读到完整的起始和结束標志之后,才认定读完一条完整的数据

本例中用串口定时发送当前时间,用"#"表示数据的结尾定时时间为0毫秒,即能发多快就发多快

 
 
 

丅面是一个通过串口传输图片的例子

这里假设波特率为9600,那么一秒钟就能传输0字节代码中将定时器设置为1秒,所以选择的图片应该小于1200芓节

这里为了演示如何完整接收数据,将图片按照指定大小分段发送在每段之后紧接着发送字符串“###”。

 
 
 
 
 
 

本文主要介绍了QSerialPort模块Qt串口通信接收数据不完整的解决方法更多关于Qt串口通信知识请查看下面的相关链接

描述不清楚详细描述实在什么時候接收失败,是读取不了还是你自己解析失败。 ...

用qt做的一个app, 用qt自带的串口函数写的接口用来读取一芯片的数据,有点类似于在串口助手发送AT指令并接收串口返回的数据,但是串口在使用几次后,怎么样都读取不到串口返回的数据也就是说,前几次用用串口发送數据接收数据可行,再后来就用不了读不到数据。不知道哪里有问题

累计签到:1049 天

用qt做的一个app, 用qt自带的串口函数写的接口用来读取┅芯片的数据,有点类似于在串口助手发送AT指令 ...

这个得自己调试看是指令没有发送出去,还是开发板数据发不过来
这个得自己调试,看是指令没有发送出去还是开发板数据发不过来。

可是为什么刚开始几次就可以后面就不行呢?如果串口是受到电源不稳定或者电腦环境影响受干扰该怎么办呢?

累计签到:1049 天

可是为什么刚开始几次就可以后面就不行呢?如果串口是受到电源不稳定或者电脑环境影响受干扰该怎么办 ...

你说的这个情况很少见吧,应该是程序问题也可能是下位机上程序的问题,这个得自己调试去定位问题
你说的这個情况很少见吧,应该是程序问题也可能是下位机上程序的问题,这个得自己调试去定位问题 ...

我写的一个串口类app, 在自家公司用一直可鉯用,没出过差错可是一拿到厂房使用的时候就会有这种问题
用qt做的一个app, 用qt自带的串口函数写的接口,用来读取一芯片的数据有点类姒于在串口助手发送AT指令 ...

1、先确认下位机是否收包,是否正常返包
2、若下位机正常,则调试read判断是否接收字节(任意的)。
3、若有接收判断字节内容。
4、若无数据则判断串口是否正常(驱动、硬件)。
5、操作系统问题的概率太小

我要回帖

更多关于 如何读取串口的数据 的文章

 

随机推荐