tadeu7611
(usa Red Hat)
Enviado em 02/09/2010 - 15:12h
Boa tarde!
Sou novato aqui no forum, e já estou ficando louco.
Bom vamos lá!
Eu uso na minha maquina, ubuntu 10. E tenho alguns servidores Red Hat 9.
E tive a necessidade de fazer um programa em C que fizesse a comunicação serial, pois bem, e lá fui eu!
Tanto fucei na net que achei a solução, fiz na minha maquina e funcionou perfeitamente!
Ai que vem o porem, quando eu compilei no Red Hat não deu erro nenhum, ai quando eu executei, ele envia os codigos pela serial, mas na hr de receber alguma coisa ele fica parado esperando!
A outra parte responde mas o meu programa não consegue ler isso.
Ai fui pra web e vi que se eu desse um CAT no dispositivo /dev/ttyS0, eu iria ver oq estaba sendo escrito no dispositivo. Mais uma vez fiz o teste no meu ubuntu e funcionou, mas qnd dou o CAT no Red Hat ele não funciona, fica piscando o cursos esperando alguma coisa.
Preciso muito da ajuda de vcs, se alguem souber de alguma config alguma coisa que tenho que fazer no Red Hat, eu agradeço.
Aqui vou postar um pedaço do meu codigo fonte:
Aqui ele abre a porta de comunicação (/dev/ttyS0).
int open_port(void){
int fd; /* Arquivo que fica a porta */
fd = open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY);
if (fd == -1){
perror("open_port: Impossivel abrir /dev/ttyS0 - ");
}else{
struct termios options;
tcgetattr(fd, &options);
cfsetispeed(&options, B9600); // velocidade de entrada baud rate
cfsetospeed(&options, B9600); // velocidade de saida baud rate
tcsetattr(fd, TCSANOW, &options); // Grava as opções
fcntl(fd, F_SETFL, 0);
return (fd);
}
}
Aqui ele faz parte que envia alguma coisa para a porta:
void writeCom(char *valor, int bits, int porta){
int n;
n = write(porta, valor, 6);
if (n < 0)
fputs("Falaha ao enviar os bytes!\n", stderr);
}
E por ultimo onde "não funciona";
void readMode(int df) {
char cReceive[0];
unsigned char a;
fcntl(df, F_SETFL, 0 /*FNDELAY*/);
read(df, cReceive, 1); // read 1 Byte interface status
a = (unsigned char) cReceive[0];
printf("%d\n",a);
return;
}
Obrigado!