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