win32串口调试助手源码

本文详细介绍了使用Win32 API进行串口调试的基本步骤,包括同步操作方式下的打开串口、配置串口、读写串口以及关闭串口。通过DCB结构、GetCommState和SetCommState函数来配置串口,并使用PurgeComm清空缓冲区,确保通信的准确。同时,提供了读写串口的示例代码。
摘要由CSDN通过智能技术生成

Win32串口API:

串口的操作可以有两种操作方式:同步操作方式和重叠操作方式(又称为异步操作方式),本文主要介绍同步方式。

基本步骤:

1.    打开串口

2.    配置串口

3.    读写串口

4.    关闭串口

API介绍:

打开串口API:

HANDLE hCom=CreateFile( LPCTSTR lpFileName,
                  DWORD dwDesiredAccess,
                  DWORD dwShareMode,
                  LPSECURITY_ATTRIBUTES lpSecurityAttributes,
                  DWORD dwCreationDistribution,
                  DWORD dwFlagsAndAttributes,
                  HANDLE hTemplateFile);

·        lpFileName:将要打开的串口逻辑名,如“COM1”

·        dwDesiredAccess:指定串口访问的类型,可以是读取、写入或二者并列;

·        dwShareMode:指定共享属性,由于串口不能共享,该参数必须置为0;

·        lpSecurityAttributes:引用安全性属性结构,缺省值为NULL;

·        dwCreationDistribution:创建标志,对串口操作该参数必须置为OPEN_EXISTING;

·        dwFlagsAndAttributes:属性描述,用于指定该串口是否进行异步操作,该值为FILE_FLAG_OVERLAPPED,表示使用异步的I/O;该值为0,表示同步I/O操作;

·        hTemplateFile:对串口而言该参数必须置为NULL;

Example

同步操作方式

HANDLE hCom;
hCom=CreateFile(
       “COM1”,                    //COM1口
        GENERIC_READ|GENERIC_WRIRE,  //允许读写
        0,               //独占方式
        NULL,
        OPEN_EXISTING,   //打开而不是创建
        0,               //同步方式
        NULL);

异步读写方式

HANDLE hCom;  //全局变量,串口句柄
hCom=CreateFile(
       "COM1",  //COM1
        GENERIC_READ|GENERIC_WRITE, //允许读和写
        0, //独占方式
        NULL,
        OPEN_EXISTING,  //打开而不是创建
        FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED, //重叠方式
        NULL);

配置串口

         在打开通讯设备句柄后,常常需要对串口进行一些初始化配置工作。这需要通过一个DCB结构来进行。DCB结构包含了诸如波特率、数据位数、奇偶校验和停止位数等信息。在查询或配置串口的属性时,都要用DCB结构来作为缓冲区。一般用CreateFile打开串口后,可以调用GetCommState函数来获取串口的初始配置。要修改串口的配置,应该先修改DCB结构,然后再调用SetCommState函数设置串口。

DCB结构常用变量:

typedef struct _DCB
{
	DWORD BaudRate;
       //波特率,值:CBR_波特率值,如CBR_2400或者直接写2400
       DWORD fParity;
//奇偶校验位,如果是1,允许
       BYTE ByteSize;   //通信字节数,4-8
       BYTE Parity;     //指定奇偶校验方式
//EVENPARITY 偶校验   NOPARITY  无校验
//MARKPARITY 标记校验 ODDPARITY 奇校验
       BYTE StopBits;  //指定停止位的位数
//ONESTOPBIT     1位   TWOSTOPBIT     2位
//ONE2STOPBITS    1.5位
}DCB;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值