'Serial 통신'에 해당되는 글 1건

  1. 2008.04.28 C#을 이용한 시리얼 포트 제어 - AVR AtMega128 제어 (6)
[Proramming]/C#2008. 4. 28. 21:17

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를 이용하여 각도값 표시 - 윈도창에 센서 데이터를 그래프로 표시해서 디버깅을 쉽게 할 수 있다.
")//]]>
Posted by nexp

댓글을 달아 주세요

  1. gimchiii

    씨샵이 편리하군요...
    기능도 좋은듯 하고...
    써보고 싶군요...

    2008.10.21 14:16 [ ADDR : EDIT/ DEL : REPLY ]
  2. gimchiii

    실례지만 C# 2005는 닷넷 2005의 일부인가요?

    2008.10.21 14:21 [ ADDR : EDIT/ DEL : REPLY ]
  3. nowdream

    저기 전 8051 을 c#으로 제어하려고 합니다..
    8051에 미리 프로그램을 구워놓고 c#으로 제어하면 되는 겁니까 ?ㅠ

    2009.05.02 11:43 [ ADDR : EDIT/ DEL : REPLY ]
  4. 비밀댓글입니다

    2009.05.14 09:46 [ ADDR : EDIT/ DEL : REPLY ]
  5. dsu

    저기 질문이 있는데 atmega 의 플래쉬 메모리에 별다른 프로그래밍이 되어 있지않은 상태에서 저렇게 제어가 가능하다는 것입니까? 결국에는 플래쉬메모리에 저장된 프로그래밍이 데이터를 받고 작동시킨다는 것입니까? 너무 초보적인 질문같아서 죄송합니다.

    2010.01.26 08:57 [ ADDR : EDIT/ DEL : REPLY ]
  6. 이동현

    관리자의 승인을 기다리고 있는 댓글입니다

    2011.03.04 17:32 [ ADDR : EDIT/ DEL : REPLY ]