Приветствую Вас Гость | RSS


Главная страница » USB -> LPT - ZX-Форум » Регистрация » ВходЧетверг
2024-04-25
23:11:49
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
ZX-Форум » Hardware » Hardware » USB -> LPT
USB -> LPT
KOEДата: Воскресенье, 2008-02-03, 15:11:35 | Сообщение # 1
Retry, Abort, Ignore?
Группа: Человеки
Сообщений: 2318
Репутация: 5
Статус: Offline
Купил мну переходничек. Вот такой

Для того, чтобы можно было плиски и контроллеры с ноута прошивать. Но радость моя была недолгой. Вставил я это чудо в ноут, он его сразу же распознал как 'USB printer'. И принтер (если его подключить через эту хрень) действительно работает. Но мне-то нужен LPT порт, а не USB принтер. Квартус и прочая хрень порт просто не видит. Иду дальше. Панель управления -> установка периферийных устройств -> порты COM и LPT. Устанавливаю. Прописываю адрес 0x378. Теперь программы порт видят, но он нифига не работает. Переустанавливаю драйвер из прилагаемого CD, все рарвно не работает. Чего еще можно придумать - не знаю. Может у кого были такие грабли?

Прикрепления: 9148435.jpg (18.7 Kb)


Мы рождены, чтоб сказку сделать былью
"Кто не обломался, тем еще предстоит"


Сообщение отредактировал KOE - Воскресенье, 2008-02-03, 15:12:01
 
KOEДата: Воскресенье, 2008-02-03, 15:22:10 | Сообщение # 2
Retry, Abort, Ignore?
Группа: Человеки
Сообщений: 2318
Репутация: 5
Статус: Offline
Я так понял, что венда при установке драйвера принтера сразу подключает свой вендовозный драйвер usbprint.sys. А когда я установил новый LPT порт и прописал его адрес, венда при обращении к нему пишет не в USB-конвертер, а в этот самый несуществующий адрес. Как бы сделать так, чтобы венда перехватывала обращения к LPT и пихала их в USB-конвертер? Принтеры ведь c этим конвертером именно так работают???

Мы рождены, чтоб сказку сделать былью
"Кто не обломался, тем еще предстоит"
 
fk0Дата: Воскресенье, 2008-02-03, 18:04:50 | Сообщение # 3
Активист
Группа: Человеки
Сообщений: 178
Репутация: 0
Статус: Offline
Quote (KOE)
Я так понял, что венда при установке драйвера принтера сразу подключает свой вендовозный драйвер usbprint.sys. А когда я установил новый LPT порт и прописал его адрес, венда при обращении к нему пишет не в USB-конвертер, а в этот самый несуществующий адрес.

А С ЧЕГО ТЫ ВЗЯЛ, ЧТО ОНО ВООБЩЕ КАКОЕ-ТО ОТНОШЕНИЕ К микросхеме реализующей LPT-порт в компьютере IBM-PC (или совместимом) имеет??? Я б до этого не додумался даже бы. Разумеется принтер работает.
Разумеется что-то вроде \\Device\\LPT появляется (не знаю даже как оно там называется). Что обеспечивается её драйвером. Но ПРИ ЧЁМ ЗДЕСЬ ПОРТЫ ВВОДА-ВЫВОДА микропроцессора (типа "пеньтиум")???

Нет, я даже догадываюсь как оно работает. FT232, верней её аналог, для параллельного ввода-вывода.

Quote

Как бы сделать так, чтобы венда перехватывала обращения к LPT и пихала их в USB-конвертер?

Отловить все исключения в программе при попытке записи в порт и перенаправить их на свой драйвер этой хреновины, который бы заставлял её дёргать ножками? С, замечу особо, отнюдь не нормированной скоростью...

Только это, думаю, дааааалеко не тривиально. Не представляю даже как. Только догадываюсь -- отладчики эти исключения наверняка как-то ловят.

Quote

Принтеры ведь c этим конвертером именно так работают???

Если я тебе скажу, что принтеры, точней программы которые на них печатают, верней драйвера принтеров, отнюдь не пихают байты в 0x378 порт микропроцессора, а пишут поток в \\Device\\LPT -- я открою для тебя великую тайну? (они вщё и по tcp/ip умеют, в указанный пользователем порт... tcp-протокола)


[САМОЗАБАНЕН]
 
deathsoftДата: Воскресенье, 2008-02-03, 19:01:44 | Сообщение # 4
Retry, Abort, Ignore?
Группа: Человеки
Сообщений: 1587
Репутация: 9
Статус: Offline
Quote (fk0)
Может у кого были такие грабли?

Все программы для работы с LPT прртом под виндой пишут в аппаратный порт 0x378 (LPT1) либо из драфвера режима ядра, либо из юзермода. Никакие УСБ устройства не могут эмулировать аппаратный порт процессора, а могут лишь передавать данные через шину УСБ и свой драйвер (ЛПТ порт при этом эмулируется при помощи пакетов), данные чеерз шину УСБ выдаются на 8битную параллельную шину, но со стороны винды данные пишутся командой WriteFile в \Device\Usbxxxx

В отличие от COM портов, где весь виндовый софт работает чедез символическую ссылку \Device\COMn работа с ЛПТ осуществляется напрямую.

Сообщение отредактировал deathsoft - Воскресенье, 2008-02-03, 19:02:49
 
KOEДата: Воскресенье, 2008-02-03, 19:57:42 | Сообщение # 5
Retry, Abort, Ignore?
Группа: Человеки
Сообщений: 2318
Репутация: 5
Статус: Offline
Quote (fk0)
А С ЧЕГО ТЫ ВЗЯЛ, ЧТО ОНО ВООБЩЕ КАКОЕ-ТО ОТНОШЕНИЕ К микросхеме реализующей LPT-порт в компьютере IBM-PC (или совместимом) имеет??? Я б до этого не додумался даже бы.

У меня и мыслей таких не было, вроде не пил с утра. При покупке этого девайса я ожидал, что при установке драйвера у меня появится виртуальный LPT порт. Который я выберу для работы в квартусе и будет мне счастье. Т.е. данные венда будет слать не в свою микросхему, реализующую LPT порт, а в этот контроллер посредством драйвера. У меня уже есть такой конвертер для COM порта (причем того же производителя), и все работает на ура.
Только в случае с этим девайсом я получаю драйвер для принтера, а не виртуального LPT порта.

---

Т.е. если нет драйвера, позволяющего создать в венде виртуальный LPT порт на основе этого конвертера, то мне он ни к чему, я правильно понял?


Мы рождены, чтоб сказку сделать былью
"Кто не обломался, тем еще предстоит"


Сообщение отредактировал KOE - Воскресенье, 2008-02-03, 20:08:13
 
fk0Дата: Воскресенье, 2008-02-03, 20:33:38 | Сообщение # 6
Активист
Группа: Человеки
Сообщений: 178
Репутация: 0
Статус: Offline
Куда, какая программа, чего будет слать? Ты вообще понимаешь как это работает?
Прочтение М. Гука (Аппаратное обеспечение ИБМ-ПЦ) и Абеля (программирование на ассемблере ИБМ-ПЦ) рекомендуетеся...

Какой, нафиг, виртуальный порт? НЕТ ТАКОГО ПОНЯТИЯ даже. Есть "устройство" в том виде как оно было в древнем ламуксе образца 1970 года. Ничего не изменилось. И только тот функционал который оно даёт через read/write/ioctl доступен прикладным программам. Твои же программы никакой файл не используют, они тупо выполняют mov dx, #0x378 и outb(dx), al. Только это НЕ РАБОТАЕТ ни в одной ОС, без костылей и подпорок разного рода, ибо в защищённом режиме, ну ты уж должен догадываться, outb не вызывает исключение, если только там какие-то биты в дескрипторе сегмента не стоят, только и этого мало... В ламуксе есть /dev/port если что, и также iopl(). В виндах хитрый драйвер как-то эмулирует (отлавливая исключения? не в курсе).
Да, но в том же ламуксе НОРМАЛЬНЫЕ программы лезут в /dev/parport в котором возможность
дёргания ножками просто заложена.

(и я тихо помалкиваю, что 378 или ещё какой порт может образоваться только после конфигурения PCI устройства, а его никто не будет делать ДО загрузки соответствующего драйвера, ну в том же ламуксе, а к драйверу может подтянуться и lpd который будет иметь своё мнение как нужно ножками дёргать, через /dev/lp...)

Quote

квартусе и будет мне счастье. Т.е. данные венда будет слать не в свою микросхему, реализующую LPT порт, а в этот контроллер посредством драйвера. У меня уже есть такой конвертер для COM порта (причем того же производителя), и все работает на ура.

Ты точно уверен, что понимаешь как это работает? Deathsoft выше описал почему так.

Quote

Т.е. если нет драйвера, позволяющего создать в венде виртуальный LPT порт на основе этого конвертера, то мне он ни к чему, я правильно понял?

Я не разбираюсь в виндах настолько. НО ЧТО ТАКОЕ *ДРАЙВЕР ВИРТУАЛЬНОГО ПОРТА* ???
Что такое вообще порт? \\Device\\LPTxxx наверняка есть (а может так всё плохо, что и действительно нет...) Но туда поток байтов писать положено, а не ножками дёргать. Как-то же
пресловутая libieee<номер забыл> работает. Или она с этим чудом тоже не работает.

Я смутно догадываюсь, deathsoft хотел скаать, что в виндах есть только /dev/lp, а /dev/parport нет. Поэтому и лезут напрямую. /dev/lp только печатать на принтер предназначен (вот т.е. cat file.txt > /dev/lp распечатает файл и будет как положено на каждом байте стробом дёргать и busy проверять).
А /dev/ttySn (ну т.е. \\Device\\COMn) в виндах не только байтики посылать умеет но ещё поменять и считать состояние сигнальных линий через ioctl(), посему напрямую в соответствующий порт микропроцессора никто и не лезет.


[САМОЗАБАНЕН]

Сообщение отредактировал fk0 - Воскресенье, 2008-02-03, 20:46:59
 
deathsoftДата: Воскресенье, 2008-02-03, 20:58:50 | Сообщение # 7
Retry, Abort, Ignore?
Группа: Человеки
Сообщений: 1587
Репутация: 9
Статус: Offline
Quote (fk0)
Что такое вообще порт? \\Device\\LPTxxx наверняка есть (а может так всё плохо, что и действительно нет...) Но туда поток байтов писать положено, а не ножками дёргать. Как-то же пресловутая libieee<номер забыл> работает. Или она с этим чудом тоже не работает.

Я смутно догадываюсь, deathsoft хотел скаать, что в виндах есть только /dev/lp, а /dev/parport нет. Поэтому и лезут напрямую. /dev/lp только печатать на принтер предназначен (вот т.е. cat file.txt > /dev/lp распечатает файл и будет как положено на каждом байте стробом дёргать и busy проверять). А /dev/ttySn (ну т.е. \\Device\\COMn) в виндах не только байтики посылать умеет но ещё поменять и считать состояние сигнальных линий через ioctl(), посему напрямую в соответствующий порт микропроцессора никто и не лезет.

Именно это и хотел сказать, что писать в LPT порт без протокола обмена (как например с принтером) в RAW режиме (т.е. дергать ножками) нельзя. Через Read/Write поддерживается только работа по стандартным протоколам (принтер/ и всякие ecp/epp устройства, которые работают в соответствии с ieee1284 а не просто хаотично дергают ножками).

Более того квартус работает вообще через свой драйвер и открывает устройство \Device\ALPT в которое пишет через свои ioctl, такую работу можно проэмулировать и через кабель купленый КОЕ, только придется написать собственный драйвер, который транслирует иоцтл используемые квартусом в передачу байтов по USB, ну и имя девайса делает ALPT1.

 
deathsoftДата: Воскресенье, 2008-02-03, 21:06:32 | Сообщение # 8
Retry, Abort, Ignore?
Группа: Человеки
Сообщений: 1587
Репутация: 9
Статус: Offline
Quote (KOE)
У меня уже есть такой конвертер для COM порта (причем того же производителя), и все работает на ура.

Для RS-232 протокол обмена с устройствами стандартизирован, плюс, как уже писал fk0, есть ioctl для управления сигналами типа DTR/RTS, для LPT же стандартизирован был только протокол обмена с принтером (ну и потом уже со всякими сканерами и внешними дисками). Программатор реализует свой - нестандартный протокол, а именно эмулирует интерфейс типа SPI на ножках LPT порта, там программно генерируется клок и передается один бит данных (синхронный последовательный протокол). Если сделать это через ioctl (я делал тако драйвер) то будет - очень медлено, т.к. на передачу каждого байта нужно переключаться из юзермода в кернельмод.

Стандартные драйвера от квартуса делают по другому. Вначале заполняется массив с данными которые нужно вывести в порт, затем драйвер выводит сразу подготовленый буфер, в это время готовится следующий буфер, при этом количество переключений узермоде/кернель моде - значительно меньше.

Вот типа устройств поддерживаемых стандартным драйвером в винде http://msdn2.microsoft.com/en-us/library/ms798338.aspx

Сообщение отредактировал deathsoft - Воскресенье, 2008-02-03, 21:10:33
 
KOEДата: Воскресенье, 2008-02-03, 21:30:39 | Сообщение # 9
Retry, Abort, Ignore?
Группа: Человеки
Сообщений: 2318
Репутация: 5
Статус: Offline
Quote (fk0)
Ты точно уверен, что понимаешь как это работает?

Нет, не точно. Точнее, вообще понятия не имею, как оно работает (если б знал точно, то не задавал бы тупых вопросов). И в данном случае мне оно пофиг, если честно. А нужно это дело было для прошивания микросхем. Переписывать драйвера и т.д. я, разумеется, не буду, потому как не умею этого делать.


Мы рождены, чтоб сказку сделать былью
"Кто не обломался, тем еще предстоит"


Сообщение отредактировал KOE - Воскресенье, 2008-02-03, 21:33:14
 
lvdДата: Воскресенье, 2008-02-03, 23:15:12 | Сообщение # 10
Retry, Abort, Ignore?
Группа: Человеки
Сообщений: 2528
Репутация: 13
Статус: Offline
Вот жеж мозгоЙОбы... Всё-то они знают, только толку от них, как обычно, минус ноль процентов...

KOE, у тебя в ноуте пцмциа есть? Вроде бы есть мультикарточки в туда, и вроде бы они даже и 0х378 умеют.

PS: А у мну ноут с лпт и комом... и из-под винды (мозгоЙОбам приготовиться брызгать слюной и плеваться! :)) при помощи inpout32.dll прекрасно за 0x378 ножками дёргается... Разумеется, и квартусы всякие работают ;-)


Многого нет здесь: http://lvd.nedopc.com
 
KOEДата: Воскресенье, 2008-02-03, 23:39:02 | Сообщение # 11
Retry, Abort, Ignore?
Группа: Человеки
Сообщений: 2318
Репутация: 5
Статус: Offline
Quote (lvd)
Вот жеж мозгоЙОбы... Всё-то они знают, только толку от них, как обычно, минус ноль процентов...

Угу, как проблема была, так и осталась.

Quote (lvd)
KOE, у тебя в ноуте пцмциа есть?

Йэстъ.

Quote (lvd)
Вроде бы есть мультикарточки в туда, и вроде бы они даже и 0х378 умеют.

Подумаю. Хотя не особенно и нужно, если по делу, то и с десктопа микрухи можно прошивать. Но хочеццо и с ноута, конечно.

Quote (lvd)
А у мну ноут с лпт и комом...

Щас такое счастье не достать уже.


Мы рождены, чтоб сказку сделать былью
"Кто не обломался, тем еще предстоит"
 
CHRVДата: Понедельник, 2008-02-04, 00:03:13 | Сообщение # 12
Желесяка
Группа: Человеки
Сообщений: 631
Репутация: 3
Статус: Offline
У меня есть соответствующие микрухи PL2305 (Prolific). Скорее всего это сделано на базе него, кстати интерсесно что внутри :).

Многое есть здесь: www.nedopc.com
 
KOEДата: Понедельник, 2008-02-04, 00:20:27 | Сообщение # 13
Retry, Abort, Ignore?
Группа: Человеки
Сообщений: 2318
Репутация: 5
Статус: Offline
Quote (CHRV)
У меня есть соответствующие микрухи PL2305 (Prolific). Скорее всего это сделано на базе него, кстати интерсесно что внутри :).

В комплекте драйвера от profilic, внутри 1 микросхема китайская с левой маркировкой (думаю, аналог) и кварц. Драйвера с диска, прилагавшегося к девайсу, в win98 не работают (выдает ошибку типа девайс не подключен либо не работает либо не все драйвера установлены). В любой венде старше 98 девайс определяется как usb принтер и прекрасно работает (в смысле, печатает, если к нему принтер подключить).


Мы рождены, чтоб сказку сделать былью
"Кто не обломался, тем еще предстоит"
 
lvdДата: Понедельник, 2008-02-04, 00:21:31 | Сообщение # 14
Retry, Abort, Ignore?
Группа: Человеки
Сообщений: 2528
Репутация: 13
Статус: Offline
Quote (KOE)
Щас такое счастье не достать уже.

Ну не такой уж и древний. 2005ого года. Гнусмас. Специально такой выбирал. =)


Многого нет здесь: http://lvd.nedopc.com
 
KOEДата: Понедельник, 2008-02-04, 00:27:22 | Сообщение # 15
Retry, Abort, Ignore?
Группа: Человеки
Сообщений: 2318
Репутация: 5
Статус: Offline
Quote (lvd)
Ну не такой уж и древний. 2005ого года. Гнусмас. Специально такой выбирал. =)

Искал, делал поиск по моделям с ком и лпт. Затем искал эти модели в торгующих фирмах. Либо нет вообще, либо цены за полтинник.


Мы рождены, чтоб сказку сделать былью
"Кто не обломался, тем еще предстоит"
 
ZX-Форум » Hardware » Hardware » USB -> LPT
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

the DLCorp © 2006