Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > работа с inpout32.dll в VB 6.0


Автор: Андрей62 8.12.2019, 15:02
Есть старенький, но хороший Pentium-4, решил использовать его как центр управления через LPT порт.
Для создания программы решил взять VB 6.0, т.к. что то другое для 32разрядного процессора не нашел.
На VB ранее не работал, хотя опыт в программировании имею, сразу, до глобального погружения в язык решил
исследовать возможность работы с портом. Сеть очень рекомендует библиотеку inpout32.dll, типа поместите
ее в папку с проектом, в крайнем случае в папку c:\Windows\system32\ и будет вам счастье, но счастье не пришло.
Что сделал: пытался подключить библиотеку через References, подключаться не хочет,  пытался зарегистрировать
библиотеку в системе командой regsvr32, говорит, что библиотеку то загрузила, но точки входа не определены.
Естественно, при обращении в процедуре к компонентам данной библиотеки, получаю сообщение компилятора,
что комментарии надо ставить после команды End Sub.
Качал штук 20 разных вариантов библиотеки inpout32.dll из разных источников - толку ноль, переустановил Windows XP -
тот же ноль, все, мои скудные знания закончились. 
Помогите кто чем может, мы не местные!

Автор: Akina 8.12.2019, 23:44
Цитата(Андрей62 @  8.12.2019,  16:02 Найти цитируемый пост)
точки входа не определены ... Windows XP

А библиотека точно совместима с XP?

Автор: Андрей62 9.12.2019, 14:30
Я качал библиотеки в интернете и выбирал для 32-разрядных процессоров, а вот по поводу ОС - бог его знает, но перебрал много.

Автор: Akina 9.12.2019, 16:05
Попробуй
Код

' в модуль
Public Declare Function Inp Lib "inpout32.dll" Alias "Inp32" (ByVal PortAddress As Integer) As Integer
Public Declare Sub Out Lib "inpout32.dll" Alias "Out32" (ByVal PortAddress As Integer, ByVal Value As Integer)


' в процедуру
Out int_port_num, int_out_data
int_in_data = Inp(int_port_num)

Автор: Андрей62 11.12.2019, 11:38
 в папке с проектом находится inpout32.dll размер 32К, производитель указан www.logix4u.net

В модуль вставил одну строку Public Declare Function ..... и запустил на выполнение, сразу получил на неё:
Compile Error:
    Only comments may apper after End Sub, End Function, or End Property

(У меня в VB6 не установлена база комментариев, она кажется MSDN называется)  

Автор: Akina 11.12.2019, 12:45
Цитата(Андрей62 @  11.12.2019,  12:38 Найти цитируемый пост)
сразу получил на неё

Для подобных деклараций лучше всего создавать отдельный модуль. В крайнем случае помещать в начало текущего модуля (и делать Private, вероятно), сразу после Option xxx и перед любыми Dim yyy. Но уж никак не в середину модуля. Также крайне нежелательно пихать это дело в модуль класса (в т.ч. модуль формы).

Автор: Андрей62 12.12.2019, 13:29
Все таки мне кажется,что бэйсик не видит библиотеку, пытался сделать:
Project - References - Browse - библиотека inpout32.dll
 Получаю: Не удается добавить ссылку на указанный файл
А почему не удается? Может быть он не годный или не тот что надо?
Какая должна быть библиотека для Pentium 4 (32 разряда) с установленной Win XP?

А вообще, спасибо вам Акина, вы единственный откликнулись. 

Автор: Akina 12.12.2019, 13:44
Цитата(Андрей62 @  12.12.2019,  14:29 Найти цитируемый пост)
пытался сделать:
Project - References - Browse - библиотека inpout32.dll
 Получаю: Не удается добавить ссылку на указанный файл

Ну я же вроде рассказал - как. И про референсы там не было ни полслова.
Цитата(Андрей62 @  12.12.2019,  14:29 Найти цитируемый пост)
А почему не удается?

А потому что это не тот тип библиотеки. 

Это как Windows API. Декларишь - работает, а подцепить как референс нельзя (те же функции из kernel32, к примеру).


Автор: Андрей62 13.12.2019, 17:10
Цитата

Это как Windows API. Декларишь - работает, а подцепить как референс нельзя (те же функции из kernel32, к примеру).

Спасибо, Акина, это твое последнее замечание поставило все на место. Объявление поместил в стандартный модуль, обращение в процедуру формы и все заработало.  
   Хочу вставить свои три копейки для таких же как я не имеющих знаний, чтобы порт LPT заработал на ввод/вывод из вашей программы
   в BIOSе зайдите в настройки периферии для параллельного порта поставьте - Enabled, Mode -EPP, Base I/O Address - 378, Interrupt - IRQ7
Может это кому нибудь поможет. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)