Windows串口编程
+ -

IOCTL_SERIAL_GET_HANDFLOW

2023-06-19 12 0

IOCTL_SERIAL_GET_HANDFLOW 是一个 Windows 常量,它用于标识获取串口通讯接口的流控参数的 IOCTL 命令。通过调用 IOCTL_SERIAL_GET_HANDFLOW,驱动程序可以返回流控参数,这些参数包括:使用的流控协议、Xon 字符、Xoff 字符、流控阈值等。

该命令的请求结构体为 SERIAL_HANDFLOW 结构体,定义在 Winioctl.h 头文件中:

typedef struct _SERIAL_HANDFLOW {
    ULONG ControlHandShake;
    ULONG FlowReplace;
    LONG  XonLimit;
    LONG  XoffLimit;
} SERIAL_HANDFLOW,*PSERIAL_HANDFLOW;

其中, ControlHandShake 表示使用的流控协议,可以是一个或多个常量值的组合; FlowReplace 表示是否替换流控字符; XonLimit 和 XoffLimit 分别表示发送 Xon/Xoff 字符前缓存区中剩余的字符数,达到指定数量时发送 Xon/Xoff 字符。

驱动程序接收到 IOCTL_SERIAL_GET_HANDFLOW 命令之后,应该将相关流控参数填充到 SERIAL_HANDFLOW 结构体中,然后返回该结构体给应用程序。

在应用程序中,可以通过以下两种方式访问串口通讯接口的流控参数:

  1. 通过设备控制块(DCB)结构体访问

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

  1. 调用 DeviceIoControl 函数访问

可以使用 DeviceIoControl 函数向串口设备驱动程序发送 IOCTL_SERIAL_GET_HANDFLOW 命令,以获取流控参数。在调用 DeviceIoControl 函数时,应该指定 IOCTL_SERIAL_GET_HANDFLOW 命令,以及相关输入/输出缓冲区参数,然后通过获取返回的缓冲区获取参数值。

0 篇笔记 写笔记

IOCTL_SERIAL_GET_HANDFLOW
IOCTL_SERIAL_GET_HANDFLOW 是一个 Windows 常量,它用于标识获取串口通讯接口的流控参数的 IOCTL 命令。通过调用 IOCTL_SERIAL_GET_HANDFLOW,驱动程序可以返回流控参数,这些参数包括:使用的流控协议、Xon 字符、Xoff 字符、流控阈值等。......
作者信息
我爱内核
Windows驱动开发,网站开发
好好学习,天天向上。
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

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

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