vb.net 시리얼통신 예제

Arduino 직렬 모니터가 작동하는 경우 VB 프로그램이 작동하지 않아야 할 이유가 없습니다. 기억해야 할 몇 가지 사항이 있습니다: – 같은 아두이노에 두 개의 연결을 가질 수 없습니다. 직렬 모니터가 열려 있으면 VB는 COM 포트를 사용할 수 없습니다. – 바우 드 요금을 다시 확인합니다. – 직렬 속성(데이터 비트, 패리티, 인코딩 등)을 변경한 경우 기본값으로 다시 변경합니다. PC에 하드웨어 직렬 포트가 없는 경우 직렬 변환기(USB2SERIAL 사용 중)에 USB를 사용할 수 있습니다. 핸드셰이크의 값을 사용하여 데이터의 직렬 포트 전송을 위한 핸드셰이킹 프로토콜을 가져옵니다. 직렬 포트에서 계속 읽으려면 콘솔 창에서 읽은 모든 것을 표시하려면 이 작업을 수행하는 가장 간단한 방법은 루프를 만들고 읽기 메서드 중 하나를 반복적으로 호출하는 것입니다. 이 메서드는 작업을 완료 하는 동안 몇 가지 중요 한 단점이 있습니다. 첫째, 동일한 메서드를 반복해서 반복해서 호출해야하고 루프 내에 갇혀 있기 때문에 매우 제한적입니다.

읽기 메서드에서 발생하는 또 다른 문제는 입력 버퍼에 호출할 때 데이터가 없는 경우 읽을 유효한 데이터가 있을 때까지 프로그램 실행을 지연시킬 수 있다는 것입니다(이는 Console.ReadLine() 메서드와 유사한 동작입니다. 사용자가 입력할 때까지 계속되지 않습니다). 특정 지연 후 메서드를 강제로 반환하도록 설정할 수 있는 속성이 있지만 일반적으로 프로그램이 예상보다 느리게 실행되는 것을 원하지 않습니다. 계속 읽는 더 좋은 방법은 SerialPort.BytesToRead 속성을 사용하여 입력 버퍼에서 읽을 데이터가 있는지 확인하는 것입니다. 이 속성은 읽어야 하는 입력 버퍼의 바이트 수를 반환합니다. 이를 통해 입력 버퍼에 아무 것도 없는 경우 읽기 코드를 건너뛸 루프를 설정할 수 있습니다. 다음은 예입니다 : (true) { TRY {if (mySerialPort.BytesToRead > 0) / / 버퍼 {mySerialPort.ReadByte(); //read a 바이트 } //기타 코드 읽기 방법으로 유지되지 않고 실행할 수 있는 경우} catch (IOException ex) { //오류 처리 논리 } } 이 절차는 확실히 이전 방법보다 효율적이며 실제로 수행하는 모든 것이 포트에서 계속 읽는 많은 간단한 상황에서 작동합니다.