По какой-то странной причине у нас есть устаревшее устройство записи данных, которое работает на скорости 9600 бод. За исключением случаев, когда ему нужно передать записанные данные на ПК, в этом случае он переключается на 57600 бод.
Старый код VB6 работал, хотя, конечно, у него был свой набор проблем.
Процедура такова:
Выполните несколько подпрограмм COMMAND / RESPONSE, чтобы заполнить список доступных записей, перечисленных по метке времени, на скорости 9600 бод. Если выбрана временная метка или несколько, откройте диалоговое окно сохранения файла. В тот момент, когда это диалоговое окно закрыто, отправьте команду устройству, чтобы сказать ему «эй, мы собираемся деформироваться», спим в течение 100 мс, а затем установите для свойства скорости передачи данных постоянного соединения COM1 значение 57600, прежде чем начинать обрабатывать XMODEM данные и делать прогресс-бар танцев.
Проблема, с которой я столкнулся, заключается в том, что, похоже, полученные данные никогда не бывают действительно кошерными с точки зрения байтового маршалинга. Что заставляет меня задуматься о том, насколько хорошо SerialPort способен динамически менять скорость передачи данных на лету. В версии VB6 используется MSComm.
Я даже пытался просто использовать MSComm через уровень совместимости, но «CTL_E не поддерживается», из-за чего кажется, что он не способен выполнять XMODEM. (?)