boorick - Про MinGW и LPT

- Open ID
- Google
- Mail.ru
- Vkontakte

LiveJournal
Запомнить меня

Забыли пароль?

Создать аккаунт

Вы читаете журнал boorick

boorick - Про MinGW и LPT

> Свежие записи
> Архив
> Друзья
> Личная информация

Январь 23, 2009

05:51 pm - Про MinGW и LPT
Многим известно, что NT-подобные системы не разрешают прямой доступ к портам ввода/вывода из программ пользовательского уровня. Толи дело было раньше, под win95, 98, пишешь в свое удовольствие и радуешься. Но эти версии операционных систем ныне не поддерживаются, да и трудно уже найти машины под управлением этих осей.
Ниже работающий способ заставить собраться и функционировать программу с помощью пакета MinGW, которая сможет работать с портами ввода/вывода на pin-уровне.
#include <stdio.h>
#include <conio.h>
#include <windows.h>
/* прототипы функций */
typedef short (_stdcall *inpfuncPtr)(short portaddr);
typedef void (_stdcall *oupfuncPtr)(short portaddr, short datum);
int main(void)
{
HINSTANCE hLib;
inpfuncPtr inp32;
oupfuncPtr oup32;
/* Загружаем необходимую dll-ку */
hLib = LoadLibrary("inpout32.dll");
if (hLib == NULL) {
printf("LoadLibrary Failed.\n");
return -1;
}
/* получаем адрес функций */
inp32 = (inpfuncPtr) GetProcAddress(hLib, "Inp32");
if (inp32 == NULL) {
printf("GetProcAddress for Inp32 Failed.\n");
return -1;
}
oup32 = (oupfuncPtr) GetProcAddress(hLib, "Out32");
if (oup32 == NULL) {
printf("GetProcAddress for Oup32 Failed.\n");
return -1;
}
// дальше просто пример использования функций
// их у нас две:
// void oup32(short address, short data)
// short Inp32(short address)
(oup32)(0x378,0xFF);
printf(“0xFF was writed to LPT port\n”);
// при выходе не забыть выгрузить библиотеку
FreeLibrary(hLib);
return 0;
}
Осталось это все оформить в exe-шник:
> c++ -o lpt.exe lpt.cpp
И запустить получившийся lpt.exe. Ошибок быть не должно. По крайней мере у меня нет.
Собственно все.
PS: Почему MinGW? Да хотя бы потому, что я линуксоид, ну и потом бесплатно же ведь и нагляднее. Потом есть такая замечательная штука, как QT, которая просто уделала мелкомягковскую MFC. В общем вот.
Tags: c++, development, direct lpt access, mingw, nt

(2 комментария | Оставить комментарий)

## Comments:

From: | qtblog.ru
Date: | Июнь 29, 2009 09:49 am none (UTC)

| (Link)

Программировать на WinAPI дело еще то. А за QT +1
(Ответить) (Thread)

From: | (Anonymous)
Date: | Январь 24, 2010 12:25 am none (UTC)

| (Link)

Долго искал эту информацию, именно на MinGW и именно под винду.
Очень помогли, большое спасибо.
Все получилось.
(Ответить) (Thread)

> Go to Top

LiveJournal.com

Download guide