Como ler os estados dos pinos da porta serial.

1. Como ler os estados dos pinos da porta serial.

Perfil removido
removido

(usa Nenhuma)

Enviado em 21/04/2015 - 16:43h

Gostaria de saber se há algum comando que me permite visualizar os estados dos pinos RTS,DTR,DSR,DCD,CTS, etc ... em uma porta serial(RS232). Eu escrevi este programinha para testar os estados dos pinos:

#include <sys/types.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <fcntl.h>

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

#include <stdio.h>
#include <err.h>
#include <stdint.h>

int ler_pino(int fd,int pino)
{
int serial_status;

if (ioctl(fd, TIOCMGET, &serial_status) == -1)
err(-1,"ioctl()");

return (serial_status & pino) ? 1 : 0;
}

int main(int argc, char *argv[])
{
char * dispositivo;
int fd;

argc--;

if (argc == 0)
err(1,"Uso: ./a.out dispositivo\n");

dispositivo = argv[argc];

fd = open(dispositivo,O_RDWR);
if (fd == -1)
err(-1,"%s",dispositivo);


printf("RTS = %i\n", ler_pino(fd, TIOCM_RTS));
printf("DTR = %i\n", ler_pino(fd, TIOCM_DTR));
printf("DSR = %i\n", ler_pino(fd, TIOCM_DSR));
printf("DCD = %i\n", ler_pino(fd, TIOCM_CAR));
printf("CTS = %i\n", ler_pino(fd, TIOCM_CTS));


close(fd);
return 0;
}


Mas eu gostaria de um metodo mas confiavel para testar estes pinos. O motivo de eu estar atrás desta informação é que eu estou testando um conversor usb-serial que eu estou fazendo para um projeto de escola, daqueles que você pluga na USB e aparece um arquivo /dev/ttyACM0 que age como se realmente fosse uma porta serial. Até agora os resultados que eu tenho quando rodo "./a.out /dev/ttyACM0" são:

RTS = 1
DTR = 1
DSR = 0
DCD = 0
CTS = 1

O meu poblema reside no fato de os pinos DSR e DCD estarem sendo lidos como nivel logico '0', sendo que o dispositivo deveria reportar para o computador os dois pinos como níveis logicos 1. E eu não sei por que o CTS esta com nivel lógico 1, pois meu dispositivo não emula este pino.


  






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts