Existe alguma maneira de verificar quais taxas de transmissão são suportadas em um dispositivo serial?

2

Existe alguma maneira de verificar quais taxas de transmissão são suportadas por um dispositivo serial no Linux?

Eu pesquisei o diretório /sys/class/tty/ttyS0 , mas não consigo ver nada que liste esse tipo de informação.

    
por Mike 16.10.2012 / 14:49

2 respostas

3

Você parece estar fazendo duas perguntas diferentes.

Is there any way to check which baud rates are supported on a serial device?

A resposta dependerá de (1) as capacidades do hardware, isto é, o UART / USART / SCC, e o intervalo de divisores que o controlador de dispositivo pode usar no gerador de taxa de transmissão; consulte a folha de dados do dispositivo; (2) a frequência do relógio / oscilador conectado ao dispositivo de porta serial; consulte a documentação do conselho.

Is there any way to check which baud rates are supported on Linux?

Uma das taxas de transmissão definidas em include/asm-generic/termbits.h para o membro c_cflag da estrutura de controle do terminal é o método típico que o driver de dispositivo da porta serial (isto é, UART / USART) recebe para o baud valor de configuração da taxa.

#define  B0     0000000         /* hang up */
#define  B50    0000001
#define  B75    0000002
#define  B110   0000003
#define  B134   0000004
#define  B150   0000005
#define  B200   0000006
#define  B300   0000007
#define  B600   0000010
#define  B1200  0000011
#define  B1800  0000012
#define  B2400  0000013
#define  B4800  0000014
#define  B9600  0000015
#define  B19200 0000016
#define  B38400 0000017

#define    BOTHER 0010000
#define    B57600 0010001
#define   B115200 0010002
#define   B230400 0010003
#define   B460800 0010004
#define   B500000 0010005
#define   B576000 0010006
#define   B921600 0010007
#define  B1000000 0010010
#define  B1152000 0010011
#define  B1500000 0010012
#define  B2000000 0010013
#define  B2500000 0010014
#define  B3000000 0010015
#define  B3500000 0010016
#define  B4000000 0010017

Os drivers de porta serial normalmente não têm nenhum meio de relatar / anunciar quais dessas taxas de transmissão são realmente suportadas / configuradas / implementadas. Existe um valor de recursos para atributos como FIFO e suspensão, mas não para taxas de transmissão. Um driver poderia definir uma chamada ioctl () para configurar taxas de transmissão (não padrão), embora isso tornasse os programas não portáteis.

    
por 17.10.2012 / 02:00
5

Você pode verificar a taxa de transmissão do dispositivo usando o comando "stty" no console:

$ stty < /dev/tty..      (where tty... is the device file you are listening)  

saída:

speed 9600 baud; line = 0;
-brkint -imaxbel

Você também pode alterar a taxa de transmissão com o seguinte comando:

$ sudo stty -F /dev/tty... 9600    (or whatever baud rate number)
    
por 09.04.2013 / 03:56