Приложение зависает при неправильной скорости передачи в бодах c # - PullRequest
0 голосов
/ 21 сентября 2011

Когда я захожу в настройки последовательного порта, последовательное соединение закрывается. Если я выбрал неправильную скорость передачи для поступающего в приложение серийного номера, он зависает, и я даже не могу получить отладку, поскольку она все еще работает, но я не уверен, что она делает.

В конечном счете, мой вопрос заключается в том, как проверить правильность выбранной скорости передачи и как убедиться, что последовательный порт не замораживает мое приложение.

Ответы [ 2 ]

1 голос
/ 22 сентября 2011

Я наконец получил это, чтобы выбросить ошибку.Когда он пытается вызвать 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
}
0 голосов
/ 21 сентября 2011

К сожалению, выбор неправильной скорости передачи данных является PEBKAC, потому что вы не можете остановить пользователя от неправильных действий, если вы позволяете ему выбрать его.

Я думаю, что единственный реальный способ убедиться, что они выбирают правильную скорость передачи данных, это не дать им выбрать ее, если у вас есть контроль над оборудованием, дать им выбор оборудования, которое они используют, и настроить скорость передачи, dts , xon и т. д., а затем пусть они указывают.

Если я правильно помню, SerialPort работает в другом потоке и отправляет события обратно в ваш пользовательский интерфейс. Таким образом, если ваша скорость передачи данных не верна, возможно, вы получаете неверные данные из-за этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...