Инициализация COM порта
COM порт в Linux представляет собой файл устройства. Типичное расположение такого файла\dev\ttySx
для обычного COM порта или \dev\ttyUSBx
дляUSB-RS переходника, где x = 0,1,2...
Встречаются также
\dev\ttyOSx
и др.Для начала работы COM порт необходимо открыть:
int F_ID = -1; open("\dev\ttyUSB0", O_RDWR | O_NOCTTY); if(F_ID == -1) { std::cout << strerror(errno) << std::endl; }Если
F_ID
отличается от -1
, значит COM порт открыт успешнои можно переходить к его настройке.
Чтение текущих настроек:
struct termios options; /*структура для установки порта*/ tcgetattr(F_ID, &options); /*читает пораметры порта*/Установка скорости:
cfsetispeed(&options, B57600); /*установка скорости порта*/ cfsetospeed(&options, B57600); /*установка скорости порта*/Установка таймаутов чтения:
options.c_cc[VTIME] = 20; /*Время ожидания байта 20*0.1 = 2 секунды */ options.c_cc[VMIN] = 0; /*минимальное число байт для чтения*/Установка других полезных (необходимых) параметров:
options.c_cflag &= ~PARENB; /*бит четности не используется*/ options.c_cflag &= ~CSTOPB; /*1 стоп бит */ options.c_cflag &= ~CSIZE; /*Размер байта*/ options.c_cflag |= CS8; /*8 бит*/ options.c_lflag = 0; options.c_oflag &= ~OPOST; /*Обязательно отключить постобработку*/ options.c_iflag = 0; options.c_iflag &= ~ (INLCR | IGNCR | ICRNL);Сохранение параметров:
tcsetattr(F_ID, TCSANOW, &options);
Чтение и отправка данных
Прочитать данные из COM порта: