Добрый вечер.
Необходимо разработать две программы, взаимодействующие с последовательным портом:
- как с файловым дескриптором;
- непосредственно через регистры последовательного порта.
Для первого используется <termios.h>
, для второго - <sys/io.h>
.
Однако проверить работоспособность в двух случаях оказалось невозможно: в первом случае /dev/ttyS*
и /dev/ttyUSB*
попросту не открываются, а во втором всякое чтение из регистра по адресу 0x3F8
возвращает байт 255
.
После такого открытия решил посмотреть доступные мне порты с помощью утилиты setserial
и получил следующий результат:
❯ sudo setserial -g /dev/ttyS[0123]
/dev/ttyS0, UART: unknown, Port: 0x03f8, IRQ: 4
/dev/ttyS1, UART: unknown, Port: 0x02f8, IRQ: 3
/dev/ttyS2, UART: unknown, Port: 0x03e8, IRQ: 4
/dev/ttyS3, UART: unknown, Port: 0x02e8, IRQ: 3
~
❯ sudo setserial -g /dev/ttyUSB[01]
zsh: no matches found: /dev/ttyUSB[01]
Вследствие этого возникает вопрос: связано ли такое поведение с отсутствием физических последовательных портов, и можно ли проверить работоспособность программ не в виртуальной машине?