Я использую порт USB, работающий как виртуальный COM-порт, для последовательной связи с внешним устройством с использованием MATLAB или Visual Basic 6. Я сталкиваюсь с ограничениями скорости передачи в зависимости от программного обеспечения, которое я использую для связи с устройством. У MATLAB (2018a) нет проблем, поскольку он может устанавливать высокие скорости передачи данных. Visual Basic 6, с другой стороны, сталкивается с ограничениями скорости передачи данных, которые можно установить в программном обеспечении. Что касается решений, я рассмотрел это, чтобы установить более высокую скорость передачи данных в Visual Basic 6: https://www.mev.co.uk/pages/Support/VB-Baud.html
Драйверы для виртуального COM-порта сделаны FTDI и находятся здесь: http://www.ftdichip.com/Drivers/VCP.htm. После настройки в диспетчере устройств устройство, с которым я обмениваюсь данными, отображается в разделе «Порты (COM и LPT)» как «Последовательный порт USB (COM4)» в диспетчере устройств.
Устройство требует скорости передачи 1000000 бод и 2 стоповых бита для успешной связи (если вам нужна дополнительная информация, пожалуйста, дайте мне знать). Насколько мне известно, скорость передачи, установленная в программном обеспечении для связи через последовательный порт, должна составлять 1000000, чтобы соответствовать скорости внешнего устройства, которое я использую. Я думаю, что моя проблема может потребовать небольшого объяснения того, как работает последовательная связь, когда USB-порт действует как виртуальный COM-порт, потому что я беспокоюсь, что он отличается от связи с использованием «реального» последовательного порта, если это возможно. Драйвер FTDI выглядит очень гибким, поэтому я не понимаю, почему Visual Basic не может использовать эту гибкость. Нельзя ли установить скорость передачи 1000000 в Visual Basic 6? Если это невозможно, есть ли способы преодолеть это ограничение?
Код VB6 для настройки скорости передачи приведен ниже, где «Порт» - это адрес COM-порта, например, COM4, COM3:
MainForm.MSComm1.CommPort = Port
MainForm.MSComm1.Settings = "9600,N,8,1"
Если кто-нибудь может помочь мне понять, как работает последовательная связь в этом режиме, и если я смогу преодолеть ограничения Visual Basic 6, я был бы очень признателен.