Como ler os pinos seriais não utilizados (RTS, CTS, etc.)?

2

Eu tenho uma interface para comunicação RS-232. Eu preciso dessa interface para comunicação simples (sem bit de paridade ou controle de fluxo → TX, RX e terra) mas agora eu tenho 4 pinos sem uso (RTS, DTR, DCD / DSR, CTS) e questiono se eu poderia usar mal esses pinos para alguns outra sinalização e para isso eu precisaria de uma maneira de ler esses pinos. Então, como posso fazer isso no meu sistema embarcado baseado em Linux?

seterial informa que a interface está no modo 16550A UART e de acordo com o link : "Linhas de handshake para controle de um modem externo, controlável por software."

Mais alguma coisa que você precisa saber?

    
por phk 22.01.2016 / 11:56

1 resposta

3

RTS e DTR são pinos de saída - que você pode definir.

DCD e CTS são pinos de entrada e só podem ser lidos.

O dispositivo provavelmente está configurado para handshaking de hardware por padrão. Você pode alterar isso usando tcsetattr (consulte CRTSCTS). Então você pode usar o ioctl TIOCMBIS para definir RTS e DTR

Boas referências são:

Linux Serial HOWTO

Linux COMO FAZER Programação Serial

Os itens acima podem ser centrados no Linux.

Para ser mais POSIX, consulte Guia de programação serial para sistemas operacionais POSIX

Eu elevei este exemplo do guia:

#include <unistd.h>
#include <termios.h>

int fd;
int status;

ioctl(fd, TIOCMGET, &status);

status &= ~TIOCM_DTR;

ioctl(fd, TIOCMSET, status);

Em Stackoverflow , você pode encontrar algumas opiniões sobre como configurar a porta corretamente.

    
por 28.01.2016 / 18:24