Red de conocimiento informático - Conocimiento informático - Cómo configurar la estructura COMMTIMEOUTS en comunicación serie

Cómo configurar la estructura COMMTIMEOUTS en comunicación serie

Utilice la estructura COMMTIMEOUTS en las funciones SetCommTimeouts y GetCommTimeouts para configurar y consultar los parámetros de tiempo de espera del dispositivo de comunicación. Este parámetro determina el comportamiento de los dispositivos operativos ReadFile, WriteFile, ReadFileEx y WriteFileEx.

typedef struct _COMMTIMEOUTS {

DWORD ReadIntervalTimeout

DWORD ReadTotalTimeoutMultiplier;

DWORD ReadTotalTimeoutConstant

DWORD WriteTotalTimeoutMultiplier;

DWORD WriteTotalTimeoutConstant;} COMMTIMEOUTS, *LPCOMMTIMEOUTS

Miembro

Valor de tiempo de espera de lectura

Entre dos caracteres recibidos durante la comunicación El tiempo de espera máximo, medido en milisegundos. En una operación ReadFile, el ciclo de tiempo comienza cuando se recibe el primer carácter. Si el intervalo entre dos caracteres recibidos excede este límite, la operación ReadFile se completará y devolverá los datos almacenados en el búfer. 0 significa que el parámetro no está configurado.

Si se establece en MAXDWORD y los miembros de ReadTotalTimeoutConstant y ReadTotalTimeoutMultiplier son 0, significa que la operación de lectura devuelve los datos recibidos inmediatamente, incluso si no se reciben caracteres. (Intervalo de recepción entre dos caracteres)

ReadTotalTimeoutMultiplier

El multiplicador utilizado para calcular el tiempo de espera total para las operaciones de lectura, en milisegundos. Para cada operación de lectura, este valor se multiplica por el número de bytes a leer. (Tiempo de espera máximo para leer un solo carácter)

ReadTotalTimeoutConstant

Constante utilizada para calcular el tiempo de espera total para las operaciones de lectura, medido en milisegundos. Para cada operación de lectura, el tiempo de espera total real es el producto del miembro ReadTotalTimeoutMultiplier y el número de bytes solicitados más este valor.

Los miembros de ReadTotalTimeoutMultiplier y ReadTotalTimeoutConstant son 0, lo que indica que el tiempo de espera total de lectura no es válido (el tiempo para leer todos los bytes es readtotaltimeoutmultiplier * el número de bytes que se leerán readtotaltimeoutconstant).

WriteTotalTimeoutMultiplier

El multiplicador utilizado para calcular el tiempo de espera total para las operaciones de escritura, en milisegundos. Para cada operación de escritura, este valor se multiplica por el número de bytes que se escribirán. (Tiempo de espera máximo para escribir un solo carácter)

WriteTotalTimeoutConstant

Constante utilizada para calcular el tiempo de espera total para operaciones de escritura, en milisegundos. Para cada operación de escritura, el tiempo de espera total real es el producto del miembro WriteTotalTimeoutMultiplier y los bytes que se van a escribir más este valor.

Los miembros de WriteTotalTimeoutMultiplier y WriteTotalTimeoutConstant son 0, lo que indica que el tiempo total de escritura no es válido (el tiempo para escribir todos los bytes es WriteTotalTimeoutMultiplier * bytestowre WriteTotalTimeoutConstant).

Comentarios

Si la aplicación establece ReadIntervalTimeout y ReadTotalTimeoutMultiplier en MAXDWORD, y establece ReadTotalTimeoutConstant en un valor mayor que cero y menor que MAXDWORD, se producirá el siguiente fenómeno al llamar a ReadFile:p>