ЗАО «ЗЭО»

Пожалуйста, войдите или зарегистрируйтесь.

Расширенный поиск  

Новости:

Автор Тема: Матричная клавиатура  (Прочитано 3972 раз)

0 Пользователей и 1 Гость просматривают эту тему.

squir

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 4
Матричная клавиатура
« : 08 Февраля, 2011, 16:16:06 »

Добрый день!

Спаяли тут матричную клавиатурку 4 на 4, подключили  к Тион-про2, на форуме была информация что все вроде должно работать. Подскажите, пожалуйста, как с ней взаимодействовать? Может у Вас есть какие-нибудь тестовые примеры?

Заранее спасибо.
Записан

asv

  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1405
Re: Матричная клавиатура
« Ответ #1 : 08 Февраля, 2011, 19:32:26 »

1. Если всё правильно соединено, то при нажатии на кнопу в консоли (которая на экране, а не через последовательный порт) будет выводиться соотв. кнопке символ. Читать с клавиатуры как с обычной (getc() и т.п., поток ввода нужно перевести из режима буферизации по строкам), см. http://c-faq.com/osdep/cbreak.html

2. Или читать из /dev/input/eventX, если в ядре включён evdev.

/* Read input event from /dev/input/eventX */

#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>

#include <linux/input.h>

int
main (int argc, char *argv[])
{
int fd;
struct input_event ie;

if (argc < 2) {
fprintf (stdout, "Need input event character device, e.g. /dev/input/event1\n");
exit (1);
}

if ((fd = open (argv[1], O_RDONLY)) < 0) {
perror (argv[1]);
exit (2);
}

while (1) {
if (read (fd, &ie, sizeof(struct input_event)) < 0)
exit (3);

#if 1
printf ("val %x, type %x, code %x\n", ie.value, ie.type, ie.code);
#endif
/* Button pressed */
if (ie.code == 0x100 && ie.value)
exit (0);
}

return 1;
}


Записан