2010-09-19 3 views
0

Я попытался запустить следующий код на своем ПК. С PORT 0x378 (данные LPT1) он отлично работает. Но с PORT 0x379 (статус LPT1) он всегда возвращает 126 независимо от того, что я выводил в предыдущей строке. 0x37A работает тоже. У меня Windows XPinpou32.dll не работает на моем компьютере

#define PORT 0x379 
#define DATA 255 
int main(int argc, char *argv[]) 
{ 
    Input input; 
    Output output; 
    HINSTANCE hInstLib = LoadLibrary(TEXT("inpout32.dll")); 
    if (!hInstLib) 
    { 
     printf("No dll.\n"); 
     system("PAUSE"); 
     return 1; 
    } 
    input = (Input)GetProcAddress(hInstLib, "Inp32"); 
    output = (Output)GetProcAddress(hInstLib, "Out32"); 
    if (!input || !output) 
    { 
     printf("No funcion.\n"); 
     FreeLibrary(hInstLib); 
     system("PAUSE"); 
     return 1; 
    } 
    output(PORT, DATA); 
    printf("status: %i\n", input(PORT)); 
    FreeLibrary(hInstLib); 
    system("PAUSE"); 
    return EXIT_SUCCESS; 
} 

ответ

0

порт 0x379 является входного порта. Вы не можете изменить значение, которое оно сообщает в программном обеспечении, на самом деле вам нужно наложить напряжение на контакты 10, 11, 12, 13 или 15. Соответственно сигналы Ack, * Busy, PaperOut, Select и Error.

+0

Спасибо, я этого не знал. Я положил напряжение на эти контакты, и это сработало. – hencz

Смежные вопросы