我有一个 C# 应用程序,其中串行(COM1)数据似乎有时无法传输。以下是我的代码的简化片段(已删除对 textBox 写入的调用):
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。谢谢。