직렬 포트에서 계속 읽으려면 콘솔 창에서 읽은 모든 것을 표시하려면 이 작업을 수행하는 가장 간단한 방법은 루프를 만들고 읽기 메서드 중 하나를 반복적으로 호출하는 것입니다. 이 메서드는 작업을 완료 하는 동안 몇 가지 중요 한 단점이 있습니다. 첫째, 동일한 메서드를 반복해서 반복해서 호출해야하고 루프 내에 갇혀 있기 때문에 매우 제한적입니다. 읽기 메서드에서 발생하는 또 다른 문제는 입력 버퍼에 호출할 때 데이터가 없는 경우 읽을 유효한 데이터가 있을 때까지 프로그램 실행을 지연시킬 수 있다는 것입니다(이는 Console.ReadLine() 메서드와 유사한 동작입니다. 사용자가 입력할 때까지 계속되지 않습니다). 특정 지연 후 메서드를 강제로 반환하도록 설정할 수 있는 속성이 있지만 일반적으로 프로그램이 예상보다 느리게 실행되는 것을 원하지 않습니다. 계속 읽는 더 좋은 방법은 SerialPort.BytesToRead 속성을 사용하여 입력 버퍼에서 읽을 데이터가 있는지 확인하는 것입니다. 이 속성은 읽어야 하는 입력 버퍼의 바이트 수를 반환합니다. 이를 통해 입력 버퍼에 아무 것도 없는 경우 읽기 코드를 건너뛸 루프를 설정할 수 있습니다. 다음은 예입니다 : (true) { TRY {if (mySerialPort.BytesToRead > 0) / / 버퍼 {mySerialPort.ReadByte(); //read a 바이트 } //기타 코드 읽기 방법으로 유지되지 않고 실행할 수 있는 경우} catch (IOException ex) { //오류 처리 논리 } } 이 절차는 확실히 이전 방법보다 효율적이며 실제로 수행하는 모든 것이 포트에서 계속 읽는 많은 간단한 상황에서 작동합니다. 다른 시나리오를 살펴보겠습니다. 많은 작업을 처리하고 무한 루프의 범위 내에서 작업 할 수없는 대규모 복잡한 프로그램을 만드는 경우 어떻게해야합니까? 다행히 SerialPort 클래스는 입력 버퍼에 새 데이터가 있을 때마다 발생하는 이벤트를 만들었습니다.

이벤트가 무엇인지 모르는 사람에게 이벤트는 중요한 일이 발생했을 때 프로그램을 중단하고 이벤트를 처리하는 방법을 호출한 다음 프로그램이 중단된 곳으로 돌아갑니다. 입력 버퍼에 의해 데이터를 수신하는 경우 이벤트는 프로그램을 중지하고 데이터를 처리할 가능성이 가장 높은 메서드를 호출한 다음 프로그램이 중단된 곳으로 돌아갑니다. 우리는 다음 단계에서 이것으로 탐구할 것입니다. 침입하는 것이 매우 좋은 방법은 IsOpen 속성을 사용하여 포트를 열 수 있는지 확인하는 것입니다. 내가 발견 한이것에 대한 주요 용도는 다음과 같은 예 (항상 같은 소켓에 다시 배치되지 않음)에서 추가 및 제거 할 수있는 USB com 포트와 함께 다음과 같습니다 : 일반적으로이 방법은 빠르게 변경되지 않는 단일 직렬 포트에서 작동합니다. 그러나, 나는 테스트 장비 누군가와 이것에 물린 (나는 누가 알고 생각!) 그것은 빨리 실행하기 위해 간격의 소프트웨어의 값을 변경하고 매우 심하게 잘못 갔다 (누가 비난을 가지고!) 타이머 구성 요소는 인수 및 Windows에 의해 무시 될 수 있습니다로 . PC 간의 직렬 통신은 항상 시작점으로 간주됩니다. 직렬 통신 코드의 내 첫 번째 조각은 두 개의 PC를 받고 대학 과제, 다음 세, 다음… 당신은 에 얘기 아이디어를 얻을 (내가 지금 알고있는 것) DOS에 대한 볼랜드의 터보 C ++를 사용하여 케이블의 쌍과 RS422. 시간이 지났고 (어떻게 든!) 나는 `현실`세계에서 디자인 엔지니어가되었습니다. 충분히 바쁘게 보이지 않는 것은 유명한 « 글렌 당신은 그렇게 바쁘지 않아, 이것을 보세요 »로 나를 휘두를 수 있습니다.

`이`는 절반정도 가해진 프로젝트를 진행하고 있었고, 그 후 유죄 당사자가 출마했습니다. 그래서 그것이 원하는 방식으로 작동하게하기 위해, 소프트웨어 (VB6)를 나왔고 내가 가진 사회 생활이 간다.