[질문] 시리얼 프로그램 출력과 minicom 출력이 다른 이유
글쓴이: formidea / 작성시간: 금, 2009/11/06 - 3:44오전
안녕하세요.
기초적인 질문하나 드리려구요.
시리얼 포트로 입력을 받아들여서 프린트 해보는 간단한 프로그램을 작성했습니다. 출력했던 코드 부분은 다음과 같구요.
while (STOP==FALSE) { res = read(fd,buf,255); buf[res]=0; printf("%s", buf); if (buf[0]=='z') STOP=TRUE; }
재밌는 점은 이 프로그램을 테스트 한다고, gumstix 보드를 시리얼 포트에 연결해서 실행시켰더니, 얼추 비슷하게 찍히는데 몇가지 다른점들이 있습니다. 예를 들면,
Scanning JFFS2 FS: .... /
이 부분이 minicom에서는 '/' '|' '\' '-' '/' '|' 이런 문자가 같은 자리에서 찍히면서
풍차돌아가듯이 나오는데, 제 프로그램 출력에서는 그렇지 않구요.
Welcome to the Gumstix Linux Distribution! gumstix login:
minicom에서는 이렇게 나오지만, 제 프로그램 출력에서는 "gumstix login:" 부분은 나오지 않습니다.
blocking/non-blocking read (혹은 synchronous/asynchronous)를 다 시도해보았지만,
달라지지 않는 것으로 보아 그것은 상관없는 것 같구요.
왜 두가지 출력이 다르고, 제 프로그램에서 minicom에서 나오는 것 처럼 찍어주려면,
무엇을 달리해야하는지 궁금합니다.
조언을 부탁드립니다.
감사합니다.
Forums:
printf() 바로 뒤에
printf() 바로 뒤에 fflush(stdout); 을 붙여보세요.
tty 설정
tty에서 read()한 거라면,
terminal 설정을 하셔야 합니다.
가령,
님의 프로그램을 실행 전에
~ $ stty raw nl -iexten -echo -ixon -ixoff -crtscts < /dev/ttyS0
를 하고 해 보세요.
tcsetattr()같은 함수를 함 써보심이.
gumstix login 디음에 ":"는 왜 안나올까요?
:-) 빠른 답변 감사드립니다. 잘 나오는군요.
사소한거지만 한가지만 더 질문드리겠습니다.
다른것은 다 minicom 츨력과 똑같이 찍히는데, 마지막에 "gumstix login:"에서
":" 콜론이 안찍힙니다. 수차례 시도했지만 결과는 바뀌지 않는군요.
이건 어떤 이유에서일까요?
감사합니다.
댓글 달기