Доступ к аппаратному порту ПК из Java на Linux - PullRequest
1 голос
/ 19 января 2012

Что такое Java-на-Linux, эквивалентный функциям ввода / вывода аппаратного порта архитектуры ПК размером C байт?

Для вывода есть outb как в этом:

tmp = inb(0x61);
if (tmp != (tmp | 0x01)) 
    outb(0x61, tmp | 0x01);

Для ввода есть inb как в этом:

tmp = (inb(0x61) & 0xfe);
outb(0x61, tmp);

Цель: я хочу реализовать что-то, что требует меньше накладных расходов, чем это:

try { Runtime.getRuntime().exec("beep") } catch (IOException e) {}

в качестве альтернативы отправке кода 7 (символ звонка) на стандартный вывод, поскольку в Ubuntu он, по-видимому, агрессивно отключен. Звуковой сигнал инструментария также отключен.

1 Ответ

0 голосов
/ 19 января 2012

Я думаю, что вы лаете не на тот поезд.

Java - это объектно-ориентированный язык высокого уровня, компилируемый в архитектуру виртуальной машины. Инструкции ввода-вывода ассемблера зависят от аппаратного процессора. Между ними нет прямой эквивалентности.

Лучшее, на что вы можете надеяться, это связать ваш Java-код (используя каналы, разделяемую память, сокеты и т. Д.) С нативным приложением Linux, которое выполняет требуемый ввод-вывод.

...