마이크로 컨트롤러에서 RS232 DE9 직렬 포트로받은 데이터를 읽는 간단한 winform 응용 프로그램을 작성했습니다. 데이터의 전송시기를 제어해야하므로 RtsEnable 속성을 제어합니다. 프로그램 구조는 이와 비슷합니다.rtsenable이 예상대로 작동하지 않습니다.
byte[] data = new byte[serialPort1.BytesToRead];
serialport1.RtsEnable = true;
private void serialPort1_DataReceived(object sender,
System.IO.Ports.SerialDataReceivedEventArgs e)
{
serialPort1.Read(data, 0, data.Length);
serialport1.RtsEnable = false;
this.Invoke(new EventHandler(ProcessData));
serialport1.RtsEnable = true;
}
이제는 문제가 간단합니다. RtsEnable이 처음 true로 설정되면 실제로 true로 설정되지 않습니다. 물론 디버깅 할 때 RtsEnable = true로 표시됩니다. 그러나 회로에서 전압을 확인할 때 RT는 여전히 높지 않습니다.
나는 serail 포트에서 전압 출력을 수동으로 점검 할 때 내 회로에 문제가 있다고 생각하지 않는다. 그래서, 그것은 내 코드로 무언가가되어야한다고 생각합니다.
이유는 무엇입니까? 미리 감사드립니다.
RTS를 반복하고 활성화 및 비활성화하는 프로그램을 작성하는 경우 줄 전환이 표시됩니까? 종종 다른 장치에서 한 쪽에서 RTS를 CTS로 교차 연결하기 때문에 사람들은 RTS와 CTS를 혼동합니다. 또한 인 에이블이 고전압인지 또는 신호가 액티브 로우인지 확인할 수 있습니까? – TJD
q1의 경우 데이터를 전송하지 않고 테스트를 수행했습니다. 따라서 data_received 이벤트가 아직 트리거되지 않고 RtsEnable이 true 여야합니다. 그래서, 아직 토글하지 않습니다. q2의 경우 직렬 포트에 대해 읽은 바에 따르면 포트가 열리면 RTS가 높게 나타납니다. 따라서, 높은 전압을 출력해야합니다. – Lihini