Китайский переходник USB-LPT

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
Владимир
постоялец
Сообщения: 356
Зарегистрирован: 23.08.2007 19:48:39
Откуда: Москва

Китайский переходник USB-LPT

Сообщение Владимир »

Всем доброго! Есть задача формировать на LPT-разъеме произвольный код на D0..D7 через USB.
Под Linux переходник определяется как /dev/usb/lp0. На переходнике "заземлил" сигнал BUSY (готовность принтера принимать данные),
а также соединил STROBE и ACK.

Код: Выделить всё

procedure TForm1.ButIdClick(Sender: TObject);
var
 Fo: File;
 i,n,a:Integer;
 fName:String;
begin
   fName:='/dev/usb/lp0';
  n:=SizeOf(1); //1 байт
  AssignFile(Fo, FName);
  Rewrite(Fo, n); //откр для записи
  a:=StrToInt(Edit1.Text);//значение 0-255
  BlockWrite(Fo, a,n); //пишем блок
    Sleep(50);
  CloseFile(Fo);
 end; 
Код работает дважды нормально, затем встает на записи BlockWrite(Fo, a,n);
После "перетыкания" разъема USB все повторяется.
Что не так делаю?
p.s. под WIN7 в диспетчере устройств переходник определяется не как HID (было бы проще),
а в разделе Контроллеры USB - поддержка USB принтера. Как бы к нему подобраться?
RRYTY
постоялец
Сообщения: 273
Зарегистрирован: 25.12.2021 09:00:32

Сообщение RRYTY »

Попробуйте писать в реальное устройство. Всякие замыкания на пустом интерфейсе всегда чреваты некорректной работой контроллера - и у всякого контроллера есть свой буфер, якобы прозрачный, но имеющий свое время срабатывания и свою емкость. Ньюансов много, в общем. Постигаются при самостоятельной разработке переходников на рассыпухе.

Для отладки программы лучше вообще смотреть, что на LPT вываливается каким-нибудь снифером. В свое время так и делал, когда реверс-инжинирил всякие контроллеры ОВЕН и ПРОМА, только у меня был RS485. Ну, и преобразователь USB был полноформатный - промышленный. Китаец же должен быть 100% адекватный - то есть, проверен в работающей системе, тоже со снифером.

Да и любой ИИ выдает для вашей ситуации вагон информации для размышления и тестов. Удачи.
Ответить