공유기에 올린 프로그램인데, open함수를 시작하면 공유기가 아예 종료되고 리셋이 됩니다. ㅠㅠ
#include
#include
#include
#include
#include
struct termios tio; // 터미널 구조체
int main(int argc, char *argv[]) {
int fd, result; //fd 파일 디스크립터, result : 파일 RW 결과값
long baud = B115200; //통신속도
unsigned char buf; // 데이터 받을 buf -> unsigned를 안붙이면 값이 이상하게 나온다.
char sBuffer[7]={'A','B','C','D','E','\n'}; // 보낼 데이터 (현재 뚜리가 사용하고 있는 키트의 정의된 프로토콜 형식
// char sBuffer[128];
printf("open start\n");
if((fd = open("/dev/ttyUSB0", O_RDWR|O_NDELAY)) < 0) { // READ, WRITE로 Serial0 포트 열기
printf("open error \n");
exit(1);
}
////////////////// 보낼 옵션 설정
printf("open OK!!\n");
tio.c_cflag = baud|CS8|CREAD|CLOCAL; // baud 통신 속도, CS8 (8bit, No Parity, 1 Stop Bit)설정
tio.c_cflag &= ~HUPCL;
tio.c_lflag = 0; // Local Mode 설정
tio.c_iflag = IGNPAR; // Parity 오류가 있는 문자 무시i
tio.c_oflag = 0; // 출력처리 설정 0이면 아무것도 안함
///////////////// 옵션 설정 끝 (물론 추가적인 옵션도 많이 있으나 찾아보기 바란다.)
tcflush(fd, TCIFLUSH); // 설정을 초기화
tcsetattr(fd, TCSANOW, &tio); // tio 터미널 구조체의 속정으로 설정을 적용시킨다.
fcntl(fd, F_SETFL, FNDELAY); // 열려있는 파일 제어를 위해 사용
printf("message write %s",sBuffer);
result = write(fd, sBuffer, 7); // 실제적으로 시리얼로 데이터를 보낸다. sBuffer값의 7개만 시리얼0으로 보낸다.
printf("write complete!!\n");
if(result < 0) { // 에러냐?
printf("write error\n");
close(fd);
exit(1);
}
close(fd); // 끝내기 닫고
}
대체 왜 그런 걸까요??
open start 만 뜨고 아무것도 뜨질 않네요 ㅠㅠ
댓글 달기