현재 g100보드를 통해 시리얼 통신을 하고 있는데요....

궁금한게...시리얼이 ttySAC0과 ttySAC1이 각각 시리얼 0과 시리얼 1에 연결되어 있으며, g100보드에도 포트가 나와있는 것을 확인했습니다. 그래서 시리얼 통신을 했습니다.

 

ttySAC0는 기본적으로 115200으로  기본 연결되어 있더군요...그래서 우분투와 연결하는 시리얼 용도로 확인하고 있습니다.

ttySAC1은 제가 개인적으로 57600에서 통신해야 되서...연결을 했는데...아무런 반응이 없는겁니다.

상대방은 57600/N/8/1로 엔코더 정보를 날려주거든요....계속~~~

그런데 이걸 혹시 데이터가 이상한가?? 싶어서 일반 컴퓨터와 다이렉트로 물려서 확인도 하고 데이터가 들어오는 것 까지도 확인했습니다. 그런데 G100보드는 아무런 응답이 없는거죠....

(당연히 PC프로그램도 많이 짜봐서...저희쪽 계통사람들이면 시리얼 프로그램 한번씩은 다 짜보잖아요...그러니 프로그램 오류는 아니라 생각합니다...)

 

혹여나 싶어서...보레이트나 전송요런게 잘못됐나...싶어서...확인했는데...한가지 좀 이상한걸 확인했습니다.

보통은 전송하는 측 보레이트와 통신 프로그램의 보레이트만 맞으면 될거라 생각했는데...G100보드의 포트...즉, ttySAC1의 보레이트를 바꿔주면 혹시나?? 해서 바꿔줘봤습니다.

 

바꿔준 방법은...

G100부팅 - 스페이스바 입력 - [SET]입력 - 23번자리인가 그곳이 비었더군요 그래서 18번처럼 console=ttySAC1, 57600 이라고 저장 하고 나왔습니다. 그랬더니 정확하게는 아니지만 그래도 뭔가 나오더군요....(ttySAC0으로 g100보드와 연결했기때문에 print문으로 데이터가 계속 올라오는것을 확인했습니다.)

그리고, 이상한건, 엔코더 정보를 계속 뿌려주는게 유진로봇사의 X-BOT인데...이게 파워를 빼면 데이터가 또 안들어오고....파워를 꽂으면 또 데이터가 들어옵니다....;;

 

그리고, 어찌어찌하다가 하다 하다 안되서 usb 호스트쪽으로 연결해봤습니다.  포트는 ttyUSB0으로 붙더군요...여기는 보레이트를 특별히 손보지 않았습니다. 엔코더 정보는 계속적으로 57600으로 들어오구요, USB TO 시리얼을 통해서 프로그램으로 57600만 맞춰주었습니다.  근데...이게 웬걸요...잘 만들어오는겁니다...;; 헐....그럼 프로그램 문제는 아니라는 거지요....

 

여기서 질문입니다.

1. 리눅스에서 시리얼 포트말입니다. 꼭 부팅시에 스페이스바 입력해서 SET명령으로 해서 초기에 그렇게 바꿔야 하나요??

분명 ttySAC0, ttySAC1, ttySAC2...전부 보레이트나 그런거 바꿀수 있는 부분 있을꺼 같은데... 어디서 어떻게 바꿔야하는지 꼭 부탁드립니다.

 

2. 왜 위와 같은 현상이 발생하는거죠?? 시리얼로 보레이트나 기타 정보를 맞춰주었으면 들어와야 정상아닌가요?? 똑같은 프로그램에 시리얼은 됐다 안됐다가...전송하는 부분의 기기(유진로봇사의 X-BOT)의 전원을 꽂았냐 안꽂았냐에 따라 데이터가 들어오기도 안들어오기도 합니다. 이같은 이유는 무엇인가요?? 분명 시리얼인 ttySAC0, 1은 안됐지만 USB인 ttyUSB0는 잘 들어왔거든요...

이건 코드에는 문제가 없다는거 같은데.... 왜 이러는 건지 확인 부탁드립니다.

 

3. 혹여나 싶어서 그러는데...컴파일러의 특성을 타지 않고 사용할수있는 기본적인 시리얼 통신예제있으면 받아봤음 하네요...

여기있는 다른분들이 올려주신거 좀 나름 고쳐서 해봤는데...라이브러리가 없다든지...그러네요....;; 분명있는데...

제 특성상 라이브러리를 저희쪽에서 쓰는거 사용하거든요...

 

빠른 답변 부탁드립니다. kmsy7072@naver.com

 

------  환경 ------

우분투 12.04

G100 커널 2.6.29