串口通信

一、基本概念

串口通信:以位(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:没有外设设备怎么办,没关系,可以用这个软件创建一个或者多个虚拟串口,一样能用

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

posted @ 2019-08-17 10:21  main(0)  阅读(621)  评论(0编辑  收藏  举报