zoukankan      html  css  js  c++  java
  • Labview学习之路(十四)串口发送与回车、换行符的问题

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

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

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

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

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

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

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

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

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

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

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

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

     

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

     

    列一个比较清晰的表

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

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

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

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

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



  • 相关阅读:
    JWT(JSON WEB TOKEN) / oauth2 / SSL
    Guice 学习
    九 fork/join CompletableFuture
    二 lambda表达式
    IDEA 热部署 + 下载jar包放到maven中
    微服务学习一 微服务session 管理
    一 Optional
    八 线程池(待续)
    七 内置锁 wait notify notifyall; 显示锁 ReentrantLock
    六 多线程问题
  • 原文地址:https://www.cnblogs.com/CaiFengYuanXing/p/13723202.html
Copyright © 2011-2022 走看看