IMX6ULL+QT+485采集
演示视频:
[video(video-eoQAKeRX-1595308580443)(type-bilibili)(url-https://player.bilibili.com/player.html?aid=328985147)(image-https://ss.csdn.net/p?http://i1.hdslb.com/bfs/archive/729aef0d4ee0e996ca423964d20ddc9836139422.jpg)(title-【野火linux】linux嵌入式问询485传感器)]
接下来记录我的第二个linux+QT的应用,其实原理很简单,打开串口,配置波特率,然后对接485传感器即可。具体流程如下:
由野火的linux板原理图和手册可知,CAN和485是公用的,切换跳线帽即可使能485接口
接着就是QT部分的编程:整体不是太复杂,而且我在代码中做了比较详细的中文注释
代码链接:https://gitee.com/wenzhengclub/Imx6ULL_QT_RS485
接下来主要是针对代码和制作过程中遇到的问题进行分析:
首先是初始化部分,主要是进行串口相关的信息的配置
然后就是串口到来的数据的解析:
|
|
其中最重要的就是这里: QDataStream out4(&buf,QIODevice::ReadWrite); //将字节数组读入
因为我测试发现QT对于16进制buf的处理有一些问题,QT里有一个QByteArray 它用来接收串口数据,然后还有一个函数:toHex()但是它并不能将数据准换为16进制buf,而是转成了16进制的字符串。最终查阅资料发现别人使用的拼接函数,把字节一个一个拼接成c语言常用的16进制buf,接下来就和单片机处理485的方法一致了,解析数据,计算传感器值。