Параллельный порт с 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:,

Другие вопросы по тегам