[질문] 시리얼 통신에 대한 질문입니다.
글쓴이: 초코리 / 작성시간: 금, 2004/02/06 - 1:59오전
시리얼 통신에 대한 질문입니다.
시리얼포트를 가지고 모뎀에 전화를 걸고 하는 프로그램을
짜고 있습니다.
예제소스를 보고 있는데요
fd = open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY); if (fd == -1){ printf("open Modem\n"); } else{ printf("Open Modem success\n"); fcntl(fd, F_SETFL, 0); } a = tcgetattr(fd, &options); printf("TcGetAttr is %d\n",a); cfsetispeed(&options, B38400); cfsetospeed(&options, B38400); options.c_cflag &= ~PARENB; options.c_cflag &= ~CSTOPB; options.c_cflag &= ~CSIZE; options.c_cflag |= CS8; options.c_cflag |= CRTSCTS; options.c_lflag |= ICANON; options.c_lflag |= ~ECHO;//에코제거 options.c_oflag |= OPOST; b = tcsetattr(fd, TCSANOW, &options);
위와 같은 부분에서
fcntl(fd, F_SETFL, 0); 이부분이 들어가더군요
fcntl의 man page를 보면
O_APPEND, O_NONBLOCK 그리고 O_ASYNC 이세가지만 인식되고 나머지는 무시한다고 되어 있는데요
0이 들어가면 위에 3가지 중에 들어가지않아 무시 될터인데 저부분을
주석처리하면 동작을 하지않습니다.
그리고
n = write(fd, "at\r\n", 20);
at명령을 보낼때 \r\n을 같이 보내야 어느정도 정확하게
인식을 하던데요 꼭 \r\n이런식으로 보내야 하는지요.
답변 부탁드립니다.
소스코드 전체를 올릴까 하다가 하도 지저분해서 올리지않았는데요.
도움을 주실때 필요하시다면 적어주세요..
Forums:
댓글 달기