Linux доступ к ком порту

Linux доступ к ком порту

Когда Wine запускается, последовательные и параллельные порты определяются автоматически. Windows именует свои последовательные порты как COM, за которым идет номер, например COM1, COM2, и т. д. Подобным образом параллельные порты получают в Windows имя LPT с номером, как например LPT1. Linux, Mac и BSD имеют свои принципы назначения имен устройствам, но в каждом случае последовательные или параллельные порты размещаются в виде файлов нулевого размера в каталоге /dev. Вы можете увидеть отображение устройств Windows на устройства Unix, если просмотрите ~/.wine/dosdevices.

$ ls -l ~/.wine/dosdevices/ total 0 lrwxrwxrwx 1 alex alex 10 May 13 21:21 c: -> ../drive_c lrwxrwxrwx 1 alex alex 10 May 14 14:43 com1 -> /dev/ttyS0 lrwxrwxrwx 1 alex alex 10 May 14 14:43 com2 -> /dev/ttyS1 lrwxrwxrwx 1 alex alex 10 May 14 14:43 com3 -> /dev/ttyS2 lrwxrwxrwx 1 alex alex 10 May 14 14:43 com4 -> /dev/ttyS3 lrwxrwxrwx 1 alex alex 12 May 14 14:43 com5 -> /dev/ttyUSB0 lrwxrwxrwx 1 alex alex 8 May 13 21:22 d:: -> /dev/sr0 lrwxrwxrwx 1 alex alex 8 May 14 14:43 lpt1 -> /dev/lp0 lrwxrwxrwx 1 alex alex 1 May 13 21:21 z: -> / 

Убедитесь, что имеете достаточно прав для доступа к вашим последовательным и параллельным портам. На Linux пользователь должен быть членом группы sys или dialout, чтобы он мог получить доступ к последовательным портам, или членом группы lp для доступа к параллельным портам.

Чтобы поменять отображение устройств Wine по умолчанию, запустите wine regedit , и создайте строковые записи в HKEY_LOCAL_MACHINE\Software\Wine\Ports , где имя записи это имя устройства Windows, и значение записи это путь до устройства системы Unix. Если рассмотреть пример выше, то чтобы сделать COM1 соответствующим первому подключенному преобразователю USB-serial, создайте запись с именем COM1 и значением /dev/ttyUSB0. Также вы можете захотеть создать запись с именем COM5 без значения, чтобы удалить устройство COM5, которое теперь дублирует COM1. После редактирования реестра выгрузите Wine командой wineserver -k , и в следующий раз, когда Wine запустит программу, сделанные вами изменения вступят в силу.

Как добавить пользователя в группу sys:

$ sudo usermod -a -G sys имяпользователя $ grep sys: /etc/group sys:x:3:имяпользователя 

Перезагрузите компьютер, чтобы изменения вступили в силу.

Читайте также:  Linux удалить ненужные файлы

1. Serial and Parallel Ports site:wiki.winehq.org.

Источник

Работа с COM-портом (RS-232) в Linux

Урок посвящен интерфейсу RS-232, который в простонародье называют COM-порт. Мы разберемся как он представлен в Linux, какой у него интерфейс, научимся его конфигурировать, а также узнаем, что написание программы для коммуникации через COM-порт в Linux не представляет сложности.

Разговор o коммуникации через COM-порт в Linux следует начать с того, что заметить, что каждому COM-порту в операционной системе соответствует файл устройства телетайп или tty. Он находится в каталоге dev и имеет имя /dev/ttyS и номер. Если посмотреть на мой каталог, то мы увидим следующее, что у меня таких файлов очень много [0:55]. Но по факту, в моем компьютере есть один физический COM-порт. Давайте попробуем его найти. Сделать это можно с помощью команды dmesg, которая выводит сообщения с момента инициализации системы. Если набрать

$dmeg | grep «ttyS»

то мы увидим, что, в действительности , у меня только один файл ttyS4 связанный с конкретным COM-портом, у которого есть некоторый диапазон ввода/вывода, номер прерывания, и который сейчас настроен на скорость обмена 150200 бит в секунду (или бод).

Для того, чтобы сконфигурировать мой COM-порт по умолчанию в Linux можно воспользоваться программой mincom, запускать её нужно от суперпользователя, либо добавить текущего пользователя в группу dialout. Запустим

$sudo minicom -s

Ключ -s – обозначает конфигурацию (setup),

Здесь мы видим следующее [2:24]. Есть параметры последовательного порта, важно прописать правильно файл, то есть указать тот файл, который у вас в системе связан с физическим COM-портом, Второй важный момент – это настройка параметров обмена (ключ Е). Дело в том, что корректный обмен данными по последовательному соединению возможен только тогда, когда обе стороны имеют один и тот же набор параметров. В этом окне можно набор этих параметров менять [3:08]. Мы видим, что у нас задана скорость 8 бит, нет контроля четности, и один стоповый бит. Именно здесь можно это все увидеть и настроить так, как требуется или, как требует ваше устройство.

Сохраняем конфигурацию по умолчанию. Дальше будем взаимодействовать — сначала с помощью команды терминала, чтобы проверить, как вручную это работает; а потом напишем небольшую программу, которая будет слать данные в COM-порт. Выйти из Mincom можно набрав ctrl-A-X.

Читайте также:  Linux системное программирование pdf

Для того чтобы проверить, как работает COM-порт можно воспользоваться программой miniterm [4:03]. Я создал виртуальную машину с обычным linux, у неё указал, что в наличии имеется один COM-порт (это COM1), по умолчанию назначились линии обработки запросов прерывания. Я ассоциировал этот COM-порт с файлом на моей host-машине. С этого файла мы будем читать данные записанные в порт.

Итак, мы видим, что в левой части экрана у нас есть логин на виртуальную машину [4:46]. Давайте проверим с помощью minicom -s, как настроены коммуникации. Проверим, что /dev/ttyS0 – это действительно правильный физический порт – да, это именно так. Теперь мы можем вызвать команду

$sudo miniterm

она говорит, что есть следующие доступные порты, и просит ввести, через какой порт работать. Далее я попадаю терминал, связанный с COM-портом, где могу набирать текст. Набирая команды, я вижу «эхо» в моем файле справа. Обратите внимание, что я пишу в левом окне, а на экране надпись мы видим в правом. В левом окошке – виртуальная машина, на которой настроен порт. В правом – тот лог, который мы видим в файле ассоциированном с этим COM-портом на host-машине.

Создадим какой-нибудь каталог, в котором будем разрабатывать приложение. Как это ни странно, приложение будет выглядеть очень просто, потому что все действия, которые мы делаем с COM-портом в linux, это действия с файлами с использованием тех же самых файловых операций. Нам потребуется stdio.h, unistd.h, чтобы получить доступ – функциям open/read/write, fcntl.h, чтобы иметь возможность использовать файловые флажки. Открываем файловый дескриптор, COM-порт, имя, и флаги из COM-порта. Проверим, что файловый дескриптор у нас открылся, то есть если порт меньше или равен 0, то есть какая-то ошибка, оповестим об этом пользователя и вернем управление. В противном случае, можно писать в этот файловый дескриптор. write принимает файловый дескриптор, указатель на буфер, размер. Дальше мы закрываем файловый дескриптор и возвращаем управление. Приложение готово.

Теперь давайте попробуем запустить то, что у нас вышло, вернее, скомпилировать и запустить [10:40]. При запуске приложения произошла ошибка, но она вызвана понятными причинами, потому что пользователь должен был быть включен группу dialout [11:03], или нам надо запускать приложение от суперпользователя. Сделаем это. И сразу видим, что в нашем окошке появилась запись «hello world». Можно повторить и увидеть, что все работает корректно.

Читайте также:  Linux как узнать параметры ядра

Точно таким же образом можно осуществлять чтение из COM-порта, то есть использовать не функцию write, а функцию read.

Источник

How to connect to a serial port on Linux

Question: I need to access the management terminal of a hardware switch/router (e.g., Cisco Catalyst or HP ProCurve) via its console port. The switch console port is connected to the serial port of my Linux box. How can I connect to the serial port from a Linux terminal?

First of all, let’s assume that you have already connected the serial port of your Linux box to a switch console port via a serial cable.

To connect a Linux terminal to the serial port of your Linux system, you can use a command-line screen manager tool called screen .

Install screen on Linux

For Ubuntu, Debian or Linux Mint:

To install screen on Ubuntu, Debian or Linux Mint:

$ sudo apt-get install screen

For CentOS, Fedora or RHEL:

To install screen on CentOS, Fedora, or RHEL:

Connect to a Serial Port with screen utility

Traditionally in Linux, the first serial port (COM1) is assigned a name /dev/ttyS0 , the second serial port (COM2) assigned /dev/ttyS1 , etc. If you specify a serial port name as the first argument of the screen command, the current terminal window where you run screen will be directly connected to the serial port.

Thus, to connect to a serial port, simply run the following command from a terminal:

Optionally, you can specify baud rate (e.g., 1200, 9600, 19200) as the second parameter as follows.

Once connected to a serial port, you will then be able to access the switch console port from the terminal.

To terminate the current screen session, type Ctrl-A + k . If you want to temporarily detach from the screen session, type Ctrl-A + d . After detached, you can re-attached to the session later by running:

Support Xmodulo

This website is made possible by minimal ads and your gracious donation via PayPal or credit card

Please note that this article is published by Xmodulo.com under a Creative Commons Attribution-ShareAlike 3.0 Unported License. If you would like to use the whole or any part of this article, you need to cite this web page at Xmodulo.com as the original source.

Источник

Оцените статью
Adblock
detector