도와주세요!!
글 수 15,339
2004.04.11 09:55:23 (*.253.179.23)
6673
안녕하세요.
PC의 serial 포트와 와 EZ-E01의 UART1(ttySA1)을 연결하여 시리얼 통신을 하
려고 하는데
한쪽에서 보낸 것이 다른 쪽으로 잘 가지 않아서 문의 드립니다.
아래와 같이 보편적으로 알려진 serial 통신 프로그램을 사용하였는데
한 쪽에서 write 수와 다른 쪽에서 real한 수가 다르며 내용 또한 완전히 다르
게 나옵니다.
PC와 PC 사이의 연결은 이 프로그램으로 잘 되며, EZ-E01과 다른 보드의 UART
와도 잘 수행되는데,
왜 유독 PC와 EZ-E01만은 잘 안되는지 궁금합니다.
BAUDRATE 등의 환경도 잘 만들어 주었다고 생각하는데, 제가 뭘 잘 못 한 건
지 잘 모르겠습니다.
조언을 부탁드리겠습니다.
// 사용한 프로그램입니다.
#include
#include
#define BAUDRATE B38400
#define MODEMDEVICE "/dev/ttyS0"
main()
{
struct termios oldtio, newtio;
char buf[255];
fd = open(MODEMDEVICE, O_RDWR | O_NOCTTY);
if (fd<0)
{
perror(MODEMDEVICE);
exit(-1);
}
tcgetattr(fd,&oldtio);
bzero(&newtio, sizeof(newtio));
newtio.c_cflag = BAUDRATE | CS8 | CLOCAL | CREAD;
newtio.c_iflag = IGNPAR | IGNCR;
newtio.c_oflag = 0; newtio.c_lflag = ICANON;
tcsetattr(fd, TCSANOW, &newtio);
res = read(fd,buf,255);
buf[res] = 0;
printf("%s
",buf);
tcsetattr(fd, TCSANOW, &oldtio);
}
PC의 serial 포트와 와 EZ-E01의 UART1(ttySA1)을 연결하여 시리얼 통신을 하
려고 하는데
한쪽에서 보낸 것이 다른 쪽으로 잘 가지 않아서 문의 드립니다.
아래와 같이 보편적으로 알려진 serial 통신 프로그램을 사용하였는데
한 쪽에서 write 수와 다른 쪽에서 real한 수가 다르며 내용 또한 완전히 다르
게 나옵니다.
PC와 PC 사이의 연결은 이 프로그램으로 잘 되며, EZ-E01과 다른 보드의 UART
와도 잘 수행되는데,
왜 유독 PC와 EZ-E01만은 잘 안되는지 궁금합니다.
BAUDRATE 등의 환경도 잘 만들어 주었다고 생각하는데, 제가 뭘 잘 못 한 건
지 잘 모르겠습니다.
조언을 부탁드리겠습니다.
// 사용한 프로그램입니다.
#include
#include
#define BAUDRATE B38400
#define MODEMDEVICE "/dev/ttyS0"
main()
{
struct termios oldtio, newtio;
char buf[255];
fd = open(MODEMDEVICE, O_RDWR | O_NOCTTY);
if (fd<0)
{
perror(MODEMDEVICE);
exit(-1);
}
tcgetattr(fd,&oldtio);
bzero(&newtio, sizeof(newtio));
newtio.c_cflag = BAUDRATE | CS8 | CLOCAL | CREAD;
newtio.c_iflag = IGNPAR | IGNCR;
newtio.c_oflag = 0; newtio.c_lflag = ICANON;
tcsetattr(fd, TCSANOW, &newtio);
res = read(fd,buf,255);
buf[res] = 0;
printf("%s
",buf);
tcsetattr(fd, TCSANOW, &oldtio);
}