小弟做一个单片机与labview通信的程序,通过labview的界面控制单片机的输出,利用串口通信。程序框图如图所示,labview发送的字符串常量为1,单片机程序里接收到这个值后回发一个字符串,但是albview接收的却是:310D 0A(十六进制字符串)。即使把单片机程序里回发字符串的程序去掉还是能接收到:310D 0A 。不知道这个数值是从哪发的?郑重情况是什么问题啊,怎么才能接收正确
已解决! 转到解答。
谢谢你的回复!
字符串我是这样发送的:uart_send_string("1", 1);
可是我注销了://uart_send_string("1", 1);还能收到回复:310D 0A、320D 0A 、330D 0A 。此时我用secureCRT串口观察软件:却能够收到:1;
而且当我把1换成8或者其他数字时,串口观察软件能够收到对应的数字,而labview却还是收到:310D 0A、320D 0A 、330D 0A 。
1、请问这是什么原因,该如何解决呢?
2、如果注销的话单片机应该不会发送" \r\n" ,这样应该不会在labview中出现0D 0A 的呀?
3、31、32、33为何会出现在labview接收的字符串(310D 0A 、320D 0A 、330D 0A )中呢?(31、32、33应该分别是数字字符串1、2、3对应的ASC2码转换成的十六进制数)
恩,我在连接线处右键创建常量1.0,,然后与停止位相连了。
可是还是原来的情况,我把单片机内的串口发送语句注销后,labview还是能接收到310D 0A的字符串,而且串口调试工具并未接收到串口发送的数据,正常状态应该是labview也接收不到(因为单片机就咩有从串口发送数据),那labview现实的数据是从哪儿接收的呢?
我这边可以确认你的程序是没问题的,我也实际测试过了
你那三个按键什么都不按,难道也会有字符么?程序运行前你把里边的字符清除下。不会是把它默认值设置成这几个字符了吧
上边的确认无误后,在初始化串口后调用串口缓冲区清空函数,把接收缓存区清空。
什么都不按的话就没有字符,返回的显示框里是空的,只有在按了之后才出现那三个字符的,
恩,谢谢大神指点!