УПРАВЛЕНИЕ ТЕРМИНАЛЬНЫМ ВВОДОМ/ВЫВОДОМ

Содержание

Слайд 2

ЦЕЛИ РАЗДЕЛА

По завершении этого раздела вы будете способны:
описать аппаратный и

ЦЕЛИ РАЗДЕЛА По завершении этого раздела вы будете способны: описать аппаратный и
программный интерфейс терминального ввода/вывода
изменять характеристики терминального интерфейса ввода/вывода

Слайд 3

ПРОГРАММНЫЙ ИНТЕРФЕЙС ВВОДА/ВЫВОДА

open(2)
/dev/term/xx
/dev/pty
/dev/tty
возвращает дескриптор файла
ioctl(2)
/usr/include/termio.h
termios(2)
/usr/include/termios.h
read(2)

ПРОГРАММНЫЙ ИНТЕРФЕЙС ВВОДА/ВЫВОДА open(2) /dev/term/xx /dev/pty /dev/tty возвращает дескриптор файла ioctl(2) /usr/include/termio.h

write(2)
close(2)

Слайд 4

ИСПОЛЬЗОВАНИЕ termios(2)

Параметры RS232
Отображение символов
Задержки и табуляции
Управление потоком
Управляющие символы

ИСПОЛЬЗОВАНИЕ termios(2) Параметры RS232 Отображение символов Задержки и табуляции Управление потоком Управляющие

Эхо
Немедленный ввод
"Сырой" терминальный ввод/вывод

Слайд 5

termios(2) - tcget/setattr

ИСПОЛЬЗОВАНИЕ
#include
int tcgetattr(int fildes,
struct termios *termios_p);
int tcsetattr(int

termios(2) - tcget/setattr ИСПОЛЬЗОВАНИЕ #include int tcgetattr(int fildes, struct termios *termios_p); int
fildes,
int optional_actions,
const struct termios *termios_p);
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
успех - 0
неуспех - -1 и errno установлена

Слайд 6

optional_actions

TCSANOW установить атрибуты немедленно
TCSADRAIN установить атрибуты после передачи содержимого буфера

optional_actions TCSANOW установить атрибуты немедленно TCSADRAIN установить атрибуты после передачи содержимого буфера
вывода
TCSAFLUSH установить атрибуты после передачи вывода и сброса ввода

Слайд 7

ПОРЯДОК ИЗМЕНЕНИЯ ТЕРМИНАЛЬНЫХ АТРИБУТОВ

2 struct termios tty, savetty;
3 fd =

ПОРЯДОК ИЗМЕНЕНИЯ ТЕРМИНАЛЬНЫХ АТРИБУТОВ 2 struct termios tty, savetty; 3 fd =
open("/dev/tty", O_RDWR);
4 tcgetattr(fd, &tty); 5 savetty = tty;
6 /* modify struct termios tty members */
7 tcsetattr(fd, TCSANOW, &tty);
8 /* use terminal */
9 tcsetattr(fd, TCSAFLUSH, &savetty);

Слайд 8

СТРУКТУРА termios

#define NCCS 19
struct termios {
tcflag_t c_iflag; /* input

СТРУКТУРА termios #define NCCS 19 struct termios { tcflag_t c_iflag; /* input
modes */
tcflag_t c_oflag; /* output modes */
tcflag_t c_cflag; /* control modes*/
tcflag_t c_lflag; /* local modes */
cc_t c_cc[NCCS]; /* control chars */
};

Слайд 9

Управляющие символы

индекс c_cc[индекс]
VINTR ETX (CTRL-C) в старых юниксах - DEL
VQUIT FS

Управляющие символы индекс c_cc[индекс] VINTR ETX (CTRL-C) в старых юниксах - DEL
(CTRL-|)
VERASE BS (CTRL-H) в старых юниксах - #
VWERASE ETB (CTRL-W)
VKILL NAK (CTRL-U) в старых юниксах - @
VEOF EOT (CTRL-D)
VSTOP DC1 (CTRL-S)
VSTART DC3 (CTRL-Q)
VSUSP EM (CTRL-Z)
VDISCARD SI (CTRL-O)
VLNEXT SYN (CTRL-V)
VREPRINT DC2 (CTRL-R)

Слайд 14

НЕКАНОНИЧЕСКИЙ ВВОД

Сбросить флаг ICANON в c_lflag
Установить MIN и TIME в

НЕКАНОНИЧЕСКИЙ ВВОД Сбросить флаг ICANON в c_lflag Установить MIN и TIME в
соответствующие значения.
MIN ссылается на c_cc[VMIN]
TIME ссылается на c_cc[VTIME]
MIN > 0, TIME > 0 MIN символов получено или истекло межсимвольное время
MIN > 0, TIME = 0 MIN символов получено, TIME не играет роли
MIN = 0, TIME > 0 один символ получен или истекло время с момента запроса
MIN = 0, TIME = 0 возвращает управление немедленно, считываются только те символы, которые уже находятся в буфере
Имя файла: УПРАВЛЕНИЕ-ТЕРМИНАЛЬНЫМ-ВВОДОМ/ВЫВОДОМ.pptx
Количество просмотров: 132
Количество скачиваний: 0