Note
Development + C++ + Работа с LPT на С++
2014-02-25
Igor

С++ и inpout32.dll

Inpout32.dll - данная библиотека предоставляет возможность управления LPT портом из под ОС семейства NT.

Для работы с библиотекой ее необходимо подключить, делать это будем во время выполнения программы.

В следующем примере, мы отправим значение 255 (0xFF) на порт принтера LPT 1 (IEEE 1284), который обычно использует адресное пространство 0x378 (иногда бывает 0x3bc). Детальней про это можно узнать здесь.

*Кстати, много инфы можно взять, вот здесь.

 

#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <iostream.h>

    typedef short _stdcall (*inpfuncPtr)(short portaddr);
    typedef void _stdcall (*oupfuncPtr)(short portaddr, short datum);
         

    int main(void)
    {
	 	HINSTANCE hLib;
   		inpfuncPtr inp32;
	    oupfuncPtr oup32;
        
        
         hLib = LoadLibrary("inpout32.dll");
         if (hLib == NULL) {
              printf("LoadLibrary Failed.\n");
               Sleep(1000);
               return -1; 
         }
         inp32 = (inpfuncPtr) GetProcAddress(hLib, "Inp32");
         if (inp32 == NULL) {
              printf("GetProcAddress for Inp32 Failed.\n");
              Sleep(1000); 
              return -1; 
         }
         oup32 = (oupfuncPtr) GetProcAddress(hLib, "Out32");
         if (oup32 == NULL) {
              printf("GetProcAddress for Oup32 Failed.\n");
               Sleep(1000); 
               return -1;
         }
         
         // write 255 to 0x378
         oup32(0x378, 0xFF);
         
         Sleep(200);
         
         // read value from 0x378
         cout << inp32(0x378);
         
         FreeLibrary(hLib);
         return 0;
    }


Файл с библиотекой и исходником прикпреплен

 

Files:
id_50_lpt_cpp.zip 146987 bytes 2014-02-25