c언어 시리얼 통신 문의!!!
안녕하세요!!!
시리얼로 전송 받은 데이터를 파싱하고 있는데 궁금한 점이 있어서 문의 드립니다!!!
void *micom_read(void *threadid)
{
int gsns_fd;
char gsns_buf[100];
struct termios tio;
int _micom_i;
gsns_fd = open("/dev/ttyS1", O_RDWR | O_NOCTTY | O_NONBLOCK);
if(gsns_fd < 0)
{
printf("not open Micom\n");
gsns_fd = -1;
}
memset(&tio, 0, sizeof(tio));
tio.c_lflag = 0;
tio.c_oflag = -;
tio.c_cflag = B9600 | CS8 | CLOCAL | CREAD;
tio.c_cc[VTIME] = 0;
tio.c_cc[VMIN] = 1;
tcflush(gsns_fd, TCIFLUSH);
tcsetattr(gsns_fd, TCSANOW, &tio);
fcntl(gsns_fd, F_SETFL, FNDELAY);
while(1)
{
memset(&gsns_buf, 0x00, sizeof(gsns_buf));
sleep(1);
read(gsns_fd, gsns_buf, 100);
for(_micom_i = 0 ; _micom_i < 100 ; _micom_i ++)
{
if(gsns_buf[_micom_i] == '[' && gsns_buf[_micom_i + 1] == '7' && gsns_buf[_micom_i + 2] == '0' && gsns_buf[_micom_i + 3] == 'D' && gsns_buf[_micom_i + 4] == 'D')
printf("button down\n");
}
}
}
소스는 이렇게 구요.
sleep(1) 을 넣어놓은 이유는 1초동안 시리얼에서 넘어오는 데이터를 gsns_buf 에 저장하려고 한 거구요...
여기서 sleep(1) 이거 없이 데이터를 확인 해서 이벤트를 처리할 수는 없나요??
요것이 궁금하네요.ㅠㅠ
댓글 달기