关于QT串口编程与单片机通信的问题,单片机为STM32

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于QT串口编程与单片机通信的问题,单片机为STM32相关的知识,希望对你有一定的参考价值。

Qt串口程序是用的网上别人写好的类,win_qextserialport,程序能收也能发。但是我单片机的程序是if data==0x11,我就控制蜂鸣器亮,else,我就给QT程序发个0x40作为回应,结果QT都是收到40,我怎么弄就能让单片机程序就能收到0x11,QT发送数据,我是这样写的,this->mycom->write(ui->lineEditSendMsg->text.toAscii().toHex()); 我把.toHex()去掉也没有用

参考技术A 因为你获取到的是字符,转换成ascii后1是31,他再次帮你转换成了ascii 33,31

所以这里不能用toHex,可以尝试toNumber十进制
实际上QT使用串口的时候,直接open串口设备,write发送,事件触发接收更简单。
单片机就没什么好说的了
参考技术B 看来你是软硬件通吃啊 上位机也自己写啊

我是这样想的
1,你先确定下波特率上位机和单片机是否一致
2,能否把单片机收到的串口数据通过其他方式显示出来 或者直接用keil或iar仿真看你收到的是不是0x11
如果不是那就从qt发送部分找问题追问

收发是没有问题的,我上午整了整,能做到控制了,就是把上面的.toHex()去掉。就是以Asc马发出数据,比如我发1,单片机收到的就是0x31(1的ASC马,16进制),我打印出来也是这样,所以我能控制了,但是我觉得这样不是太好,还有加了.toHex()后不知道是什么意思,我发1,打印出来的是,33,31,我发2,就打印33,32

追答

恩,看来没问题了
你可以用qt的打印功能调试你写的程序

以上是关于关于QT串口编程与单片机通信的问题,单片机为STM32的主要内容,如果未能解决你的问题,请参考以下文章

隔壁老王看了都会的文章:STM32串口实验——单片机与上位机交互信息

关于stm32单片机通过串口下载程序电路使用ch340和max232芯片的问题

STM32 串口通信基础知识

K210学习笔记 K210与STM32串口通信相关

单片机编程中 如何清除串口接收寄存器中的值,即清除SBUF中的值

嵌入式 02 STM32 07串口通信