Comunicación en serie de BeagleBone

2

Tengo un problema al ver los caracteres escritos en / dev / ttyS8 en mi terminal de PC con este código C:

void main (void)
{
    int file, i;
    unsigned char receive[100]; // declare a buffer for receiving data
    char buf[20];
    size_t nbytes;
    ssize_t bytes_written;

    if ((file = open("/dev/ttyS8", O_RDWR))<0)
    {
        printf("UART: Failed to open the file.\n");
        return;
    }

    //
    struct termios options; // the termios structure is vital
    tcgetattr(file, &options); // sets the parameters associated with file

    // Set up the communications options:
    // 9600 baud, 8-bit, enable receiver, no modem control lines
    options.c_cflag = B9600 | CS8 | CREAD | CLOCAL;
    options.c_iflag = IGNPAR | ICRNL; // ignore partity errors, CR -> newline
    tcflush(file, TCIFLUSH); // discard file information not transmitted
    tcsetattr(file, TCSANOW, &options); // changes occur immmediately

    strcpy(buf, "This is a test\n");
    nbytes = strlen(buf);

    while (1)
    {
        bytes_written = write(file, buf, nbytes);
        sleep(10);
    }
    close(file);
}

Probé si tal vez el tipo de cable serial es un problema, pero se comporta de la misma manera. / dev / ttyS8 es mi salida UART, pero no puedo determinar qué estoy haciendo mal. Cualquier idea sobre qué probar será útil o sobre qué prestar atención cuando intente hacer algo como esto.

¡Gracias por tu ayuda!

    
pregunta Junior

1 respuesta

2

Encontré la solución que estaba en una diferencia demasiado grande entre las velocidades en baudios del receptor y el transmisor.

Agregaría que es muy recomendable que cuando abras cualquier archivo en Linux, necesites cerrarlo o tendrás problemas.

    
respondido por el Junior

Lea otras preguntas en las etiquetas