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

boorick - Про MinGW и LPT

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




Рейтинг блогов

Январь 23, 2009


Previous Entry В избранное Поделиться Next Entry
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. В общем вот.

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

Comments:


From:[info]qtblog.ru
Date:Июнь 29, 2009 09:49 am none (UTC)
(Link)
Программировать на WinAPI дело еще то. А за QT +1
From:(Anonymous)
Date:Январь 24, 2010 12:25 am none (UTC)
(Link)
Долго искал эту информацию, именно на MinGW и именно под винду.
Очень помогли, большое спасибо.
Все получилось.

> Go to Top
LiveJournal.com
Download guide