¿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 serial. comunicación 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 el funcionamiento. modo de un puerto COM Dado que la subestructura tiene 28 miembros, que es muchísimo, y la mayoría de las configuraciones son universales en el mundo, somos vagos y creamos una estructura DCB después de abrir un puerto COM. una función GetCommState y use esta función para escribir todos los datos del puerto COM actual en el DCB. De esta manera, se ha configurado un COM más universal. Por lo general, solo necesitamos cambiar la velocidad en baudios del 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. El puerto serie está configurado. ¿Qué necesitamos que haga? Tonterías, leer y escribir. datos, pitido ~~~~~~ No puedes usar fwrite y fread porque el identificador del puerto com no es un identificador de archivo, sino un identificador del kernel. Tienes que usar ReadFile y WriteFile para leer y escribir, pero lo es. 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á. com es una función de bloqueo que afecta la programación!!!!!!
Qué hacer, es muy simple, ¿no lo bloqueas? 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 puede usarlo para configurar. la configuración del tiempo de espera del intervalo de lectura hace que ReadFile sea completamente sin bloqueo como la función kbhit().
Después de una serie de configuraciones, de hecho, la comunicación ahora es posible. Si alguien se siente incómodo con el caché, use el. Función SetupComm para restablecer el tamaño de la caché; para comunicaciones con velocidades de transmisión relativamente rápidas, la caché debe configurarse más grande.