Я считаю, что подавляющее большинство карт последовательного порта local bus эмулируют 16x50 RS-232 UART. Если вы не собираетесь использовать какую-либо специальную карту, например, дорогие многопортовые карты, используемые для управления модемными банками, это, вероятно, будет хорошо.
USB/RS-232 converters - совсем другая история - в целом они не будут работать с программным обеспечением, которое напрямую обращается к последовательному порту, поскольку их драйвер обеспечивает только доступ через подсистему последовательного порта OS. Даже если их драйвер каким-то образом пытается эмулировать надлежащую локальную шину UART, эти преобразователи часто имеют разное поведение w.r.t. что может привести к проблемам с программным обеспечением, которое делает необычные вещи с последовательным портом. Например, у меня возникли проблемы с подключением IR remote control receivers к некоторым преобразователям USB/RS-232. Использование конвертера, поддерживающего USB 2.0, несколько помогает, но оно все еще далека от реальной.
Следует также иметь в виду, что если ваше приложение предназначено для более старой ОС, более новые версии этой операционной системы могут больше не разрешать прямой доступ к последовательным портам.
Если все остальное не удается, вы все равно сможете улучшить ситуацию с помощью виртуальной машины. Например, VirtualBox позволяет гостевой ОС обращаться к последовательным портам хоста, эмулируя UART 16550A. Это может позволить вам обойти драйвер или ОС, которые не поддерживают или не разрешают прямой доступ к последовательному порту.
Скорее всего, драйвер карты PCI позволит ОС сообщать о серийном порту как «нормальном» последовательном порту. –
Согласитесь с Joachim, даже USB <-> Последовательные преобразователи обычно загружают драйвер, который представляет последовательный порт как порт «COM #». С COM-портом вам не нужно беспокоиться о доступе к прямой памяти, потому что вы можете использовать обычные вызовы файловой системы Win32: CreateFile, OpenFile, WriteFile, ReadFile, CloseFile (и, конечно, эквиваленты async «* Ex», если необходимо) , Возможно, вам придется немного перевести программное обеспечение, но это должно быть прямолинейным. В Интернете есть тонны ресурсов для доступа к COM-портам ... –