关于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()去掉也没有用
展开
2个回答
展开全部
因为你获取到的是字符,转换成ascii后1是31,他再次帮你转换成了ascii 33,31
所以这里不能用toHex,可以尝试toNumber十进制
实际上QT使用串口的时候,直接open串口设备,write发送,事件触发接收更简单。
单片机就没什么好说的了
所以这里不能用toHex,可以尝试toNumber十进制
实际上QT使用串口的时候,直接open串口设备,write发送,事件触发接收更简单。
单片机就没什么好说的了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
看来你是软硬件通吃啊 上位机也自己写啊
我是这样想的
1,你先确定下波特率上位机和单片机是否一致
2,能否把单片机收到的串口数据通过其他方式显示出来 或者直接用keil或iar仿真看你收到的是不是0x11
如果不是那就从qt发送部分找问题
我是这样想的
1,你先确定下波特率上位机和单片机是否一致
2,能否把单片机收到的串口数据通过其他方式显示出来 或者直接用keil或iar仿真看你收到的是不是0x11
如果不是那就从qt发送部分找问题
追问
收发是没有问题的,我上午整了整,能做到控制了,就是把上面的.toHex()去掉。就是以Asc马发出数据,比如我发1,单片机收到的就是0x31(1的ASC马,16进制),我打印出来也是这样,所以我能控制了,但是我觉得这样不是太好,还有加了.toHex()后不知道是什么意思,我发1,打印出来的是,33,31,我发2,就打印33,32
追答
恩,看来没问题了
你可以用qt的打印功能调试你写的程序
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询