VB.NET: Можете ли вы изменить свойство .BaudRate для System.IO.Ports.SerialPort, когда он уже подключен? - PullRequest
1 голос
/ 18 ноября 2010

По какой-то странной причине у нас есть устаревшее устройство записи данных, которое работает на скорости 9600 бод. За исключением случаев, когда ему нужно передать записанные данные на ПК, в этом случае он переключается на 57600 бод.

Старый код VB6 работал, хотя, конечно, у него был свой набор проблем.

Процедура такова: Выполните несколько подпрограмм COMMAND / RESPONSE, чтобы заполнить список доступных записей, перечисленных по метке времени, на скорости 9600 бод. Если выбрана временная метка или несколько, откройте диалоговое окно сохранения файла. В тот момент, когда это диалоговое окно закрыто, отправьте команду устройству, чтобы сказать ему «эй, мы собираемся деформироваться», спим в течение 100 мс, а затем установите для свойства скорости передачи данных постоянного соединения COM1 значение 57600, прежде чем начинать обрабатывать XMODEM данные и делать прогресс-бар танцев.

Проблема, с которой я столкнулся, заключается в том, что, похоже, полученные данные никогда не бывают действительно кошерными с точки зрения байтового маршалинга. Что заставляет меня задуматься о том, насколько хорошо SerialPort способен динамически менять скорость передачи данных на лету. В версии VB6 используется MSComm.

Я даже пытался просто использовать MSComm через уровень совместимости, но «CTL_E не поддерживается», из-за чего кажется, что он не способен выполнять XMODEM. (?)

1 Ответ

0 голосов
/ 21 ноября 2010

Вы пытались установить порт 57600 даже при отправке команд?

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