Как кошка знает скорость в бодах последовательного порта?

Каждый символ три байта шириной, как показано в этом xxd вывод:

$ xxd chinese-bytes
0000000: e6b4 9ee5 baad e6b9 96                   .........

split -b3 работы для меня.

$ split -b3 chinese-bytes
$ echo xa?
xaa xab xac
$ cat xaa; echo
洞
$ cat xab; echo
庭
$ cat xac; echo
湖
24
20.04.2013, 01:03
2 ответа

stty служебные наборы или отчеты о терминале характеристики ввода-вывода для устройства, которое является его стандартным входом. Эти характеристики используются при установлении соединения по тому конкретному носителю. cat не знает скорость в бодах как таковую, она скорее печатает на информации об экране, полученной от конкретного соединения.

Как пример stty -F /dev/ttyACM0 дает текущую скорость в бодах для ttyACM0 устройства.

35
27.01.2020, 19:41
  • 1
    , но как stty знал о скорости в бодах затем? Этот ответ только задерживает так или иначе вопрос, если скорость в бодах может быть автоматически обнаружена или была установлена в какой-то момент (т.е. через stty) –  humanityANDpeace 03.04.2018, 22:51
  • 2
    @humanityANDpeace я принимаю скорость в бодах по умолчанию, был тем, который я, оказалось, использовал. Я позже должен был изменить его через stty, когда я изменил скорость в бодах на устройстве. –  stanri 06.04.2018, 11:16

cat просто использование безотносительно настроек порт уже настроено для. С этим небольшим отрывком C Вы видите скорость в бодах, в настоящее время устанавливаемую для конкретного последовательного порта:

get-baud-rate.c

#include <termios.h>
#include <unistd.h>
#include <stdio.h>

int main() {
  struct termios tios;
  tcgetattr(0, &tios);
  speed_t ispeed = cfgetispeed(&tios);
  speed_t ospeed = cfgetospeed(&tios);
  printf("baud rate in: 0%o\n", ispeed);
  printf("baud rate out: 0%o\n", ospeed);
  return 0;
}

Выполнение это:

./get-baud-rate < /dev/ttyS0 # or whatever your serial port is

Числа, которые Вы получаете, могут искаться в /usr/include/asm-generic/termios.h, где существует #defines такой как B9600 и т.д. Обратите внимание что числа в заголовочном файле и в get-baud-rate вывод находится в восьмеричном.

Возможно, можно экспериментировать и видеть то, на что эти числа похожи на новой начальной загрузке и изменяются ли они позже.

9
27.01.2020, 19:41
  • 1
    я просто нашел stty команда, которая делает просто это. Например, stty -F /dev/ttyACM0 дает мне текущую скорость в бодах, которая корректна для моего устройства. –  stanri 19.04.2013, 12:33
  • 2
    Конечно, это - намного лучшая идея. взгляд –  clacke 19.04.2013, 13:05

Теги

Похожие вопросы