WebMoney: WMZ Z294115950220 WMR R409981405661 WME E134003968233 |
Visa 4274 3200 2453 6495 |
Обычно ПК имеет как минимум 2 последовательных и 1 параллельный
интерфейс. Они являются специальными устройствами и отображаются
следующим образом:
Разница между /dev/ttyS* и /dev/cua* в способе вызова
open(). /dev/cua* предполагают использование как устройств вывода, и,
как следствие, имеют другие установки по умолчанию относительно
/dev/ttyS*. /dev/ttyS* инициализируются для входящих и
выходящих сигналов. По умолчанию устройства являются управляющими
устройствами для процесса, их открывающего. Обычно ioctl() обрабатывает все
эти специальные устройства, однако POSIX предпочитает определение новых
функций для асинхронных терминалов. Эти функции жестко привязаны к структуре
termios. Оба варианта требуют подключения termios.h.
Мышь подключается как к последовательному порту, так и напрямую к
шине. Разные типы мышек посылают разные типы данных, что немного
усложняет программирование. Однако, Эндрю Хэйлет (Andrew Haylett) был
так добр, что поставил общий копирайт на свою программу selection, то
есть вы можете использовать его функции работы с мышью. В этом
руководстве вы найдете пре-релиз selection-1.8 с пометкой COPYRIGHT.
Правда, X11 уже предложили удобный API мышки, поэтому программы
Эндрю следует использовать только для не-X11 приложений. Из пакета
selection вам потребуются только модули mouse.h и mouse.c.
Для получения событий от мыши вам необходимы ms_init() и
get_ms_event(). ms_init() требует следующих 10 аргументов.
get_ms_event() нуждается только в указателе на структуру ms_event. Если
get_ms_event() возвращает -1, то произошла ошибка. В случае успеха
возвращается 0, а ms_event содержит текущее состояние мыши.
Используйте Hayes Commands для управления модемом. Для контроля
порта rs232 вам потребуется termios. Смотри пример miniterm.c.
Смотрите пример checklp.c. Не используйте termios для управления
принтерного порта, пользуйтесь ioctl, inb/outnb, если необходимо,
команды Epson, Postscript, PCL и т.д. в linux/lp.h
вызовы ioctl: LPCHAR, LPTIME, LPABORT, LPSETIRQ, LPGETIRQ, LPWAIT
inb и outb определяют статус и управляют портом.
Смотрите пример js.c в модуле для джойстика пакета ядра.
linux/joistick.h вызовы ioctl: JS_SET_CAL, JS_GET_CAL,
JS_SET_TIMEOUT, JS_GET_TIMEOUT, JS_SET_TIMELIMIT, JS_GET_TIMELIMIT,
JS_GET_ALL, JS_SET_ALL. Операция чтения /dev/jsn возвращает структуру
JS_DATA_TYPE.
Вперед: 10 Перенос прикладных
программ в Linux
Оглавление:
Назад: 8 Символьная графика
9 Программирование портов
ввода/вывода
TCSBRK, TCSBRKP, TCGETA (get attributes: получить атрибуты),
TCSETA (set attributes: установить атрибуты); Запросы управления
вводом/выводом терминала (terminal I/O control: TIOC): TIOCGSOFTCAR
($get soft carrier$), TIOCSSOFTCAR ($setsoftcarrier$), TIOCSCTTY (set
controlling tty: установка управления tty), TIOCMGET (get
modemlines), TIOCMSET, TIOCGSERIAL, TIOCSSERIAL, TIOCSERCONFIG,
TIOCSERGWILD, TIOCSERGSTRUCT, TIOCMBIS, TIOCMBIC, ...
tcgetattr(), tcsetattr(), tcsendbreak(), tcdrain(), tcflush(),
tcflow(), tcgetpgrp(), tcsetpgrp() cfsetispeed(), fgetispeed(),
cfgetospeed(), cfsetispeed(), cfgetispeed(), cfsetospeed(), cfgetospeed()
outb, inb для нестандартных устройств, например, для
использования принтерного порта не для принтера.9.1 Программирование мыши
Ускоряющий множитель. Если вы передвигаете курсор более, чем на
delta пикселов, то движение ускоряется в зависимости от этого
коэффициента.
Скорость передачи данных мыши (обычно 1200 bps)
Число пикселов, на которые сдвинется курсор, для активизации ускорения.
Имя устройства (например, /dev/mouse).
Выключатель DTR, RTS или и DTR и RTS каналов мыши и модема при
инициализации (обычно 0).
Разрешение мыши в dpi (обычно 100).
Идентификатор присоединенной мыши, вроде P_MSC (Mouse Systems Corp.).
Если равно -1, то курсор застопоривается на границах экрана; при
slack >=0 курсор выезжает с противоположной стороны, если он зашел за
пределы на slack пикселов.
Разрешение текущего терминала по x. Символы шрифта по умолчанию
имеют ширину 10 пикселов, поэтому полный режим по x равен 10*80-1.
Разрешение текущего терминала по y. Шрифт по умолчанию имеет символы высотой
12 пикселов, поэтому полное разрешение экрана по y 12*25-1 пиксел.9.2 Программирование модема
9.3 Программирование принтера
9.4 Программирование джойстика
Найди своих коллег! |