﻿# ЗАПУСК КМАЗС-ОФИС на Linux - разрешение на использование COM-порта

По умолчанию учётные записи пользователей в линуксе не обладают правами на работу с COM-портом.
Для того, чтобы программа КМАЗС-ОФИС, запущенная под какой-либо учётной записью пользователя, имела возможность
взаимодействовать с COM-портом, необходимо включить пользователя в группу dialout (в дистрибутивах на базе Debian/Ubuntu) 
или uucp (в дистрибутивах вроде Arch Linux или CentOS).

Для этого выполните в терминале команду:
sudo usermod -aG dialout $USER

Если требуется включить в группу dialout конкретного пользователя, то вместо $USER укажите имя этого пользователя.

Для того, чтобы группа dialout применилась к пользователю, необходимо завершить сеанс пользователя и авторизоваться заново (либо перезагрузить компьютер).

Внимание! Системного пользователя kmazs-service включать в группу dialout не требуется, поскольку это действие выполняется при инсталляции пакета kmazs-office-qt5

## Названия COM-портов в Linux

Для получения списка COM-портов используйте команду:
ls -l /dev/ttyS* (для физических портов) 
или 
ls -l /dev/ttyUSB* (для USB-переходников).

В Linux COM-порты ttyS0, ttyS1... соответствуют аппаратным портам COM1, COM2 и т.д.
ttyUSB0, ttyUSB1... соответствуют внешним устройствам, подключенным через USB-RS232 адаптеры.
Чтобы быстро увидеть только активные устройства, можно также использовать команду:
dmesg | grep tty

## Тестирование COM-порта

Тестирование COM-портов может потребоваться при подключении карт-ридеров, которые подключаются к 
COM-порту и автоматически отправляют в порт номер приложенной карты.

Команда настройки скорости СОМ-порта (из консоли):
stty 9600 -F /dev/ttyS1 raw -echo
либо такой вариант (с указанием 8 бит данных и стоп-бита):
stty -F /dev/ttyUSB0 cs8 cstopb -ixon raw speed 9600
Далее нужно открыть COM-порт (для прослушивания):
cat /dev/ttyS1
Если нужно что-то передать в СОМ-порт, нужно открыть другую консоль:
echo "1">/dev/ttyS1   - Внимание! команда НЕ совместима с SUDO!!!
Если в момент тестирования COM-порта текущий пользователь не входит в группу dialout, 
то можно предварительно ввести команду sudo su, либо использовать синтаксис:
sudo bash -c "echo 1 > /dev/ttyS1"

## Использование дополнительных утилит для тестирования COM-порта:

Для более удобного тестирования (особенно если важен двусторонний обмен или просмотр спецсимволов) часто рекомендуют 
использовать утилиты с интерфейсом, например minicom или screen:
screen /dev/ttyS1 9600

Это стандартные инструменты для работы с последовательными портами в Linux, которые значительно упрощают отладку по сравнению с ручным использованием cat и echo. Они есть в официальных репозиториях практически всех дистрибутивов. 
1. Minicom
Это классический полноэкранный терминал для COM-портов. Он позволяет не только видеть входящие данные, но и настраивать параметры порта через удобное меню. 
Установка:
Ubuntu/Debian: sudo apt install minicom
CentOS/RedHat: sudo dnf install minicom
Как использовать:
Запустите настройку: sudo minicom -s.
Выберите Serial port setup.
Укажите порт (нажмите A для ввода /dev/ttyS1) и скорость (нажмите E).
Отключите аппаратное управление потоком (Hardware Flow Control: No).
Сохраните настройки как стандартные (Save setup as dfl) и выберите Exit.
Выход: Ctrl+A, затем X. 

2. Screen
Универсальная утилита для управления консольными сессиями, которая умеет работать как простейший терминальный клиент. 
Установка:
Ubuntu/Debian: sudo apt install screen
CentOS/RedHat: sudo dnf install screen
Как использовать:
Просто укажите устройство и скорость:
screen /dev/ttyS1 9600
Выход: Нажмите Ctrl+A, затем сразу клавишу K (kill session) и подтвердите y. 
Что выбрать?
Minicom лучше, если нужно постоянно менять настройки (четность, стоп-биты) или работать в интерактивном режиме с меню.
Screen удобнее для быстрой проверки «взлетит или нет», так как он запускается одной короткой командой без предварительной конфигурации.