리눅스 시리얼 Read 함수 관련 입니다.
글쓴이: ksh0375 / 작성시간: 수, 2013/02/06 - 1:38오후
현재 리눅스 임베디드를 하고 있습니다.
ttyUSB1으로 시리얼을 통해 Open/Write/Read를 하려고 합니다.
현재 Open및 Write까지 성공을 했는데 Read 하는 부분에서 자꾸 걸려서...
몇일째 안넘어 가고 있습니다.
Maintick이 돌면서 시리얼을 통해 Read해 뿌려 주려고 하는데... Read 라는 함수를 따로 만들어서 하고 있습니다.
현재 Maintick에서 1초마다 읽어 들이는데... 읽는 값이 전혀 없이 0으로만 뜨고 있습니다...
Maintick 을 돌면서 쌓여져 있는 버퍼를 읽어 올 수 있는 방법이 없을까요?ㅠㅠ
int fd, res, nReg,Len; struct termios oldtio,newtio; char buf[2048]={0,}; fd = open(MODEMDEVICE, O_RDWR | O_NOCTTY, O_NONBLOCK ); if (fd <0) { printf("ERROR"); perror(MODEMDEVICE); exit(-1); } tcgetattr(fd,&oldtio); // 현재 설정을 oldtio에 저장 bzero(&newtio, sizeof(newtio)); newtio.c_cflag = BAUDRATE | CS8 | CLOCAL | CREAD; newtio.c_iflag = IGNPAR | ICRNL | IXON | IXOFF; newtio.c_oflag = 0; newtio.c_lflag = 0; newtio.c_cc[VTIME] = 0; // 문자 사이의 timer를 disable newtio.c_cc[VMIN] = 0; // 최소 문자 받을 때까진 blocking tcflush(fd, TCIFLUSH); tcsetattr(fd,TCSANOW,&newtio); /*if(0 >= read(fd,&vBuf,255)) { printf("Line:596"); tcsetattr(fd,TCSANOW,&oldtio); close(fd); return 0; }*/ res=read(fd,&buf,2048); <--------------------------이부분이 문제 인것 같습니다. printf("%s",buf); tcsetattr(fd,TCSANOW,&oldtio); close(fd); return 0;
Forums:
댓글 달기