도와주세요!!
글 수 15,339
2007.07.09 12:35:40 (*.63.25.40)
6775
pc 와 연결해서 데이타를 확인하면 잘 들어오는데요, ez-2410 시리얼쪽과 연결해서 데이터를 확인해보면 이상하게 들어옵니다.
다음은 틀린 데이타와 올바른 데이타입니다. 이상하게 한 바이트 중 앞에 4비트가 뭔가 마스킹이나 세팅이 되는 것 같습니다.
틀린 데이타 : fe 85 00 ff ff 00 05 77 42 0c ec 05 00 00 00 00 00 0f fd ff 00 ff fe 00 00 05 73 73 00 00 00 00 00 02 a0 b5 82 18 ff fd ff ff fe 00 00 05 ff 02 00 00 00 00 00 00 00 00 00 00 00 00 00 02 7a 05 00 00 72 00 00 00 00 04 71 fe
올바른 데이타 : 7e 45 00 ff ff 00 05 37 22 0c 69 05 00 00 00 00 00 8f fd ff 00 ff fe 00 00 05 33 33 00 00 00 00 00 02 50 d5 42 88 ff fd ff ff fe 00 00 05 ff 02 00 00 00 00 00 00 00 00 00 00 00 00 00 02 3a 85 00 80 32 00 00 00 00 09 35 7e
시리얼 프로그램은 딱히 문제가 없다고 생각합니다.
int main( )
{
int handle;
struct termios oidtio, newtio;
unsigned char buf[120];
int RxCount;
int i;
/* 시리얼 인터페이스는 /dev/ttyS00 이나 /dev/ttyS01이 될 수 있다. */
handle = open( "/dev/ttyS1", O_RDWR | O_NOCTTY );
printf("handle = %dn", handle);
if( handle < 0 ) {
printf( "Serial Open Fail [/dev/ttyS1]rn " );
exit(0);
}
tcgetattr(handle, &oidtio);
for(i=0; i < NCCS; i++)
newtio.c_cc[i] = ' ';
memset( &newtio, 0, sizeof(newtio));
newtio.c_cflag = B115200 | CRTSCTS | CS8 | CLOCAL | CREAD;
newtio.c_iflag = IGNBRK | IGNPAR;
newtio.c_oflag = 0;
newtio.c_cc[VTIME] = 0;
newtio.c_cc[VMIN] = 1;
tcflush( handle, TCIFLUSH );
tcsetattr( handle, TCSANOW, &newtio );
printf("Read module startn");
while(1) {
tcflush( handle, TCIFLUSH );
memset(buf, 0, 120);
RxCount = read( handle, buf, 120);
printf("RxCount = %dn", RxCount);
for(i = 0; i < RxCount; i++) {
printf("%x ", buf[i]);
}
printf("nn");
}
close(handle);
exit(0);
}
혹시 이런 현상이 있으셨던 분들 어떻게 해결하셨는지 답변 부탁드립니다.
다음은 틀린 데이타와 올바른 데이타입니다. 이상하게 한 바이트 중 앞에 4비트가 뭔가 마스킹이나 세팅이 되는 것 같습니다.
틀린 데이타 : fe 85 00 ff ff 00 05 77 42 0c ec 05 00 00 00 00 00 0f fd ff 00 ff fe 00 00 05 73 73 00 00 00 00 00 02 a0 b5 82 18 ff fd ff ff fe 00 00 05 ff 02 00 00 00 00 00 00 00 00 00 00 00 00 00 02 7a 05 00 00 72 00 00 00 00 04 71 fe
올바른 데이타 : 7e 45 00 ff ff 00 05 37 22 0c 69 05 00 00 00 00 00 8f fd ff 00 ff fe 00 00 05 33 33 00 00 00 00 00 02 50 d5 42 88 ff fd ff ff fe 00 00 05 ff 02 00 00 00 00 00 00 00 00 00 00 00 00 00 02 3a 85 00 80 32 00 00 00 00 09 35 7e
시리얼 프로그램은 딱히 문제가 없다고 생각합니다.
int main( )
{
int handle;
struct termios oidtio, newtio;
unsigned char buf[120];
int RxCount;
int i;
/* 시리얼 인터페이스는 /dev/ttyS00 이나 /dev/ttyS01이 될 수 있다. */
handle = open( "/dev/ttyS1", O_RDWR | O_NOCTTY );
printf("handle = %dn", handle);
if( handle < 0 ) {
printf( "Serial Open Fail [/dev/ttyS1]rn " );
exit(0);
}
tcgetattr(handle, &oidtio);
for(i=0; i < NCCS; i++)
newtio.c_cc[i] = ' ';
memset( &newtio, 0, sizeof(newtio));
newtio.c_cflag = B115200 | CRTSCTS | CS8 | CLOCAL | CREAD;
newtio.c_iflag = IGNBRK | IGNPAR;
newtio.c_oflag = 0;
newtio.c_cc[VTIME] = 0;
newtio.c_cc[VMIN] = 1;
tcflush( handle, TCIFLUSH );
tcsetattr( handle, TCSANOW, &newtio );
printf("Read module startn");
while(1) {
tcflush( handle, TCIFLUSH );
memset(buf, 0, 120);
RxCount = read( handle, buf, 120);
printf("RxCount = %dn", RxCount);
for(i = 0; i < RxCount; i++) {
printf("%x ", buf[i]);
}
printf("nn");
}
close(handle);
exit(0);
}
혹시 이런 현상이 있으셨던 분들 어떻게 해결하셨는지 답변 부탁드립니다.