Windows串口编程
+ -

Windows串口函数介绍

2023-06-19 44 0

在 Win32 API 中,用于操作串口通讯的函数主要包括:

CreateFile

该函数用于打开一个串口通讯接口,返回的句柄可以用于读写串口。在调用 CreateFile 函数时需要指定串口通讯接口的名称和一些访问权限等参数,详见 MSDN 文档:

HANDLE CreateFile(
    LPCWSTR               lpFileName,
    DWORD                 dwDesiredAccess,
    DWORD                 dwShareMode,
    LPSECURITY_ATTRIBUTES lpSecurityAttributes,
    DWORD                 dwCreationDisposition,
    DWORD                 dwFlagsAndAttributes,
    HANDLE                hTemplateFile
);

SetCommState

该函数用于设置串口通讯接口的数据位、校验位、停止位、波特率等参数,必须在打开串口之后调用该函数才能生效。该函数需要传入一个 DCB(数据控制块)结构体指针作为参数。在设置参数之前应当首先调用 GetCommState 函数获取当前串口参数,并将获取到的参数赋值给 DCB 结构体,不然其他参数由Windows使用默认值。

BOOL SetCommState(
    HANDLE hFile,
    LPDCB  lpDCB
);

GetCommState

该函数用于获取串口通讯接口的DCB结构体,该结构体中包含了串口通讯接口的所有控制参数,例如波特率、数据位、停止位、奇偶校验等参数,以及流控参数等。

BOOL GetCommState(
    HANDLE hFile,
    LPDCB  lpDCB
);

SetCommTimeouts

该函数用于设置串口通讯接口的读取和写入超时时间。在设置超时时间之前,必须使用 GetCommTimeouts 函数获取当前串口通讯接口的超时参数,并将获取到的参数赋值给 COMMTIMEOUTS 结构体。

BOOL SetCommTimeouts(
    HANDLE          hFile,
    LPCOMMTIMEOUTS   lpCommTimeouts
);

GetCommTimeouts

该函数用于获取串口通讯接口的超时参数,包括读取超时、写入超时等参数。

BOOL GetCommTimeouts(
    HANDLE          hFile,
    LPCOMMTIMEOUTS   lpCommTimeouts
);

SetCommMask

该函数用于设置串口通讯接口的事件掩码。通过设置不同的事件掩码值,可以控制是否有读数据可用、是否发生了数据错误、是否发生断开等事件。

BOOL SetCommMask(
    HANDLE  hFile,
    DWORD   dwEvtMask
);

GetCommMask

该函数用于获取串口通讯接口的事件掩码。

BOOL GetCommMask(
    HANDLE  hFile,
    LPDWORD lpEvtMask
);

ReadFile

该函数用于从串口通讯接口中读取数据。

BOOL ReadFile(
    HANDLE       hFile,
    LPVOID       lpBuffer,
    DWORD        nNumberOfBytesToRead,
    LPDWORD      lpNumberOfBytesRead,
    LPOVERLAPPED lpOverlapped
);

WriteFile

该函数用于向串口通讯接口中写入数据。

BOOL WriteFile(
    HANDLE       hFile,
    LPCVOID      lpBuffer,
    DWORD        nNumberOfBytesToWrite,
    LPDWORD      lpNumberOfBytesWritten,
    LPOVERLAPPED lpOverlapped
);

SetupComm

该函数用于设置串口通讯接口的缓冲区大小。

BOOL SetupComm(
    HANDLE hFile,
    DWORD  dwInQueue,
    DWORD  dwOutQueue
);

除了以上这些函数,还有很多专门用于串口通讯的函数,例如 PurgeComm、EscapeCommFunction、GetCommModemStatus、WaitCommEvent 等等。但这些函数的用法、参数等细节就较为复杂了,实践中可以根据具体使用场景选择使用哪些函数。

0 篇笔记 写笔记

寒江独钓串口过滤驱动程序源代码
comcap_tst.c////// @file comcap_tst.c/// @author crazy_chu/// @date 2008-6-20/// #ifndef _COMCAP_TST_HEADER_#define _COMCAP_......
串口过滤驱动调试过程蓝屏NO_MORE_IRP_STACK_LOCATIONS(35)问题分析
最近在搞一个串口的过滤驱动程序,在调度过程中报了一个蓝屏问题。NO_MORE_IRP_STACK_LOCATIONS (35)A higher level driver has attempted to call a lower level driver throughthe IoCallDr......
Windows串口编程的IOCTL和函数
下面是常见的IOCTL及对应的Win32 API函数列表,包括COM端口和USB设备的操作。IOCTRL的宏定义位于文件:C:Program Files (x86)Windows Kits10Include10.0.18362.0shared tddser.h中IOCTL......
同步方式串口收发数据
以下是一个简单的win32串口通信程序,该程序使用了Windows API中的CreateFile、SetCommTimeouts、SetCommState、WriteFile和ReadFile等函数来进行串口通信。#include #include
以下是一个简单的win32串口异步通信程序,该程序使用了Windows API中的CreateIoCompletionPort、CreateFile、SetCommTimeouts、SetCommState、WriteFile和ReadFileEx等函数来进行串口通信。相较于同步通信,异步通信更加灵......
以下是一个使用WaitCommEvent函数的简单的win32串口通信程序,该程序使用了Windows API中的CreateFile、SetCommTimeouts、SetCommState、.WriteFile和ReadFile等函数来进行串口通信。#include
在Windows系统中,IOCTL_SERIAL_PURGE 是指清空串口设备的读写缓冲区的 IOCTL 码。使用该 IOCTL 命令可以清空串口设备的读写缓冲区并丢弃其中的所有数据。该 IOCTL 命令可以用于以下情况:丢弃全部的写缓冲数据,以确保不会发送任何未完成的数据。丢弃全部的读缓冲数......
在 Windows 操作系统下,IOCTL_SERIAL_INTERNAL_CANCEL_WAIT_WAKE 是指撤销等待唤醒(Wait-Wake)操作的内部标识(ioctl command code)。Wait-Wake 操作是指,在计算机系统待机时,通过唤醒设备的方式,让设备执行某些操作。当设......
在 Win32 API 中,用于操作串口通讯的函数主要包括:CreateFile该函数用于打开一个串口通讯接口,返回的句柄可以用于读写串口。在调用 CreateFile 函数时需要指定串口通讯接口的名称和一些访问权限等参数,详见 MSDN 文档:HANDLE CreateFile( LP......
作者信息
我爱内核
Windows驱动开发,网站开发
好好学习,天天向上。
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!