Labview學習之路(十四)串口發送與回車、換行符的問題


       我在用labview做的串口與單片機進行通信的的時候,發現發送的數據加回車符單片機是接收不到數據的,而使用回車+換行符單片機就可以接收到數據,為此使用串口調試助手做了一個簡單的調試。

首先解釋一下他們的定義:

  • 回車符:\r   0x0D  使光標移到行首
  • 換行符:\n  0x0A   使光標下移一格

 

但是當我們直接在vi中打印的時候卻出現了和它定義不同的現象,三個都直接換行了

 

可能你會說是不是我前面板顯示控件開啟了自動換行,這個我是真的是關掉了自動換行

 

 那這是為什么呢,按道理回車不是換行呀,他的作用不是光標移動到行首嘛?

我到網上查了好多博客,上邊說系統對回車、換行的處理不同,在Windows系統中,對於單獨的回車直接把他們當成回車和換行處理,所以就出現了只打印回車符也會出現換行的現象。其它系統有些不一樣的,下邊是我在網上找的

  • Unix系統里,每行結尾只有“<換行>”,即“\n”;
  • Windows系統里面,每行結尾是“<回車><換行>”,即“\r\n”;
  • Mac系統里,每行結尾是“<回車>”,即“\r”。

所以這個問題就解決了,就是windows系統默認回車符當作回車符+換行符在作怪。

但是當使用串口調試助手時候有出現問題了,我僅發送回車符或者換行符就不出現換行的現象了

看下邊的發送情況,
當我們連續發送三次字符串“123”+回車符,顯示出的是他們連接在一起了

 

當我們連續發送三次字符串“123”+換行符,顯示出的是他們依舊連接在一起了

 

 

 

 

當我們連續發送三次字符串“123”+回車符+換行符,顯示出的是他們換行了

 

列一個比較清晰的表

  •  多次字符串+回車符            --------------》 連接在一起,無換行
  •  多次字符串+換行符            --------------》 連接在一起,無換行
  •  多次字符串+回車符+換行符--------------》換行

 

這與我們打印的時候不一樣呀!剛才打印的時候明明都換行了,而現在回車符和換行符單獨發送不出現換行現象,那這是為啥呢?

 

打印的時候-----------》系統把你的回車符當成回車符+換行符一起處理,所以出現換行現象

發送的時候-----------》系統只把回車符(或者換行符)單獨發出去了,而不是發送的回車符+換行符

 

在調試助手中,他是需要識別到回車符+換行符才會出現換行的現象,現在你只單獨發了回車符(或者換行符),兩者不匹配,所以肯定出現不了換行的現象。




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM