LPT-порт (C) Windows - PullRequest
       35

LPT-порт (C) Windows

0 голосов
/ 16 апреля 2020

В лабораторном наборе, чтобы сделать строку на LPT. Используется два кода. Один код принимает ошибку

    #include <windows.h>
#include <stdio.h>
int main() {
HANDLE hLPT = CreateFile("LPT1",
 GENERIC_WRITE,0,NULL,
 OPEN_EXISTING,
 FILE_ATTRIBUTE_NORMAL,NULL);
if (hLPT!=INVALID_HANDLE_VALUE) {
printf("LPT1 открыт\n");
char buffer[25];
memset(buffer,0,sizeof(buffer));
strcpy(buffer,"Test LPT ");
DWORD dw; OVERLAPPED ov; int i;
for (i = 0;i < 3;i++)
WriteFile(hLPT,buffer,sizeof(buffer),&dw,&ov);
CloseHandle(hLPT); }
else printf("Error \n");
return 0; }

В этом коде не работает __outbyte

#include <stdio.h>
#include <conio.h>
#include <unistd.h>
void InitLPTW (unsigned short Port)
{
__outbyte(Port, 0x0C); 
    usleep(1);
__outbyte(Port, 0x08); 
}
bool TestLPTW (unsigned short Port)
{
unsigned char dwResult = 0;
// читаем байт из порта
__inbyte(Port, &dwResult);
if ( ( dwResult & 0x10) == 0x01)
return true;
return false;
}
int main(int argc, char **argv)
{   
    return 0;
}

Что такое проблема? или как можно работать с LPT-портом?

1 Ответ

0 голосов
/ 16 апреля 2020

__inbyte и др. Не будут работать на современных ОС, включая Windows (если это не Windows 98 / ME или другая основанная на DOS). Это привилегированная инструкция, поэтому ее нельзя вызывать из приложения в пользовательском режиме.

Первый фрагмент в правильном направлении, go через него в delails и исправление указанных c ошибок.

...