이번에 간단한 프로젝트를 진행하기 위해 아두이노 프로 마이크로를 구매하였다.
아두이노 프로 마이크로는 아두이노 레오나르도의 미니 버젼이라고 생각하면 된다.
동일한 Chip을 사용해서 개발 환경 및 세팅이 동일하다.
아래는 직접 구매한 아두이노 프로 마이크로를 찍은 사진이다.
PC와 아두이노간에 통신을 하기위해서 기존에 사용하던 아두이노 나노와 동일한 코드를 적용해보았다.
하지만, 시리얼로 아무것도 읽어오지 못하는 문제가 발생했다.
국내 블로그 및 사이트에서는 별다른 정보를 찾지 못해서 삽질을 하던중 아래처럼 코드를 바꾸니 정상 동작했다.
아래는 기존 PC의 C# 코드이다.
// 시리얼포트 열기 SerialPort sp = new SerialPort(portName); sp.Open(); // 읽기 작업쓰레드: Read from serial port var cancel = new CancellationTokenSource(); var readTask = Task.Factory.StartNew(() =>
아래는 수정후의 PC C# 코드이다.
// 시리얼포트 열기 SerialPort sp = new SerialPort(portName); sp.DtrEnable = true; sp.RtsEnable = true; sp.Open(); // 읽기 작업쓰레드: Read from serial port var cancel = new CancellationTokenSource(); var readTask = Task.Factory.StartNew(() =>
즉, 아두이노 프로 마이크로 같은 경우 칩셋 및 spec의 차이로 인하여 DTR과 RTS를 켜야 시리얼 통신이 가능해진다.
나처럼 프로 마이크로의 시리얼 문제로 해메는 사람들에게 도움이 되었으면한다.
삽질은 필요하지만 너무 오래 삽질하면 힘들다 ^^
아래는 DTR enable 파라미터 설명이다.
// Gets or sets a value that enables the Data Terminal Ready (DTR) signal during
// serial communication.
//
// Return value:
// true to enable Data Terminal Ready (DTR); otherwise, false. The default is false.
//
// Exception:
// T:System.IO.IOException:
// The port is in an invalid state. -or- An attempt to set the state of the underlying
// port failed. For example, the parameters passed from this System.IO.Ports.SerialPort
// object were invalid.
아래는 RTS 파라미터 설명이다.
// Gets or sets a value indicating whether the Request to Send (RTS) signal is enabled
// during serial communication.
//
// Return Value:
// true to enable Request to Transmit (RTS); otherwise, false. The default is false.
//
// Exception:
// T:System.InvalidOperationException:
// The value of the System.IO.Ports.SerialPort.RtsEnable property was set or retrieved
// while the System.IO.Ports.SerialPort.Handshake property is set to the System.IO.Ports.Handshake.RequestToSend
// value or the System.IO.Ports.Handshake.RequestToSendXOnXOff value.
//
// T:System.IO.IOException:
// The port is in an invalid state. -or- An attempt to set the state of the underlying
// port failed. For example, the parameters passed from this System.IO.Ports.SerialPort
// object were invalid.
'C# & 파이썬 & 아두이노' 카테고리의 다른 글
c# exception 예외처리하는 방법 (0) | 2021.07.21 |
---|---|
파이썬 설치 (python) (0) | 2021.01.12 |
아두이노 RFID 센서 RC522 (0) | 2021.01.12 |
Visual Studio github 연동하기 (0) | 2021.01.12 |
[C#] 최소화했을 때 종료하지 않고 아이콘으로 표시하기 (0) | 2021.01.12 |