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

Qt串口程序是用的网上别人写好的类,win_qextserialport,程序能收也能发。但是我单片机的程序是ifdata==0x11,我就控制蜂鸣器亮,else,我就给... Qt串口程序是用的网上别人写好的类,win_qextserialport,程序能收也能发。但是我单片机的程序是if data==0x11,我就控制蜂鸣器亮,else,我就给QT程序发个0x40作为回应,结果QT都是收到40,我怎么弄就能让单片机程序就能收到0x11,QT发送数据,我是这样写的,this->mycom->write(ui->lineEditSendMsg->text.toAscii().toHex()); 我把.toHex()去掉也没有用 展开
 我来答
langqiong261
2013-06-29 · TA获得超过1161个赞
知道小有建树答主
回答量:1175
采纳率:0%
帮助的人:1187万
展开全部
因为你获取到的是字符,转换成ascii后1是31,他再次帮你转换成了ascii 33,31

所以这里不能用toHex,可以尝试toNumber十进制
实际上QT使用串口的时候,直接open串口设备,write发送,事件触发接收更简单。
单片机就没什么好说的了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liang890319
2013-06-29 · TA获得超过1235个赞
知道小有建树答主
回答量:1446
采纳率:50%
帮助的人:434万
展开全部
看来你是软硬件通吃啊 上位机也自己写啊

我是这样想的
1,你先确定下波特率上位机和单片机是否一致
2,能否把单片机收到的串口数据通过其他方式显示出来 或者直接用keil或iar仿真看你收到的是不是0x11
如果不是那就从qt发送部分找问题
追问
收发是没有问题的,我上午整了整,能做到控制了,就是把上面的.toHex()去掉。就是以Asc马发出数据,比如我发1,单片机收到的就是0x31(1的ASC马,16进制),我打印出来也是这样,所以我能控制了,但是我觉得这样不是太好,还有加了.toHex()后不知道是什么意思,我发1,打印出来的是,33,31,我发2,就打印33,32
追答
恩,看来没问题了
你可以用qt的打印功能调试你写的程序
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式