Параллельный порт с C#
Я пытаюсь отправить данные на порт LPT1 с помощью программы на C#, к сожалению, безуспешно.. Я использую Windows 7 x64. Я пытался как x86 и x64 (inpoutx64.dll) DLL..
С x64 dll, когда я отправляю:
Output(888, 255);
Он просто продолжает программу, так как все прошло нормально, но я ничего не вижу на своем мультиметре (только статический 0,02 В)..
Я также попробовал следующее с C++:
int main () {
int val = 0;
printf("Enter a value\n");
scanf("%d", &val);
_outp(0x378, val);
getchar();
_outp(0x378, 0);
return 0; }
Но это исключение:
Unhandled exception at 0x01281428 in ppac.exe: 0xC0000096: Privileged instruction.
Я помню, как однажды я сделал что-то подобное на xp (C# не код C++), я надеюсь, что это возможно и на win7.. Пожалуйста, помогите мне с этим.
Благодарю.
1 ответ
Порт ввода-вывода в том смысле, как _outp
не то же самое, что вы пытаетесь сделать с параллельным портом. Порт ввода-вывода - это способ уровня процессора для получения прямого доступа к различным устройствам. Использование портов ввода-вывода с _outp
Предполагается, что это то, что делают драйверы устройств. Поэтому он является привилегированным (то есть только ядром) в любой версии Windows, которая достаточно современна, чтобы иметь хорошее разделение ядра / пространства пользователя (а именно, что-либо, основанное на Windows NT). Я почти на 100% уверен, что ты никогда не получил _outp
работать на XP.
Чтобы получить доступ к параллельному порту в коде высокого уровня, просто откройте его как обычный файл, используя имя файла LPT1:
,