zoukankan      html  css  js  c++  java
  • 串口通信

    一、基本概念

    串口通信:以位(bit)为单位发送或接收数据,底层的数据传输都是字节流,不管什么方式(Hex、Ascll)发送,都会被分解为一个一个字符。

    发送方式和接收方式:

    (1) Hex:表示发送或接收纯数字,如7则表07,保证每个数都是两位的

    (2) Ascll:表示收发字符串,这是相对来讲让人直观易懂的方式,Ascll码为1、2、3对应的十六进制数为31、32、33

    高低电平:在信号线上共有两种状态,逻辑1(高电平)和逻辑0(低电平)

    波特率:每秒钟传输字符的个数

    起始位:用于标识一个字符传输的开始,发送端在开始发送一个字符前,信号线都处于逻辑1状态,而起始位处于逻辑0状态,通过高电平到低电平的转换,就可以提示接收端数据的传输即将开始

    数据位:就是我们实际发送信息的内容了,因为是一个一个字符方式发送的,所以一般为8位一个字节的数据,也有6、7位,低位(LSB)在前,高位(MSB)在后

    校验位:可认为是一个特殊的数据位,用于判断接收数据位的有无对错,一般是奇偶校验,使用中常常取消

    顺便讲一下奇偶校验,奇偶校验就是在每一字节(8位)之外又增加了一位作为错误检测位,例如如果数据位是0110110,那么1的个数位4,是偶数,则它的奇校验位为1,偶校验位为0(数据位1的个数为奇数则反之),奇或偶校验码放在数据位的最前面(默认)或者最后面,所以0110110的奇校验码为10110110或者01101101,偶校验码为00110110或者01101100

    停止位:在一帧数据的最后位置,用于标识一个字符传输的结束,对应逻辑1状态,与起始位相呼应

    帧:从起始位开始到停止位结束的时间间隔为一帧,是一个时间单位

    二、相应的操作串口通信的win32 API

    初始化:

    SetupComm:初始化一个指定通信设备的通信参数(输入、输出缓冲区)

    SetCommTimeouts:设置通信设备读写时的超时参数

    GetCommStata:获取串口设置的参数

    SetCommStata:设置串口参数

    打开串口:

    CreateFile:打开一个指定的串口以便该串口

    读写数据:

    WriteFile:向缓冲区写入数据,即发送数据

    ReadFile:向缓冲区读取数据,即接收数据

    PurgeComm:清空缓冲区

    三、常用的与串口通信的结构体
    COMSTAT:记录通信设备的状态信息,如可获得缓冲区得字节数

    COMTIMEOUT:记录设备读写超时得参数信息

    DCB:记录串口参数、硬件/软件流控制、错误参数等等(有关流控制的介绍可以参考下这篇博文:https://blog.csdn.net/skyflying2012/article/details/7945022

    四、常用的工具

    VSPD:没有外设设备怎么办,没关系,可以用这个软件创建一个或者多个虚拟串口,一样能用

    串口调试助手:创建虚拟串口后,就可以用这个软件来使用一个或者多个串口了

  • 相关阅读:
    Octave/Matlab初步学习
    week_3
    week_2
    week_1
    清除input[type=number]的默认样式
    js,获取和设置cookie、 localStorage
    php表单提交时获取不到post数据的解决方法
    console.log 简写
    JS合并两个数组的方法
    javascript ES5、ES6的一些知识
  • 原文地址:https://www.cnblogs.com/main404/p/11367660.html
Copyright © 2011-2022 走看看