Cómo configurar la estructura COMMTIMEOUTS en comunicación serie
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>p>