Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| comfilepi:monoserialport:index [2026/02/15 19:05] – created - external edit 127.0.0.1 | comfilepi:monoserialport:index [2026/02/20 15:34] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== 모노에서 시리얼 포트 제어하기 ====== | ====== 모노에서 시리얼 포트 제어하기 ====== | ||
| - | 모노 프레임웍에서 | + | ==== 주의 사항: |
| + | 모노(Mono) 프레임워크 환경에서 | ||
| - | | + | |
| - | * 이러한 해결 방법을 구현한 솔루션: [[http:// | + | * **이유:** 리눅스/ |
| - | * [[http:// | + | |
| + | ==== 해결 방법: 폴링(Polling) 방식 구현 ==== | ||
| + | 데이터 수신을 위해 자동 알림 방식 대신, 프로그램이 직접 수신 버퍼를 주기적으로 확인하는 **폴링(Polling) 방식**을 사용해야 합니다. | ||
| + | |||
| + | |||
| + | |||
| + | === 구현 가이드라인 === | ||
| + | - **별도 스레드 생성:** 메인 UI가 멈추지 않도록 수신 전용 스레드를 생성하십시오. | ||
| + | - **BytesToRead 확인:** 루프 내에서 '' | ||
| + | - **적절한 지연(Sleep): | ||
| + | |||
| + | <code csharp> | ||
| + | // 예시 코드 (C#) | ||
| + | Thread receiveThread = new Thread(() => { | ||
| + | while (serialPort.IsOpen) { | ||
| + | if (serialPort.BytesToRead > 0) { | ||
| + | // 데이터 읽기 처리 | ||
| + | string data = serialPort.ReadExisting(); | ||
| + | Console.WriteLine(" | ||
| + | } | ||
| + | Thread.Sleep(10); | ||
| + | } | ||
| + | }); | ||
| + | receiveThread.Start(); | ||
| + | </ | ||
| ===== 예제 프로그램 ===== | ===== 예제 프로그램 ===== | ||
