¿Cómo leer y escribir puertos serie en lenguaje C en Windows?
La operación del puerto serie en Windows se puede realizar a través de la API de Windows o directamente mediante lectura en Linux. Sin embargo, en este caso, es necesario comprender la estructura del circuito, lo cual es más problemático. La tercera es proporcionada por bibliotecas de terceros, pero la mayoría de ellas son para C++, por lo que puede ser difícil encontrar una biblioteca de terceros conveniente.
A continuación, presentaremos el método de comunicación en serie usando la API de Windows.
Encontraremos que complete "comX" en el nombre del archivo Para realizar una serie de configuraciones explícitas, aquí se usa una estructura DCB, que se usa especialmente para describir. modo de trabajo de un puerto COM Dado que la subestructura tiene 28 miembros, hay muchos de ellos y la mayoría de las configuraciones están completas. Es universal en el mundo, por lo que somos vagos y creamos una estructura DCB después de abrir un puerto COM. Luego llamamos a una función GetCommState y usamos esta función para escribir todos los datos del puerto COM actual en el DCB. De esta manera, un COM más universal. La configuración del puerto ya está hecha. Generalmente, solo necesitamos cambiar la velocidad en baudios. DCB. Después del cambio, use SetCommState para volver a escribir la estructura recién modificada, de modo que el puerto serie esté configurado. Ahora todavía es un poco problemático, ¿qué necesitamos que haga? leer y escribir datos, pitido ~~~~~~ No puede usar fwrite y fread porque el identificador del puerto com no es un identificador de archivo, sino un identificador del kernel. Debe usarlo para leer y escribir. Escribir, pero es problemático nuevamente. ¿Cómo sabemos cuándo el microcontrolador envía datos? Incluso si lo sabemos, ¿cuándo lo sabe la computadora? Entonces, en circunstancias normales, es problemático usar ReadFile para verificar dónde está. ¡¡¡La configuración ReadFile de un puerto com es una función de bloqueo que afecta la programación!!!!!!
Qué hacer, es muy simple, ¿no lo bloqueas? Lo creará nuevamente. Una estructura COMMTIMEOUTS describe la configuración de tiempo de espera relacionada con un puerto de comunicación en la descripción de la estructura. Usamos GetCommTimeouts para leer los datos. Los métodos de configuración específicos también están disponibles en línea, pero tenga en cuenta que hay un MAXDWORD y usted. Puede usarlo para establecer la configuración del tiempo de espera del intervalo de lectura. Haga que ReadFile sea completamente sin bloqueo como la función kbhit().
Después de una serie de configuraciones, de hecho, ahora es posible la comunicación si alguien se siente incómodo. el caché, use la función SetupComm para restablecer el tamaño del caché; para comunicaciones con velocidades de transmisión relativamente rápidas, el caché debe configurarse más grande.