본문 바로가기

[Proramming]/C#

C#을 이용한 시리얼 포트 제어 - AVR AtMega128 제어

C#을 이용한 시리얼 포트 제어 - AVR AtMega128 제어
 
사용자 삽입 이미지
 

Visual Studio .Net에 시리얼 포트 제어 컴포넌트가 기본으로 제공된다. 이를 이용하면 시리얼 포트를 이용한 제어가 상당히 편리해 지는데 C#을 이용하여 하드웨어(시리얼 포트)제어 프로그램 작성을 해 보았다.
하드웨어는 Usb2Serial을 가지고 있는 [Meag128 EVM]을 이용하였고 예전에 작성해 둔 시리얼 포트 제어 펌웨어를 그대로 사용 하였다.
 
 
VC#을 실행하고 새로운 프로젝트를 생성한다.
적당히 폼을 생성하고 시리얼 포트 제어를 위해 'SerialPort' 컴포넌트도 배치한다.
시리얼 포트의 속성은 속성창에서 설정해도 되고 소스코드상에서 입력가능하다.
사용자 삽입 이미지
 
 
코드작성
코드는 상당히 간단히 작성할 수 있고 Byte Buffer나 String데이터를 시리얼 포트로 전송할 수 있다.
초기에 설정해야 하는 프로퍼티로 COM Port를 설정하는 PortNmae와 Baudrate를 설정하는 BaudRate가 있다.
PC에서 시리얼 포트로 데이터를 전송하기 위해 Write() 매소드를 사용하면 된다. 문자열 단위 혹은 Byte단위로 전송 가능하다.
아래 코드를 보면 쉽게 이해 가능하다.
 
 
프로그램 실행
프로그램 실행해서 포트 초기화 하고 [Mega128 EVM]의 Led를 PC프로그램으로 제어 가능하다.


 
테스트 동영상
C# 으로 작성한 시리얼 포트 제어 프로그램으로 Atmeag128 EVM의 LED를 제어 하는 프로그램
 
결론적으로 말하면 "정말 간단한다" 이다. 하드웨어 엔지니어 입장으로 보면 PC는 그냥 도구일 뿐이므로 내부 사정은 자세하게 알 필요가 없다. 그저 좀더 쉬운 환경에서 명령 내리고 데이터 수집해서 분석하는 용도로 사용하기에 Visual툴을 이용하면 너무 좋은것 같다. 한가지 아쉬운 점이 있다면 C#코드 자체가 C와 완벽히 호환되지 않기 때문에 임베디드로 포팅을 할때는 조금 무리가 있을듯... 그렇다면 C++.net으로 가는것이 맞을것 같다.

다른 예제
Cortex-M3 STM32 USB를 이용하여 각도값 표시 - 윈도창에 센서 데이터를 그래프로 표시해서 디버깅을 쉽게 할 수 있다.
")//]]>