NI LabVIEW,CVI,数据采集等产品讨论区

取消
显示结果 
搜索替代 
您的意思是: 

虚心请教大神们:有图有真相,单片机与labview串口通信,labview接收数据一直不正确,

已解决!
转到解答

小弟做一个单片机与labview通信的程序,通过labview的界面控制单片机的输出,利用串口通信。程序框图如图所示,labview发送的字符串常量为1,单片机程序里接收到这个值后回发一个字符串,但是albview接收的却是:310D 0A(十六进制字符串)。即使把单片机程序里回发字符串的程序去掉还是能接收到:310D 0A 。不知道这个数值是从哪发的?郑重情况是什么问题啊,怎么才能接收正确8~OUP_20{8`KPYSIHJD6`Y9.jpgU5%H9}WXMHQ$)[PHQ}6JM1H.jpgH8PG9@_F``I}C%G4(`XYXVV.jpgT[@7%)N1[%~65@Z[RWDR~DD.jpg

下载全部
0 项奖励
1 条消息(共 9 条)
7,287 次查看
解答
已被主题作者 LIhongyuan 接受

0D 0A是回车换行符号 也就是/r/n   请确认下你单片机输出的字节数是一个字节? 是不是在回发的字符末尾加上/r/n了

2 条消息(共 9 条)
7,280 次查看

谢谢你的回复!

字符串我是这样发送的: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码转换成的十六进制数)

0 项奖励
3 条消息(共 9 条)
7,271 次查看

请确认下你把停止位配置成了10,这个配置首先是不对的,一般是1.

我这边测试没有出现0D 0A的情况

你可以在电脑上安装个串口调试助手测试下,看看线路上是不是有数据

0 项奖励
4 条消息(共 9 条)
7,259 次查看

恩,我在连接线处右键创建常量1.0,,然后与停止位相连了。

可是还是原来的情况,我把单片机内的串口发送语句注销后,labview还是能接收到310D 0A的字符串,而且串口调试工具并未接收到串口发送的数据,正常状态应该是labview也接收不到(因为单片机就咩有从串口发送数据),那labview现实的数据是从哪儿接收的呢?

0 项奖励
5 条消息(共 9 条)
7,252 次查看

我这边可以确认你的程序是没问题的,我也实际测试过了

 

你那三个按键什么都不按,难道也会有字符么?程序运行前你把里边的字符清除下。不会是把它默认值设置成这几个字符了吧

上边的确认无误后,在初始化串口后调用串口缓冲区清空函数,把接收缓存区清空。

0 项奖励
6 条消息(共 9 条)
7,247 次查看

什么都不按的话就没有字符,返回的显示框里是空的,只有在按了之后才出现那三个字符的,

0 项奖励
7 条消息(共 9 条)
7,241 次查看

没有太好的意见了,您可以到其他电脑上试试程序。

0 项奖励
8 条消息(共 9 条)
7,228 次查看

恩,谢谢大神指点!

0 项奖励
9 条消息(共 9 条)
7,225 次查看