Можно ли получить обычный доступ к параллельному порту при использовании адаптера USB к параллельному порту? - PullRequest
7 голосов
/ 18 ноября 2010

Предварительный рассказ

Существует эта программа, которая использует параллельный порт для синхронизации с другим оборудованием. Это установит выход параллельного порта в указанное (байтовое) значение. Это работает без проблем при использовании встроенного параллельного порта ПК. Целевые платформы - Windows XP до 7, пока что все работало нормально. Исходный код находится на Delphi, доступен и может быть изменен.

Как это работает

В Delphi я могу использовать io.dll для установки значения параллельного порта, но есть и другие доступные решения, такие как inpout32.dll или port.dll . Я вызываю что-то вроде PortOut, указываю номер порта и значение байта, и порт установлен.

Что я сейчас хочу сделать - и где мне нужна помощь

Теперь изменение: это должно работать на машине, на которой нет встроенного параллельного порта (даже на материнской плате). Доступно несколько вариантов:

  • используйте адаптер USB для параллельного порта, чтобы добавить LPT-порт к ПК
  • используйте карту PCI, которая добавляет LPT-порт к ПК
  • используйте карту PCI Express, которая добавляет LPT-порт к ПК

В настоящее время я стремлюсь к тому, чтобы сконцентрироваться на самой простой и дешевой возможности: переходнике USB на параллельный порт.

Основной вопрос

Кажется, есть различия между адаптерами параллельного порта, которые предназначены для подключения только принтера, и другими адаптерами, которые кажутся более мощными. Есть ли разница? Или я могу просто использовать один из этих 5 $ адаптеров для принтера, подключить свое собственное оборудование и получить доступ к порту из кода Delphi? Или мне нужен специальный адаптер? Кто-нибудь сталкивался с этим? Здесь есть связанный вопрос здесь , но различные типы адаптеров (если они существуют) там не упоминаются. Эта страница предполагает, что действительно есть различия:

В отличие от всех других параллельных USB-портов, которые могут подключаться только к принтерам, это обеспечивает подключение к большинству оборудования.

Я надеюсь, что существует решение через USB, потому что для этого вам не нужно открывать ПК, что означает, что адаптер может быть добавлен по требованию.

Суб-вопрос

У вас есть опыт работы с решением PCI (Express)? Я должен использовать один, если USB-подход не успешен.

1 Ответ

9 голосов
/ 18 ноября 2010

Поскольку я в последнее время боролся с этим, вот что я обнаружил; Если вы имеете в виду, используя адресацию портов ввода-вывода (указанную ссылкой на inpout32.dll), нет. Если ваш драйвер USB-параллельного порта не поддерживает полную эмуляцию порта или виртуализацию, что в большинстве случаев не возможно, это обычно невозможно. Если вам нужен прямой доступ к порту для обычного «бит-тиддлинга», вы должны получить отдельную PCI-карту параллельного порта. Большинство из них представляют себя как обычный ввод-вывод по стандартному адресу (-ам). Я предполагаю, что вы не планируете использовать параллельный порт для фактической связи с принтером, верно?

Что интересно, так это то, что адаптеры USB-Serial намного проще в использовании, поскольку они выглядят как простые виртуальные устройства, где их можно просто «открыть» с помощью простого потока; TFileStream.Create ("COM1", fmOpenRead) или Windows.CreateFile ("COM2", ...);

Вот некоторые устройства, которые предназначены для полной эмуляции параллельного порта через USB:

https://www -user.tu-chemnitz.de / ~ ygu / bastelecke / PC / USB2LPT / index.en.htm

...