c# rs232 통신 예제

나는 예에서 R-232에 초점을 맞추고있다; 그러나 이것은 RS-422 및 RS-485와 같은 다른 직렬 네트워크에도 동일하게 적용되어야 합니다. 이제 직렬 포트 장치에서 데이터를 수신하여 양식에 표시할 수 있습니다. 일부 장치는 메시지가 표시되지 않고 데이터를 전송합니다. 그러나 일부 장치는 특정 명령을 보내야 하며 명령이 요구하는 데이터로 응답합니다. 이러한 장치의 경우 직렬 포트에 데이터를 작성하고 이전 코드를 사용하여 다시 전송될 데이터를 가져옵니다. 내 예에서, 나는 규모와 통신 할 것이다. 이 특정 축척의 경우 명령 ”SIrn”을 보내면 배율에 있는 모든 것의 가중치를 반환해야 합니다. 이 명령은 이 축척에 대해 특정합니다. 수신할 명령을 찾으려면 직렬 장치의 설명서를 읽어야 합니다.

직렬 포트에 쓰기 위해 양식에 ”시작” 단추를 만들었습니다. Click_Event에 코드를 추가했습니다: 직렬 포트에서 지속적으로 읽으려면 콘솔 창에서 읽은 모든 것을 표시하면 이 작업을 수행하는 가장 간단한 방법은 루프를 만들고 반복적으로 하나를 호출하는 것입니다. 우리의 읽기 방법. 이 메서드는 작업을 완료 하는 동안 몇 가지 중요 한 단점이 있습니다. 첫째, 동일한 메서드를 반복해서 반복해서 호출해야하고 루프 내에 갇혀 있기 때문에 매우 제한적입니다. 읽기 메서드에서 발생하는 또 다른 문제는 입력 버퍼에 호출할 때 데이터가 없는 경우 읽을 유효한 데이터가 있을 때까지 프로그램 실행을 지연시킬 수 있다는 것입니다(이는 Console.ReadLine() 메서드와 유사한 동작입니다. 사용자가 입력할 때까지 계속되지 않습니다). 특정 지연 후 메서드를 강제로 반환하도록 설정할 수 있는 속성이 있지만 일반적으로 프로그램이 예상보다 느리게 실행되는 것을 원하지 않습니다. 계속 읽는 더 좋은 방법은 SerialPort.BytesToRead 속성을 사용하여 입력 버퍼에서 읽을 데이터가 있는지 확인하는 것입니다.

이 속성은 읽어야 하는 입력 버퍼의 바이트 수를 반환합니다.