QT完成UDP网络上位机设计,接收STM32自定义报文数据的处理和显示

文章目录

  • 设计需求
  • UDP
    • TCP和UDP的区别
  • UI界面设计
    • 界面设计
    • UDP代码设计与实现
      • 打开UDP
      • 关闭UDP
      • 发送数据
      • 关闭UDP
  • 上位机板间通信协议
  • 板子通信代码设计
  • UDP上位机数据处理与显示
    • HEX形式转十进制显示QString::number

设计需求

在原设计中,没有网络部分的设计,所以硬件部分是没有设计网络模块。

为了增加网络功能,通过对预留串口的芯片手册查找,发现了预留的PA9和PA10口,可以复用为uart1串口。

QT完成UDP网络上位机设计,接收STM32自定义报文数据的处理和显示
UDP
QT完成UDP网络上位机设计,接收STM32自定义报文数据的处理和显示
对于UDP服务,需要设置本地的端口号,以及目标的端口号还有目标的IP

UDP代码设计与实现

打开UDP

单机 “打开UDP” 的PushButton时候,应该实现初始化udp的socket协议,接收和读写数据的功能。主要实现的功能是 读取UI界面中输入的本地端口号,绑定本地端口到到socket,监听数据是否接收到数据,读写数据,数据显示到指定位置

关闭UDP

发送数据

这里主要设计,读取UI界面中输入的目标端口号和目标IP地址,以及输入的数据存放到缓存中,最后就是发送指令

关闭UDP

上位机板间通信协议

因为要传输三个数据,直接发送过来接收,数据都挤在一起发送过来肯定是没有办法处理的,所以,要进行协议的设计,这里的报文协议设计采用比较简单使用的方法,规则如表所示

QT完成UDP网络上位机设计,接收STM32自定义报文数据的处理和显示

板子通信代码设计

因为使用了串口转网口模块,所以实际操作中直接发送数据到串口就可以了。

串口的发送函数,根据报文协议,生成对应的报文结构,然后通过串口发送出去数组。

本来应该有一个主从的应答校验重发,就是这样,因为时间关系就没有做

QT完成UDP网络上位机设计,接收STM32自定义报文数据的处理和显示
void Widget::readyRead_Slot(){    /* 等待接收到数据 */    while (udpSocket->hasPendingDatagrams()) {QByteArray datagram, buf, tempAdcx, tempTemper;/* 调整数组大小一致 */datagram.resize(udpSocket->pendingDatagramSize());udpSocket->readDatagram(datagram.data(), datagram.size());      // 读取接收到的数据buf = datagram;int len = buf.length();int i = 0, tempFan;while(len--){    if来源:“逛丢一只鞋”
                                                        

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年1月8日
下一篇 2021年1月8日

相关推荐