LPT1 - HASP Мучаем LPT!

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Harbinger
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 15.01.2004 (Чт) 12:51
Откуда: Санкт-Петербург

LPT1 - HASP Мучаем LPT!

Сообщение Harbinger » 06.02.2004 (Пт) 12:47

Добрый день! Есть один интересный вопрос. На сегодняшний день практически все знают про программу автоматизации бухгалтерского учета 1С Предприятие. Работает она только при наличии HASP ключа, который подключается к LPT1 (IRQ7 как правило, если в БИОСЕ ничего не менялось). HASP ключ представляет собой "как-бы" переходник и к нему сводно может быть подключен любой принтер.

:?: ВОПРОС: Если отключить принтер, можно ли каким-нибудь способом через VB 60 отследить, что за данные текут с этого порта (именно от HASPA), и можно ли каким-нибудь образом этот поток съэмулировать.
(Может быть есть какие-нибудь API-функции для работы с LPT-портами... подскажите...)

P.S. Данный вопрос рассматривается не сцелью взолма, а с ЦЕЛЬЮ ПОЛУЧЕНИЯ ЗНИНИЙ В ЭТОЙ ОБЛАСТИ. :roll:

Буду благодарен за любую информацию... :arrow:
С уважением Валера.
Мозги даны каждому, но не каждый может ими воспользоваться...

kif
Постоялец
Постоялец
 
Сообщения: 736
Зарегистрирован: 10.12.2001 (Пн) 18:06
Откуда: Украина, Одесса

Сообщение kif » 06.02.2004 (Пт) 12:53

я предполагаю, что у потока данных на принтер(и обратно) и у потока с хаспа разные идентификаторы.

а для работы с LPT на vbrussian.com есть примерчик
там испольуется библиотека inout32.dll и запись происходит непосредственно в порты передачи и приема

вот так вот


кстати, его очень легко спалить!!!!!!!!!!!!!! (из личного опыта)
Братья и сестры, что вы делаете???
Ведь вы же братья и сестры.

Harbinger
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 15.01.2004 (Чт) 12:51
Откуда: Санкт-Петербург

Сообщение Harbinger » 06.02.2004 (Пт) 13:05

Легко спалить сам ХАСП???
Мозги даны каждому, но не каждый может ими воспользоваться...

Harbinger
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 15.01.2004 (Чт) 12:51
Откуда: Санкт-Петербург

Сообщение Harbinger » 06.02.2004 (Пт) 13:05

Легко спалить сам ХАСП???
Мозги даны каждому, но не каждый может ими воспользоваться...

Sergey-13
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 119
Зарегистрирован: 23.01.2004 (Пт) 16:02
Откуда: Саранск

Сообщение Sergey-13 » 06.02.2004 (Пт) 15:16

Перед пограммированием обязательно изучи ПИНЫ LPT и ни чего не сгорит, не боись. И с умом передавай на него код, не перепутай, некоторые ПИНЫ не допускают установку в 1.

Sergey-13
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 119
Зарегистрирован: 23.01.2004 (Пт) 16:02
Откуда: Саранск

Сообщение Sergey-13 » 06.02.2004 (Пт) 19:00

копируй DLL ну а как ей пользоваться ищи в инете если будет время скину код
кочай здесь www.msn13.narod.ru/DLPORTIO.dll[/quote]

Sergey-13
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 119
Зарегистрирован: 23.01.2004 (Пт) 16:02
Откуда: Саранск

Сообщение Sergey-13 » 09.02.2004 (Пн) 12:01

Ну как и обещал! Пользуйтесь!




'декларация всех внешних функций

Public Declare Function DlPortReadPortUchar Lib "dlportio.dll" (ByVal Port As Long) As Byte
Public Declare Sub DlPortWritePortUchar Lib "dlportio.dll" (ByVal Port As Long, ByVal Value As Byte)


Public Declare Function DlPortReadPortUchar Lib "dlportio.dll" (ByVal Port As

Long) As Byte
Public Declare Function DlPortReadPortUshort Lib "dlportio.dll" (ByVal Port As

Long) As Integer
Public Declare Function DlPortReadPortUlong Lib "dlportio.dll" (ByVal Port As

Long) As Long

Public Declare Sub DlPortReadPortBufferUchar Lib "dlportio.dll" (ByVal Port As

Long, Buffer As Any, ByVal Count As Long)
Public Declare Sub DlPortReadPortBufferUshort Lib "dlportio.dll" (ByVal Port

As Long, Buffer As Any, ByVal Count As Long)
Public Declare Sub DlPortReadPortBufferUlong Lib "dlportio.dll" (ByVal Port As

Long, Buffer As Any, ByVal Count As Long)

Public Declare Sub DlPortWritePortUchar Lib "dlportio.dll" (ByVal Port As

Long, ByVal Value As Byte)
Public Declare Sub DlPortWritePortUshort Lib "dlportio.dll" (ByVal Port As

Long, ByVal Value As Integer)
Public Declare Sub DlPortWritePortUlong Lib "dlportio.dll" (ByVal Port As

Long, ByVal Value As Long)

Public Declare Sub DlPortWritePortBufferUchar Lib "dlportio.dll" (ByVal Port

As Long, Buffer As Any, ByVal Count As Long)
Public Declare Sub DlPortWritePortBufferUshort Lib "dlportio.dll" (ByVal Port

As Long, Buffer As Any, ByVal Count As Long)
Public Declare Sub DlPortWritePortBufferUlong Lib "dlportio.dll" (ByVal Port

As Long, Buffer As Any, ByVal Count As Long)




'достаточно будет

Public Declare Function DlPortReadPortUchar Lib "dlportio.dll" (ByVal Port As Long) As Byte
Public Declare Sub DlPortWritePortUchar Lib "dlportio.dll" (ByVal Port As Long, ByVal Value As Byte)



обращение из проги

'чтение
edtValue = Hex$(DlPortReadPortUchar(Val("&H" & edtAddr)))

'запись
DlPortWritePortUchar Val("&H" & edtAddr), Val("&H" & edtValue)
рекомендую перед записью считывать старое значение порта!!!!!


edtValue-Значение порта 16-ричный код

edtAddr-Адрес порта
для АТ, PS/2 и PC/XT
для СОМ1 от 3F8 до 3FF - взависимости от BIOS матери и т.д.
для LPT1 от 378 до 37F (LPT2 при наличии MDA)
для LPT2 от 278 до 27F (LPT3 при наличии MDA)

кодов USB-портов к сожелению нет.
Подробнее инфо по кодам портов ищи у М.Гука Архитектура IBM PC (2-е издание)
возможно уже есть более новые книги
если найдете код по USB, вышлете - если не затруднит.

надеюсь меня наградят! :twisted:

-=alp=-
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 147
Зарегистрирован: 08.03.2003 (Сб) 19:20

Сообщение -=alp=- » 09.02.2004 (Пн) 13:06

и мне тоже

p.s.
приведенная выше длл'ка не присоединяеться к проекту

Sergey-13
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 119
Зарегистрирован: 23.01.2004 (Пт) 16:02
Откуда: Саранск

Сообщение Sergey-13 » 09.02.2004 (Пн) 15:06

DLL необходимо скопировать в папку \WINDOWS\system!!! Регистрировать ее не надо!!
И все будет работать!

-=alp=-
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 147
Зарегистрирован: 08.03.2003 (Сб) 19:20

Сообщение -=alp=- » 11.02.2004 (Ср) 12:11

Говорит что dlportio.sys не загружен и не хочет работать.
Что бы я на порт не посылал ответ один FFFFFFFFFFFF.
Что делать?

Sergey-13
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 119
Зарегистрирован: 23.01.2004 (Пт) 16:02
Откуда: Саранск

Сообщение Sergey-13 » 11.02.2004 (Ср) 13:25

А удаеться ли тебе читать значение порта?

-=alp=-
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 147
Зарегистрирован: 08.03.2003 (Сб) 19:20

Сообщение -=alp=- » 11.02.2004 (Ср) 16:02

Мне ничего не удаёться считать с порта.

точнее считываеться только FFFFF

хотя я посылаю на порт команды (разные) со внешнего устройства

Sergey-13
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 119
Зарегистрирован: 23.01.2004 (Пт) 16:02
Откуда: Саранск

Сообщение Sergey-13 » 11.02.2004 (Ср) 17:05

напиши. как ты это делаешь.

-=alp=-
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 147
Зарегистрирован: 08.03.2003 (Сб) 19:20

Сообщение -=alp=- » 12.02.2004 (Чт) 13:38

вот код

в таймере

Private Sub Timer1_Timer()
edtValue = Hex$(DlPortReadPortUchar(Val("&H" & "378")))
Me.Caption = edtValue
End Sub

в модуле

'Public Declare Function DlPortReadPortUchar Lib "dlportio.dll" (ByVal Port As Long) As Byte
'Public Declare Sub DlPortWritePortUchar Lib "dlportio.dll" (ByVal Port As Long, ByVal Value As Byte)
Public Declare Function DlPortReadPortUshort Lib "dlportio.dll" (ByVal Port As Long) As Integer
Public Declare Function DlPortReadPortUlong Lib "dlportio.dll" (ByVal Port As Long) As Long

Public Declare Function DlPortReadPortUchar Lib "dlportio.dll" (ByVal Port As Long) As Byte
Public Declare Sub DlPortWritePortUchar Lib "dlportio.dll" (ByVal Port As Long, ByVal Value As Byte)

Sergey-13
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 119
Зарегистрирован: 23.01.2004 (Пт) 16:02
Откуда: Саранск

Сообщение Sergey-13 » 13.02.2004 (Пт) 12:38

Ошибка может крыться:
1. Таймер не успевает считать данные, т.е. после передачи данных на порт, данные снова сбрасываются. И естественно прога читает нули.

Уменьш прерывания таймера.

2. Твой ЛПТ сидит на другом адрессе! Я давал диапазон 378-37F, перебери все возможные.
378, 379, 37A, 37B, 37C, 37D, 37E

Этот код о длл тестировалась успешно мной на WIN95, 98, 2000!

Совет: попробуй повесить на сом порт мышь и по эксперементировать с ним, в управлении он проще.

Успехов.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 7

    TopList