用labview写的串口一直读不到数据,找了很久终于发现原因了。
在写串口之前,先确定串口的配置有没有错。如波特率、校验位、停止位、流控制等。
然后是确定硬件能用。包括USB转串口,单片机。我用的是USB转TTL,最方便的一种验证方法就是,把USB转TTL的RX脚和TX脚短接起来,运行labview写的串口,实现自发自收的功能。验证单片机就用串口调试工具和单片机通信,调试工具发送命令,看单片机能不能返回数据。
labview的串口写法网上有很多,我就不详述了。主要讲一下我遇到的问题。
自己写的串口发下去数据,labview串口接收缓冲区接收不到。已经用上面的方法验证过,可以下发和接收的。后来查看数据类型,发现这个有影响。单片机接收的终止符是\r\n,而我labview发下去的只有\n。这个把发送缓冲区用十六进制显示,就可以看到最后的终止符只有\n,也就是换行符。也可以通过发送的字节数看。\r\n是两个字节,发的数据字节比自己输入的字节数要多两个。我需要的是\r\n,回车CR加换行LF,所以单片机接收不到我发的命令,所以没有返回。换成十六进制输入,增加\r\n,发送,就可以收到自己想要的数据啦。
labview只有一个终止符,也可以自己添加多个终止符,在这里附上NI论坛的链接:http://www.ni.com/tutorial/4256/zhs/
踩过的坑,希望能帮助到大家。