Como o gato sabe a taxa de transmissão da porta serial?

24

Eu uso regularmente cat para visualizar informações de depuração no console da minha placa de desenvolvimento FPGA através da conexão serial, mas eu nunca tive que dizer ao Linux qual é a taxa de transmissão. Como o gato sabe qual é a taxa de transmissão da conexão serial?

    
por stanri 19.04.2013 / 11:07

2 respostas

31

Os conjuntos de utilitários stty ou relatórios sobre características de E / S de terminal para o dispositivo que é sua entrada padrão. Essas características são usadas ao estabelecer uma conexão sobre esse meio específico. cat não conhece a taxa de transmissão como tal, ela imprime na tela informações recebidas da conexão específica.

Como exemplo, stty -F /dev/ttyACM0 fornece a taxa de transmissão atual para o dispositivo ttyACM0.

    
por 19.04.2013 / 11:35
9

cat apenas usa as configurações para as quais a porta já está configurada. Com este pequeno trecho C, você pode ver a taxa de transmissão atualmente definida para uma porta serial específica:

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;
}

Execute:

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

Os números que você recebe podem ser pesquisados em /usr/include/asm-generic/termios.h , onde há #define s como B9600 etc. Observe que os números no arquivo de cabeçalho e na saída get-baud-rate estão em octal. / p>

Talvez você possa experimentar e ver como são esses números em uma inicialização recente e se eles mudam mais tarde.

    
por 19.04.2013 / 11:32