에서 데이터를 읽기 나는 다음과 같은 코드를 사용하여 (즉, COM3입니다) 직렬 포트에 전송 된 데이터를 읽고있다 : 그 시리얼 포트에서 오는.NET : 시리얼 포트
_serialPort.PortName = "COM3";
_serialPort.BaudRate = 9600;
_serialPort.Parity = Parity.None;
_serialPort.DataBits = 8;
_serialPort.StopBits = StopBits.One;
_serialPort.ReadTimeout = 500;
_serialPort.WriteTimeout = 500;
_serialPort.DataReceived += new SerialDataReceivedEventHandler(_serialPort_DataReceived);
_serialPort.Open();
데이터를 명령하고 될 수 있습니다 '\ 0'으로 끝나는 길이의 문자열. 이러한 데이터를 효율적으로 읽는 방법에 대한 모범 사례를 찾고 있습니다. 어디서, 최선 수있는 생산자/소비자 패턴을 생각하고 있어요 :
- 모든 시간 DataReceived 이벤트가 발생, 내가 포트에서 문자열을 읽어을하고 StringBuffer를 또는 다른 구조에 추가 그때가
- stringbuffer 또는 char '\ 0'에 대한 구조를 지속적으로 검사하는 다른 스레드가 발견되면 명령 문자열을 구문 분석하고 제거합니다.
이 문제를 해결하는 가장 효율적인 방법이겠습니까? dataReceived 이벤트에 의존하지 않는 직렬 읽기 기능을 차단하는 종류가 있습니까?
SerialPort.NewLine을 사용하여 dataReceived 이벤트가 발생하는시기를 결정할 수 있습니다. 그게 아주 유용하다고 생각합니다. – mike01010