Labview学习之路(十四)串口发送与回车、换行符的问题

时间:2024-02-16 17:34:51

       我在用labview做的串口与单片机进行通信的的时候,发现发送的数据加回车符单片机是接收不到数据的,而使用回车+换行符单片机就可以接收到数据,为此使用串口调试助手做了一个简单的调试。

首先解释一下他们的定义:

  • 回车符:\r   0x0D  使光标移到行首
  • 换行符:\n  0x0A   使光标下移一格

 

但是当我们直接在vi中打印的时候却出现了和它定义不同的现象,三个都直接换行了

 

可能你会说是不是我前面板显示控件开启了自动换行,这个我是真的是关掉了自动换行

 

 那这是为什么呢,按道理回车不是换行呀,他的作用不是光标移动到行首嘛?

我到网上查了好多博客,上边说系统对回车、换行的处理不同,在Windows系统中,对于单独的回车直接把他们当成回车和换行处理,所以就出现了只打印回车符也会出现换行的现象。其它系统有些不一样的,下边是我在网上找的

  • Unix系统里,每行结尾只有“<换行>”,即“\n”;
  • Windows系统里面,每行结尾是“<回车><换行>”,即“\r\n”;
  • Mac系统里,每行结尾是“<回车>”,即“\r”。

所以这个问题就解决了,就是windows系统默认回车符当作回车符+换行符在作怪。

但是当使用串口调试助手时候有出现问题了,我仅发送回车符或者换行符就不出现换行的现象了

看下边的发送情况,
当我们连续发送三次字符串“123”+回车符,显示出的是他们连接在一起了

 

当我们连续发送三次字符串“123”+换行符,显示出的是他们依旧连接在一起了

 

 

 

 

当我们连续发送三次字符串“123”+回车符+换行符,显示出的是他们换行了

 

列一个比较清晰的表

  •  多次字符串+回车符            --------------》 连接在一起,无换行
  •  多次字符串+换行符            --------------》 连接在一起,无换行
  •  多次字符串+回车符+换行符--------------》换行

 

这与我们打印的时候不一样呀!刚才打印的时候明明都换行了,而现在回车符和换行符单独发送不出现换行现象,那这是为啥呢?

 

打印的时候-----------》系统把你的回车符当成回车符+换行符一起处理,所以出现换行现象

发送的时候-----------》系统只把回车符(或者换行符)单独发出去了,而不是发送的回车符+换行符

 

在调试助手中,他是需要识别到回车符+换行符才会出现换行的现象,现在你只单独发了回车符(或者换行符),两者不匹配,所以肯定出现不了换行的现象。