修改通讯资源设置

【勇芳软件工作室】汉化HomePreviousNext

CreateFile功能打开串行通信资源的句柄时,系统将根据上次打开资源时设置的值初始化和配置资源。保留以前的设置可以使用户在重新打开设备时保留通过MS-DOS 模式命令指定的设置。从先前打开的操作继承的值包括设备控制块(DCB结构)的配置设置以及I / O操作中使用的超时值。如果设备从未打开,则会使用系统默认设置。

要确定串行通信资源的初始配置,过程调用GetCommState函数,该函数使用当前配置设置填充串行端口DCB结构。要修改此配置,一个进程在调用SetCommState函数时指定DCB结构。

DCB结构的成员指定了配置设置,例如波特率,每字节的数据位数以及每个字节的停止位数。其他DCB成员指定特殊字符并启用奇偶校验和流控制。当一个进程需要修改这些配置设置中的几个时,首先应该调用GetCommState来填写当前配置的DCB结构。然后,该过程可以调整DCB结构中的重要值,并通过调用SetCommState并指定修改的DCB结构来重新配置设备。此过程确保DCB结构的未修改成员包含适当的值。例如,常见的错误是配置具有DCB结构的设备,其中结构的XonChar成员等于XoffChar成员。DCB结构的某些成员与以前的Microsoft Windows版本不同。特别地,用于控制RTS(请求发送)和DTR(数据终端就绪)流控制的标志已经改变。

BuildCommDCB功能提供了修改DCB结构的另一种方法。BuildCommDCB使用与模式命令的命令行参数形式相同的字符串来指定波特率,奇偶校验方案,停止位数和数据位数。DCB的其余成员不会被此函数更改,但相应的成员设置为禁用XON / XOFF和硬件流控制。BuildCommDCB仅修改DCB结构;它不会重新配置设备。

一个进程可以通过使用GetCommProperties功能重新配置通信资源,从设备驱动程序获取有关其支持的配置设置的信息。该过程可以使用此信息来避免指定不支持的配置。

SetCommState功能重新配置通信资源,但不影响指定驱动程序的内部输出和输入缓冲区。缓冲区不被刷新,并且未完成的读写操作未被提前终止。

一个进程通过使用SetupComm函数重新初始化通信资源,该函数执行以下任务:

*终止等待读取和写入操作,即使它们尚未完成。

*放弃未读字符,并释放与指定资源关联的驱动程序的内部输出和输入缓冲区。

*重新分配内部输出和输入缓冲区。

一个进程不需要调用SetupComm.如果没有,资源的驱动程序将在首次使用通信资源句柄时使用默认设置初始化设备。