COMMTIMEOUTS 结构体被用在SetCommTimeouts和GetCommTimeouts 函数中,以便设置和查询通讯设备的超时参数。这个参数决定ReadFile, WriteFile, ReadFileEx, 和WriteFileEx 操作设备的行为。
typedef struct _COMMTIMEOUTS {
DWORD ReadIntervalTimeout;
DWORD ReadTotalTimeoutMultiplier;
DWORD ReadTotalTimeoutConstant;
DWORD WriteTotalTimeoutMultiplier;
DWORD WriteTotalTimeoutConstant;} COMMTIMEOUTS, *LPCOMMTIMEOUTS;
成员
ReadIntervalTimeout
在通讯过程中接收两个字符之间的最长超时时间,按毫秒计算。在ReadFile操作,当接收到第一个字符时,开始一个计时周期。如果接收任意两个字符之间的时隔超过本限制,ReadFile操作将完成并返回任何已缓冲的数据。0代表本参数未设置。
如果设置为MAXDWORD, 并且ReadTotalTimeoutConstant和ReadTotalTimeoutMultiplier成员为0,代表读取操作立即返回那些已接收的数据,即使没有收到任何字符。(两个字符之间的接收间隔)
ReadTotalTimeoutMultiplier
乘数用于计算读取操作的总超时时间,按毫秒计算。对于每个读取操作,这个值将乘以要读取的字节数。(读取单个字符的最大超时)
ReadTotalTimeoutConstant
一个用于计算对于读取操作的总超时周期的常数,按毫秒计算。对每次读取操作,实际总超时时间为ReadTotalTimeoutMultiplier 成员与请求的字节数年的乘积加此值。
ReadTotalTimeoutMultiplier和ReadTotalTimeoutConstant成员为0代表总读取总超时时间无效(读取所有字节的时间为ReadTotalTimeoutMultiplier*BytesToRead+ReadTotalTimeoutConstant)。
WriteTotalTimeoutMultiplier
乘数用来计算写操作的总超时周期,按毫秒计算。对每个写操作,这个值将乘以要写入的字节数。(写单个字符的最大超时)
WriteTotalTimeoutConstant
一个用于计算写入操作的总超时周期的常数,按毫秒计算。对于每一次写入操作,实际总超时时间为WriteTotalTimeoutMultiplier 成员与要写入字节的乘积再加此值.
WriteTotalTimeoutMultiplier和WriteTotalTimeoutConstant成员为0代表总写入时间无效(写入所有字节的时间为WriteTotalTimeoutMultiplier*BytesToWrite+WriteTotalTimeoutConstant)。
备注
如果一个应用程序设置ReadIntervalTimeout和ReadTotalTimeoutMultiplier为 MAXDWORD并且设置ReadTotalTimeoutConstant 为一个大于零且小于MAXDWORD的值, 在调用ReadFile时将会发生如下现象:
- 如果在输入缓冲区中有任何字符,ReadFile 立即返回缓冲区中的内容。
- 如果在缓冲区中没有任何字符,ReadFile 将等待接收到一个字符并立即返回.
- 如果在ReadTotalTimeoutConstant指定的时间值内无任何字节返回,ReadFile超时.
分享到:
相关推荐
使用 COMMCONFIG、COMMPROP、COMMTIMEOUTS、COMSTAT、DCB、MODEMDEVCAPS、MODEMSETTINGS 等结构体,实现串口通信的控制和监视。 三、串口通信实例 1. 实现串行通信的三种方法 方法一:使用 VC++ 提供的串行通信...
本文将深入探讨“win32 API串口通信详解”,首先从串口编程的基础知识开始,然后详细介绍如何创建串口句柄并打开串口。** **一、串口编程简介** 串口通信基于RS-232标准,通常涉及两个主要部分:发送端和接收端。...
随着技术的发展,许多现代设备已经不再配备传统的串行端口(简称“串口”),转而采用更快速且稳定的接口,如USB或以太网接口。然而,在某些特定领域内,尤其是嵌入式系统中,基于Windows CE的操作系统仍旧广泛地...
### Win CE串口程序开发详解 #### 一、引言 在嵌入式系统开发领域,Windows CE(简称Win CE)作为一个重要的操作系统平台,被广泛应用于各种设备中,包括手持设备、工业控制器、车载导航系统等。对于这些设备而言...
### Win32下的串口编程知识点详解 #### 一、串口编程背景及重要性 在工业控制领域,特别是DCS系统(分布式控制系统)中,串行通信的应用非常普遍。随着Windows操作系统的普及,传统的DOS环境下的串口通信方法(如...
### EVC串口通信编程知识点详解 #### 一、串口通信基础知识 串口通信是一种常用的设备间数据传输方式,特别是在嵌入式系统开发中应用广泛。EVC(Embedded Visual C++)是一种针对Windows CE平台的开发工具,常用于...
### VC多线程下实现串口通讯的知识点详解 #### 一、背景介绍与基础知识概述 在现代化的各种实时监控系统及通信系统中,利用VC++(Visual C++)对RS-232串行接口(简称串口)进行编程是非常常见的技术手段。尤其在...
- `COMMTIMEOUTS`结构体:设置串口读写超时策略。 - `SetCommMask`和`WaitCommEvent`:设置串口事件掩码并等待特定事件。 - `SetCommState`:设置串口的通信状态。 - `PurgeComm`:清除串口缓冲区中的数据。 - ...
此函数返回一个`COMMTIMEOUTS`结构体,包含以下字段: - **ReadIntervalTimeout**:读区间超时,表示读取两个字符之间的最大允许间隔时间。 - **ReadTotalTimeoutMultiplier**:读总超时因子,用于计算读取操作的总...
《串口编程与Visual C++应用详解》 在IT领域,串口通信是设备间进行数据传输的一种常见方式,尤其在嵌入式系统和工业控制中广泛应用。本资料集主要围绕"串口编程"和"Visual C++"这两个关键概念展开,通过VK3362多...
《VC实现串口通信程序详解》 在计算机通信领域,串口通信是一种常见的数据传输方式,尤其在嵌入式系统和设备控制中扮演着重要角色。本文将详细讲解如何使用Visual C++(简称VC)结合MFC(Microsoft Foundation ...
- **COMMTIMEOUTS**:设置通信超时参数。 - **COMSTAT**:表示串行通信的状态。 - **DCB**:定义串行通信的数据控制块。 - **MODEMSTATUS**:用于存储调制解调器状态信息。 ### 4. 实现步骤详解 #### 4.1 创建事件...
### Win32串口操作函数详解 #### 一、串口通信概述 串口通信是一种在计算机设备之间进行数据传输的方式。它通过一系列定义好的协议和标准来确保数据的准确无误传输。在Windows操作系统中,可以利用Win32 API提供的...
《串口通讯程序详解——基于VC++的实现》 串口通讯是计算机通信技术中的一个重要领域,它在工业控制、数据采集、设备联网等方面有着广泛的应用。本篇将围绕“串口通讯程序”这一主题,结合给定的标签“VC”,深入...
### VC++串口编程知识点详解 #### 一、VC++串口编程概述 在计算机通信领域,串口通信是一种常用的数据传输方式。本篇将详细介绍如何利用VC++进行串口编程,包括三种主要方法:使用VC++提供的MSComm控件、直接调用...
《串口通信技术详解——基于C语言的实现》 串口通信是计算机通信领域中一种基本且重要的技术,尤其在嵌入式系统、工业控制、数据传输等方面有着广泛的应用。本文将围绕“chuankoutongxin.rar_c 串口”这一主题,...
### 基于Win95的VB6串口通信程序详解 #### 一、概述 在Windows 95操作系统上,使用Visual Basic (VB) 开发串口通信程序是一种常见需求,尤其是在工业控制、设备管理和数据采集等领域。本文将详细介绍如何使用VB5/6...
### COM编程初始化代码详解 #### 一、概述 在计算机通信领域中,COM(串行通信接口)是一种广泛使用的通信协议。它允许不同设备通过串行数据链路进行信息交换。在开发基于COM端口的应用程序时,初始化过程至关重要...
### 基于Win95的VB6串口通信程序详解 #### 一、概述 在Windows 95操作系统下,使用Visual Basic 5(以下简称VB5)进行开发时,可以利用其强大的功能来实现串口通信。串口通信是计算机科学中的一个重要组成部分,它...
### VC 串口编程知识点详解 #### 一、概述 串口编程是在计算机与外部设备之间进行数据交换的重要手段之一,特别是在实验室环境和工业自动化领域中应用极为广泛。本篇文章将详细介绍如何使用Visual C++ 6.0进行串口...