情景: 最近弄串口传输,在QT做好的GUI上发送一个指令给单片机,然后由单片机去返回一个值。
问题出来了,GUI上发送的指令成功,并且单片机也接收了发出数据,但是为什么GUI上显示不出来了?
看了许多网页,和盆友的讨论之后,发现串口助手上面一般分为两部分“字符—字符”和“字符—HEX”,而我不才,竟然发送整型数据而不自知,结果在这点上纠结半天。本以为只是发送一个个位数字很简单,不想在GUI如果要直接显示的话,还是转成字符串。(狂汗!~)
整型转成字符串的函数有两个——itoa和sprintf。
——itoa,是非标准C语言的扩展函数,换句话说就是它不是C标准库中的函数,而是Windows平台下扩展的。
(而我是要在单片机中使用这类函数,所以itoa是不允许的)
——sprintf,则选择这个。使用简单,如
char str[255];
sprintf(str, "%x", 100); //将100转为16进制表示的字符串(如果想转成十进制,就是“%d”了)
这样,我的上下位机的简单通信就好了。也没啥好说的,就是需要注意类型的问题。希望不要有人犯我这种低级错误。
PS:当然,也可以在QT上面对传过去的数据做个处理让其显示出来,但现在还没学到那一步。就希望若有人不小心看到这个,也不小心一下可以帮我解答下,就万分感谢了。