SerialPort读取问题

时间:2012-06-07 06:37:00

标签: c# serial-port

我必须创建一个aplication,每200ms从PLC读取寄存器。要做到这一点,我使用的是:

SerialPort port = new SerialPort();

private void Form1_Load(object sender, EventArgs e)
{
   port.ReceivedBytesThreshold = 21;
   timer1.Interval = 200;
   timer1.Start();
}

private void ProcessTimer_Tick(object sender, EventArgs e)
{
   if (dataReceived)
   {
        dataReceived = false;
        port.Read(buffer_rx, 0, 21);
        TranslateValues();
   }

   if (port.IsOpen && connectected)
   {  
      // sends command for a new reading
      port.Write(buffer_tx, 0, length);
   }
}

private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
   Invoke(new EventHandler(DoUpdate));
}

void DoUpdate(object sender, EventArgs e)
{
   dataReceived = true;
}

问题是我的应用程序不时冻结。当我调试它时,调试器将我指向port.Read(),但不会抛出任何异常。

我尝试过使用try-catch块,但没有捕到任何内容,也发现time1.Interval = 2000,但它也没有用。

我的问题是,为什么我的应用程序冻结在port.Read(),但没有捕获任何异常?我该如何解决这个问题?

0 个答案:

没有答案