我在用labview做的串口與單片機進行通信的的時候,發現發送的數據加回車符單片機是接收不到數據的,而使用回車+換行符單片機就可以接收到數據,為此使用串口調試助手做了一個簡單的調試。
首先解釋一下他們的定義:
- 回車符:\r 0x0D 使光標移到行首
- 換行符:\n 0x0A 使光標下移一格
但是當我們直接在vi中打印的時候卻出現了和它定義不同的現象,三個都直接換行了

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

那這是為什么呢,按道理回車不是換行呀,他的作用不是光標移動到行首嘛?
我到網上查了好多博客,上邊說系統對回車、換行的處理不同,在Windows系統中,對於單獨的回車直接把他們當成回車和換行處理,所以就出現了只打印回車符也會出現換行的現象。其它系統有些不一樣的,下邊是我在網上找的
- Unix系統里,每行結尾只有“<換行>”,即“\n”;
- Windows系統里面,每行結尾是“<回車><換行>”,即“\r\n”;
- Mac系統里,每行結尾是“<回車>”,即“\r”。
所以這個問題就解決了,就是windows系統默認回車符當作回車符+換行符在作怪。
但是當使用串口調試助手時候有出現問題了,我僅發送回車符或者換行符就不出現換行的現象了
看下邊的發送情況,
當我們連續發送三次字符串“123”+回車符,顯示出的是他們連接在一起了

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

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

列一個比較清晰的表
- 多次字符串+回車符 --------------》 連接在一起,無換行
- 多次字符串+換行符 --------------》 連接在一起,無換行
- 多次字符串+回車符+換行符--------------》換行
這與我們打印的時候不一樣呀!剛才打印的時候明明都換行了,而現在回車符和換行符單獨發送不出現換行現象,那這是為啥呢?
打印的時候-----------》系統把你的回車符當成回車符+換行符一起處理,所以出現換行現象
發送的時候-----------》系統只把回車符(或者換行符)單獨發出去了,而不是發送的回車符+換行符
在調試助手中,他是需要識別到回車符+換行符才會出現換行的現象,現在你只單獨發了回車符(或者換行符),兩者不匹配,所以肯定出現不了換行的現象。
