Bloqueante

Aquí se tiene un ejemplo de un programa bloqueante.

#define __LINUX_COM__                   // #define __WINDOWS_COM__

#include "com/serial.h"

int main()
{
    HANDLE fd; 
    DCB OldConf;
    char cad[16]="Enviando Texto";
    int n;
    
    fd=Open_Port("/dev/ttyS0");         // Abre el puerto serie.
                                        // fd=Open_Port("COM1"); 
    
    OldConf=Get_Configure_Port(fd);     // Guardo la configuración del puerto.
    
    Configure_Port(fd,B115200,"8N1");   // Configuro el puerto serie.
    
                                        // Bloqueante por defecto, pero también
                                        // se puede usar:
                                        // IO_Blocking(fd,TRUE); 
    
    n=Write_Port(fd,cad,16);            // Escribo en el puerto serie.
    
    while(Kbhit_Port(fd)<16);           // Espero a leer hasta que se tengan
                                        // 16 bytes en el buffer de entrada.

    n=Read_Port(fd,cad,16);             // Leo el puerto serie.
    printf("%s",cad);                   // Muestro los datos.
    
    Set_Configure_Port(fd,OldConf);     // Restituyo la antigua configuración 
                                        // del puerto.

    Close_Port(fd);                     // Cierro el puerto serie.
    
    printf("\nPresione ENTER para terminar\n");
    getchar();
    
    return 0;
}