当选择了错误的波特率时,应用会冻结c#

时间:2011-09-20 23:28:53

标签: c# serial-port freeze baud-rate

当我进入串行设置时,串行连接将关闭。如果我为应用程序中的串行选择错误的波特率冻结,我甚至无法进行任何调试,因为它仍在工作但我不确定它在做什么。

最后,我的问题是如何检查所选的波特率是否正确以及如何确保序列不会冻结我的应用程序。

2 个答案:

答案 0 :(得分:1)

我终于得到它抛出一个错误。当它试图调用sp.ReadLine();它说ReadLine()已超时。我的超时时间为500。

我刚刚使用过:

try {
  data = sp.Readline();
}
catch (TimeoutException errorEvent)
{
  //Write to console the errorEvent (This operation has timed out)
  //Message to user to pick correct baud
  tbConsole.AppendText(Environment.NewLine);
  tbConsole.AppendText("Incorrect Baud Rate: Please select a new baud rate");
  tbConsole.AppendText(Environment.NewLine);
  tbConsole.AppendText(errorEvent.Message);
  tbConsole.ScrollToEnd();
  //Show baud rate settings dialog
}

答案 1 :(得分:0)

不幸的是,选择不正确的Baudrate是PEBKAC,因为如果您允许用户选择它,则无法阻止用户做错事。

我认为确保选择正确波特率的唯一真正方法是,如果您拥有对硬件的控制权,请不要让他们选择它,让他们选择他们正在使用的硬件并配置波特率,dts ,xon等,而不是让他们指定。

如果我没记错的话,SerialPort会在另一个主题上运行,并将事件发回给你的UI。因此,如果您的波特率不正确,则可能因此而导致数据不正确。