У меня есть приложение на 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.2 Кбит / с. Однако при работе на скорости 9600 бит / с данные, которые должны передаваться этим кодом, похоже, не передаются. Я проверил это, наблюдая за флагом приема на удаленном устройстве. Из инструкции try не выдается никаких исключений. Есть ли что-то еще (Flush и т. Д.), Что я должен сделать, чтобы убедиться, что данные передаются? Любые мысли или предложения, которые вы можете иметь, будут оценены. Я использую Microsoft Visual C # 2008 Express Edition. Спасибо.