Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当选择错误的波特率c时,应用程序冻结_C#_Serial Port_Freeze_Baud Rate - Fatal编程技术网

C# 当选择错误的波特率c时,应用程序冻结

C# 当选择错误的波特率c时,应用程序冻结,c#,serial-port,freeze,baud-rate,C#,Serial Port,Freeze,Baud Rate,当我进入串行设置时,串行连接关闭。如果我选择了错误的串行波特率在应用程序冻结,我甚至不能得到任何调试,因为它仍然在工作,但我不确定它在做什么 最后,我的问题是如何检查选择的波特率是否正确,以及如何确保串行数据不会冻结我的应用程序。不幸的是,选择不正确的波特率是一个PEBKAC,因为如果您允许用户选择波特率,您无法阻止用户做错误的事情 我认为确保他们选择正确波特率的唯一真正方法是,如果你控制了硬件,不要让他们选择,让他们选择他们正在使用的硬件,并从中配置波特率、dts、xon等,而不是让他们指定

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


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

不幸的是,选择不正确的波特率是一个PEBKAC,因为如果您允许用户选择波特率,您无法阻止用户做错误的事情

我认为确保他们选择正确波特率的唯一真正方法是,如果你控制了硬件,不要让他们选择,让他们选择他们正在使用的硬件,并从中配置波特率、dts、xon等,而不是让他们指定


如果我没有记错的话,它们会在另一个线程上运行,并将事件发回您的UI。因此,如果您的波特率不正确,则可能因此而获得不正确的数据

我终于让它抛出了一个错误。当它试图调用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我不知道为什么这个问题被否决。我遇到了同样的问题,但在这方面却没有任何有用的解决方案。这和错误的驱动程序并没有任何关系,链接也并没有用。我并没有捕捉到超时异常,但继续在错误的波特率下崩溃。你有什么新的解决办法吗?