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

文章目录

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

设计需求

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

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

UDP代码设计与实现

打开UDP

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

关闭UDP

发送数据

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

关闭UDP

上位机板间通信协议

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

板子通信代码设计

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

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

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

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日

相关推荐