zoukankan      html  css  js  c++  java
  • 关于串口通信中数据传输的问题

    数据在串口通信的过程中是以字节为基本单位——也就是说发送的每一个数必需在0-255之间(现只考虑无符号的情况)。如果想发送256那就必须要分成两个数发(255+1)。

    一般在串口通信中会遇到不同的收发格式,诸如ASCII,Hex之类的,只有确保收发两方的收发格式相同。

    例:如果发的一方发送了50,收的一方如果用不同的接收格式接收,就会出现完全不同的数(以ASCII的格式接收,那么就会收到53+48)(以10进制的格式接收,那么就会收到的50)(以16进制的格式接收,那么就会收到32)

    Ps.由上可知,以ASCII码格式收发,效率要明显慢很多

    在用C#编写上位机的时候:

     byte[] sendBuf = new byte[2] { 21,0X21};

    上面的21在发送的时候会默认为是十进制,0X21会默认为是十六进制(在发送的时候也会有一次数据转换)

    当用十六进制的格式接收会收到15,21;用十进制的格式接收会收到21,33

  • 相关阅读:
    thread.md
    Linux系统编程手册_第6章_进程
    第一章.md
    开始.md
    粘滞位
    端口转发和端口映射
    virtualbox.md
    第6章.md
    JsparentNode、parentElement,childNodes、children 它们有什么区别呢?
    Sql注入防小试
  • 原文地址:https://www.cnblogs.com/f-t-q/p/11844104.html
Copyright © 2011-2022 走看看