Como conectar um terminal serial bruto a uma conexão bluetooth?

7

Estou tentando conectar-me a um Totalstation que não oferece drivers bluetooth. Como estou fazendo isso por razões puramente diagnósticas, gostaria de ver a saída bruta da conexão serial estabelecida.

O que devo fazer para canalizar a saída all de uma conexão bluetooth para um terminal?

    
por Brian Ballsun-Stanton 29.01.2013 / 01:05

3 respostas

5

Como complemento à resposta de Brian. A tela não funcionou para mim, exibindo imediatamente [screen is terminating]

Então, eu encontrei o script python miniterm . O uso é semelhante:

sudo miniterm.py /dev/rfcomm0
    
por Aleksander Belov 05.06.2014 / 22:50
11

1) Use hcitool scan para encontrar o endereço Mac do dispositivo.

O dispositivo deve ser configurado para o modo escravo com um pino conhecido. Se você não usa um pino conhecido, o ubuntu faz um backup e você geralmente não terá tempo de inseri-lo nos menus desajeitados de sua ferramenta de medição.

2) Eu não tenho certeza se isso é necessário, mas no menu bluetooth gui, emparelhe o dispositivo.

3) em /etc/bluetooth/rfcomm.conf

rfcomm0 {
        bind no;
        device 00:07:80:44:4F:37;
        channel 1;
        comment "Serial Port";
        }

O "bind no" é importante, caso contrário, ele tentará se ligar automaticamente, o que apresenta todos os tipos de problemas para realmente acessar o dispositivo (como é bastante exigente quando o seu associado)

4) sudo rfcomm connect 0

Se você tiver erros, reinicie o serviço Bluetooth.

5) screen /dev/rfcomm0

Para comandos seriais reais transmitidos dessa maneira, entre em contato com seu fornecedor e implore.

    
por Brian Ballsun-Stanton 07.02.2013 / 04:44
5

Aqui está o meu caminho para conectar um dispositivo Bluetooth HC-05 conectado ao meu arduino. Não é necessário escrever um arquivo como na resposta de Brian, mas a ideia é semelhante. Eu testei com uma taxa de transmissão 9600 no dispositivo HC-05.

Primeiro passo: emparelhe o dispositivo e forneça o PIN

Eu tentei configurar a partir do GUI o emparelhamento, mas não estava funcionando. Aqui está o caminho de linha de comando para prosseguir que funcionou para mim. Primeiro, vamos emparelhar o dispositivo a partir da linha de comando. Executar:

sudo bluetoothctl

Certifique-se de que o dispositivo Bluetooth foi iniciado:

# power on

Agora iniciamos o agente que "lembrará o pin" para rfcomm :

# agent on

Agora, ativamos o modo de verificação para encontrar nosso dispositivo e poder emparelhá-lo:

# scan on

Após alguns segundos, o MAC do seu dispositivo deve aparecer. Vamos denunciá-lo como depois. Então, você só precisa emparelhar o dispositivo assim:

# pair <MAC>

Você será solicitado a digitar um PIN, por padrão é 1234 no meu dispositivo HC-05. Você pode notar que é possível conectar o dispositivo e desconectar com uma mensagem como essa:

[CHG] Device 20:16:10:24:29:77 UUIDs: 00001101-0000-1000-8000-00805f9b34fb
[CHG] Device 20:16:10:24:29:77 ServicesResolved: yes
[CHG] Device 20:16:10:24:29:77 Paired: yes
Pairing successful
[CHG] Device 20:16:10:24:29:77 ServicesResolved: no
[CHG] Device 20:16:10:24:29:77 Connected: no

mas não é um problema. Você não precisa se conectar, então agora você pode sair do bluetoothctl digitando Ctrl + D .

Forneça um arquivo utilizável /def/rfcomm0

Primeiramente, certifique-se de não ter executado nenhum comando rfcomm antes. De fato, mesmo se você fechar com Ctrl+C o programa, ele ainda será executado em segundo plano.

sudo killall rfcomm

Agora, você pode executar

sudo rfcomm connect /dev/rfcomm0 20:16:10:24:29:77 1 &

Note que se você tentar escrever na entrada do rfcom, nada aconteceu. Você precisa usar outro programa.

Terceiro e último passo: escreva no /dev/rfcomm0

Existem várias maneiras de escrever no arquivo, mas observe que todas as maneiras de prosseguir envolvem o root. Descrevo aqui vários programas que podem fazer isso (para que você possa escolher dependendo de sua necessidade ou do que está instalado em seu sistema, por exemplo). Se você esquecer de executar o programa como root, você pode ter um erro:

stty: /dev/rfcomm0: Device or resource busy

Primeira opção: conecte usando screen

A tela é uma ferramenta muito poderosa. Você pode instalá-lo (é sempre mais útil) usando:

sudo apt-get install screen

e, em seguida, execute

sudo screen /dev/rfcomm0

Se você esquecer de executá-lo como root, você receberá um erro como o Aleksander:

[screen is terminating]

Para sair, digite "Ctrl A +: exit"

Segunda opção: conecte usando minicom

Instale-o

sudo apt-get install minicom

e, em seguida, execute

sudo minicom -D /dev/rfcomm0

Se você esquecer de executá-lo como root, você terá um erro como

minicom: cannot open /dev/rfcomm0: Device or resource busy

Para sair, digite "Ctrl + A X".

Terceira opção: miniterm do script python

Faça o download do script e execute:

chmod +x miniterm.py
sudo ./miniterm.py /dev/rfcomm0

Escreva diretamente no arquivo

Primeiro, execute o seguinte comando (9600 é a taxa de transmissão):

sudo stty -F /dev/rfcomm0 cs8 9600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts 

Agora você pode escrever neste arquivo como em um arquivo clássico:

sudo su -c "echo 'message' > /dev/rfcomm0"

e, em teoria, lê-lo usando

sudo tail -f /dev/rfcomm0

Mas eu não sei ler não funciona, se algum de vocês tem uma idéia ...

    
por tobiasBora 09.01.2017 / 20:42

Tags