LINUX.ORG.RU

Открыть устройство клавиатуры.


0

0

Из теории что я знаю.. 1)при создании процесса процессу передаются 3 открытых дискриптора: 0 - дискриптор ввода ( stdin ), 1 - дискриптор вывода ( stdout ) и 2 - дискриптор вывода ошибки ( stderr ). 2)stdin это как правило клавиатура. Стоит задача для embedded системы у которой есть консоль присоединённая на /dev/ttyS0 организовать ввод с клавиатуры, реализованной посредством драйвера matrix_keypad ( аппаратно это линии GPIO и простая матрица кнопок. Работоспособность кнопок проверенна путём распечатки логов из модуля ядра. То есть клавиатура работает.) Задача присоединить драйвер к tty . Может кто то что подскажет ??

★★

или «/my/prog </dev/ttyS0», или я чего-то не понял…

arsi ★★★★★
()

>>1)при создании процесса процессу передаются 3 открытых дискриптора: 0 - дискриптор ввода ( stdin ), 1 - дискриптор вывода ( stdout ) и 2 - дискриптор вывода ошибки ( stderr ).

Не передаются, а наследуются. Обычно шелл форкается, меняет если надо эти дескрипторы, и делает exec, после чего открытые десрипторы наследуются процессом. Я не особо понял проблему. Если тебе надо на дескриптор ввода повесить свою клаву - в чем проблема? Закрой десриптор ввода и открой клаву с этим дескриптором на этом же номере.

MuZHiK-2 ★★★★
()
Ответ на: комментарий от MuZHiK-2

>> Я не особо понял проблему. Если тебе надо на дескриптор ввода повесить свою клаву - в чем проблема? Закрой десриптор ввода и открой клаву с этим дескриптором на этом же номeром А вот с этого места поподгобнее а точнее какой файл у неё будет.

alexsy ★★
() автор топика
Ответ на: комментарий от alexsy

Какой укажешь, такой и будет

>>А вот с этого места поподгобнее а точнее какой файл у неё будет.

Открываешь девайс своей клавы обычным int kbfd = open(/dev/ttyS0) - подставь нужный девайс и нужный режим открытия. Потом просто дублируешь этот дескриптор на поток ввода, то есть dup2(kbfd, stdin). Теперь на потоке ввода висит файл девайса твоей клавы. Оно?

MuZHiK-2 ★★★★
()

>организовать ввод с клавиатуры, реализованной посредством драйвера matrix_keypad ( аппаратно это линии GPIO и простая матрица кнопок.
вот и смотри, какой девайс создает этот драйвер в /dev/
с него и перенаправляй вывод

int kbfd = open(/dev/ttyS0)

ttyS0 - это, как правило, COM-порт, т.е. UART, а не GPIO.

xydo ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.