직렬 (COM1) 데이터가 전송되지 않는 것으로 보이는 C# 응용 프로그램이 있습니다. 내 코드의 단순화 된 코드 조각 (텍스트 상자 쓰기에 대한 호출이 제거되었습니다) 다음과 같은 :직렬 데이터가 C# 응용 프로그램으로 전송되지 않음
InitializeComponent()
{
//
// serialPort1
//
this.serialPort1.BaudRate = 115200;
this.serialPort1.DiscardNull = true;
this.serialPort1.ReadTimeout = 500;
this.serialPort1.ReceivedBytesThreshold = 2;
this.serialPort1.WriteTimeout = 500;
this.serialPort1.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(this.serialPort1_DataReceived);
}
if (radioButtonUart9600.Checked)
{
serialPort1.BaudRate = 9600;
try
{
serialPort1.Open();
}
catch (SystemException ex)
{
/* ... */
}
}
try
{
serialPort1.Write("D");
serialPort1.Write(msg, 0, 512);
serialPort1.Write("d");
serialPort1.Write(pCsum, 0, 2);
}
catch (SystemException ex)
{
/* ... */
}
어떤 이상한 것은 포트가 115.2Kbps 통신을 위해 구성 할 때이 동일한 코드가 잘 작동한다는 것입니다. 그러나이 코드로 전송해야하는 9600bps 데이터를 전송하면 전송되지 않는 것 같습니다. 원격 장치의 수신 플래그를 모니터링하여이를 확인했습니다. try 문에서 예외가 발생하지 않습니다. 데이터가 전송되는지 확인하기 위해 수행해야하는 다른 작업 (플러시 등)이 있습니까? 어떤 생각이나 제안을 주시면 감사하겠습니다. Microsoft Visual C# 2008 Express Edition을 사용하고 있습니다. 감사.
내 대답보다 훨씬 낫다. –
고마워, 한스. WriteTimeout을 늘리면 트릭을 만들었습니다. ReceivedBytesThreshold 및 DiscardNull을 설정하는 것은이 특정 응용 프로그램에 대해 의도적이었습니다. 원격 장치는 항상 2 바이트 응답을 보내야하며 때로는 NULL을 보낼 수 있습니다. 따라서 NULL 값은 무시해야합니다. –