FTDI USB к RS232 лучше, чем реальный COM-порт RS232? - PullRequest
0 голосов
/ 03 апреля 2020

Я использую сканер Zebra DS457 для чтения штрих-кодов и кодов QR через COM-порт (RS232). В моей тестовой среде я использовал MSI-терминал с Win10, и он работал на реальном COM-порту без каких-либо проблем. Но на других устройствах (Win10 и Win7) есть некоторые проблемы, из-за которых не срабатывает программный триггер, и прочитанная информация не отправляется обратно на компьютер. Когда я использую адаптер USB / RS232 FTDI, у меня не возникает никаких проблем. Но почему? Сначала я подумал, что это Win10, и устаревшая поддержка могла бы быть лучше, но адаптер на всех устройствах лучше и быстрее. Как это возможно? Может быть, драйвер, указанный c вещь? Я использую этот адаптер ссылка на conrad.de .

1 Ответ

1 голос
/ 03 апреля 2020

Последовательный порт FTDI налагает минимальную задержку между временем поступления символа по проводу и моментом, когда приложение может его видеть, и между временем, когда приложение хочет что-то отправить, и временем, когда оно переходит по проводу. На старых устройствах эти задержки составляли не менее 1 мс каждый, но я думаю, что некоторые новые высокоскоростные устройства сократили их до 125 мкс. Кроме того, данные, которые поступают с неправильной скоростью, иногда заканчиваются сотнями миллисекунд дополнительной задержки по причинам, которые я не совсем понимаю.

С другой стороны, устройство FTDI может буферизовать 256 байтов данных с провода или 128 байтов данных с порта USB для отправки по проводу и обрабатывать рукопожатие RTS / CTS без какого-либо вмешательства со стороны программного обеспечения - возможностей, которые отсутствуют в микросхемах UART, используемых P C последовательных портов. Если программное обеспечение отдает 128 байтов устройству FTDI, оно начнет отправлять его, пока удаленное устройство не деактивирует свою линию квитирования, после чего устройство FTDI прекратит отправку, как только текущий байт будет завершен; затем он возобновит передачу, как только удаленное устройство восстановит рукопожатие. Если устройство FTDI получает по проводам достаточно данных, чтобы его UART подвергался риску переполнения, оно автоматически деактивирует свой вывод рукопожатия, не требуя какого-либо программного вмешательства. UART, используемый в последовательном порте P C, напротив, требует быстрого обработчика прерываний для управления или ответа на провода рукопожатия. Если обработчик прерываний поддерживает 4096-байтовый буфер, он может деасертировать провод квитирования после того, как буфер заполнен на 75%, но ничто не приведет к отмене дескриптора квитирования, если буфер заполнен менее чем на 75% и 17 байтов быстро передаются по проводу. последовательность перед обработчиком прерываний UART. Хуже того, если буферизация передачи включена, и P C подал 16 байтов в UART для передачи, когда удаленное устройство деактивирует свою линию квитирования, эти 16 байтов будут отправлены независимо от того, готово ли удаленное устройство принять их. (и основанный на проводе рукопожатия, он очень хорошо может не быть).

Таким образом, некоторые приложения могут работать намного лучше с FTDI UART, а некоторые намного лучше с реальным последовательным портом.

...