Sunday, November 29, 2009

[Linux c] 시리얼 통신 소스

환경 :
OS : Fedora Core 1
Complier : gcc 3.3.2
Editor : vi(vim)

리눅스 C로 간단하게 시리얼 통신을 하게 소스를 구현 해봤습니다.

저는 시리얼 통신하는 kit와 연결해서 구현, 테스트 했습니다.

소스에 각각 주석이 달렸으니까 보시면 바로바로 알 수 있을 껍니다.

여기서 받는 데이터를 unsigned char로 했을 아니면 char로만 했을경우 결과 값이 다르게 나와서 밑에 결과값을 적어 놓습니다.

그리고 결과값이 다 안나오고 중간에 짤릴 경우 10개만 나오게 하고 다음에 중간에 printf("
") 개행하고 다시 출력해보세요. 리눅스에선 그런경우가 발생 할 수도 있습니다.

char로 했을경우
06 02 0d 69 76 01 01 5f ffffffdd ffffffe1 01 00 01 04 ffffffe0 00 03 ffffff95

unsigned char로 했을경우
06 02 0d 69 76 01 01 5f dd e1 01 00 01 04 e0 00 03 95

뚜리의 각 결과값들은 프로토콜로 정의되어 있어서 가이드를 보면 알수 있습니당. ^^

시리얼 통신 프로그램 테스트 :
실제로 테스트를 할때 좀 애를 먹었습니다. 시리얼이 제대로 닫기지도 않고.. 으악..

그리고 널 케이블(시리얼 포트 둘다 암놈만 있는경우)로 해서 만약에 내컴퓨터에 시리얼 포트 2개가 있으면 내컴퓨터 2개에 연결해놓고 Serial0과 Serial1이 서로 보내고 받고 해보면 되고, 요즘 보통 하나나 없는데 하나이면 서로 다른 옆에 컴퓨터와 테스트를 해봐도 무방합니다.

테스트 할때는 소스 있는부분 Linux는 한쪽만 있고 다른쪽에는 Windows나 리눅스 하나만 있으면 됩니다.

Windows같은 경우 하이퍼터미널로 속도나 패리티같은거 맞춰서 열어놓으면 바로 받는거 확인할 수 있고

Linux 같은 경우 minicom이라는 프로그램을 사용해서 쓰실 수 있습니다. 윈도우의 하이퍼터미널과 같은 기능을 합니다.

그리고 왜 포트 2개가 필요하느냐.. 시리얼도 한 프로그램당 하나밖에 접근이 안됩니다. 하나 프로그램을 접근하면 lock가 걸려서 다른쪽에선 안된다네요.. 그래서 시리얼 포트 2개가 필요합니다.

정말 오래간만에 쓰는 글이네요. 알아볼런지.. 이상 뚜리~~~

다운로드

No comments: