Come collegare un terminale seriale non elaborato a una connessione bluetooth?


10

Sto cercando di connettermi a una Totalstation che non offre driver bluetooth. Mentre lo sto facendo per motivi puramente diagnostici, mi piacerebbe vedere l'output non elaborato dalla connessione seriale stabilita.

Cosa devo fare per reindirizzare tutti gli output da una connessione bluetooth a un terminale?


Stai facendo Bluetooth-> Seriale, Seriale-> Bluetooth o bidirezionale?
nanofarad,

Totalstation Bluetooth <-> Ubuntu Bluetooth. Dato che la totalstation ha la configurazione seriale standard su USB, sospetto che stia stabilendo una connessione seriale tramite Bluetooth. Certo, potrei sbagliarmi completamente, a quel punto la risposta che ho sbagliato e il bluetooth utilizza XYZ è completamente ammissibile.
Brian Ballsun-Stanton,

In termini di prova bidirezionale, sono riuscito a stabilire una connessione seriale vuota tramite "schermo" che provoca un segnale acustico di errore sul dispositivo quando premo un tasto sulla tastiera. Quindi sospetto di essere a metà strada, ma non so quale metà.
Brian Ballsun-Stanton,

Puoi redigere un diagramma veloce? Non riesco a capire se si tratta di seriale via seriale o bluetooth via seriale, nonché di chi sta trasmettendo i dati a dove.
Fallo

Funziona molto bene ma ho riscontrato alcuni problemi con RFCOMM. Quando mi collego con SCREEN, alcune sequenze AT vengono digitate automaticamente "ATE1 E0" <TORNA> tre volte. Per questo motivo, sul lato Raspi appare un po 'di "Login fallito". Successivamente, posso accedere con successo e utilizzare la sessione del terminale senza ulteriori problemi.
Cody,

Risposte:


5

In aggiunta alla risposta di Brian. Lo schermo non ha funzionato per me, immediatamente visualizzato[screen is terminating]

Quindi ho trovato questo script Python miniterm . L'uso è simile:

sudo miniterm.py /dev/rfcomm0

12

1) Utilizzare hcitool scanper trovare l'indirizzo Mac del dispositivo.

Il dispositivo deve essere impostato in modalità slave con un pin noto. Se non usi un pin noto, Ubuntu ne crea uno e generalmente non avrai tempo di inserirlo nei menu goffi del tuo strumento di misurazione.

2) Non sono del tutto sicuro che ciò sia necessario, ma nel menu GUI Bluetooth, associare il dispositivo.

3) in /etc/bluetooth/rfcomm.conf

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

Il "bind no" è importante, altrimenti tenterà di legarsi automaticamente, il che presenta tutti i tipi di problemi per l'accesso effettivo al dispositivo (in quanto è piuttosto esigente quando associato)

4) sudo rfcomm connect 0

In caso di errori, riavviare il servizio bluetooth.

5) screen /dev/rfcomm0

Per i comandi seriali effettivi trasmessi in questo modo, contattare il fornitore e chiedere.


3
Ottengo "Parametro dev mancante" quando provo a eseguire "rfcomm connect 0"
qualcuno con

Hai modificato correttamente il tuo file conf?
Brian Ballsun-Stanton,

5
Prova sudo rfcomm connect rfcomm0 00: 07: 80: 44: 4F: 37
elopio

L'eleliner di elopia è molto semplice. Ha funzionato per me
ptetteh227,

10

Ecco il mio modo di procedere per connettermi a un dispositivo Bluetooth HC-05 collegato al mio arduino. Non è necessario scrivere un file come nella risposta di Brian, ma l'idea è simile. L'ho provato con un'impostazione di baud 9600 rate sul dispositivo HC-05.

Primo passo: associare il dispositivo e fornire il PIN

Ho provato a configurare dalla GUI l'associazione, ma non funzionava. Ecco il modo di procedere da riga di comando che ha funzionato per me. Innanzitutto, accoppiamo il dispositivo dalla riga di comando. Correre :

sudo bluetoothctl

Assicurarsi che il dispositivo Bluetooth sia avviato:

# power on

Ora iniziamo l'agente che "ricorderà il pin" per rfcomm:

# agent on

Ora abilitiamo la modalità di scansione per trovare il nostro dispositivo ed essere in grado di accoppiarlo:

# scan on

Dopo alcuni secondi dovrebbe apparire il MAC del tuo dispositivo. Lo indicheremo come dopo. Quindi, devi solo accoppiare il dispositivo in questo modo:

# pair <MAC>

Ti verrà chiesto di digitare un PIN, per impostazione predefinita è 1234sul mio dispositivo HC-05. È possibile notare che è possibile che il dispositivo si connetta e quindi si disconnetta con un messaggio del genere:

[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

ma non è un problema. Non è necessario connettersi, quindi ora è possibile uscire bluetoothctldigitando Ctrl + D.

Fornire un file utilizzabile /dev/rfcomm0

Innanzitutto, assicurati di non aver mai eseguito alcun comando rfcomm prima. In effetti, anche se si chiude con Ctrl+Cil programma, viene comunque eseguito in background.

sudo killall rfcomm

Ora puoi correre

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

Si noti che se si tenta di scrivere sull'input di rfcom, non è successo nulla. Devi usare un altro programma.

Terzo e ultimo passo: scrivere nel /dev/rfcomm0

Esistono diversi modi per scrivere sul file, ma si noti che tutti i modi per procedere riguardano root. Descrivo qui diversi programmi che possono farlo (in modo che tu possa scegliere in base alle tue esigenze o, ad esempio, a ciò che è installato sul tuo sistema). Se dimentichi di eseguire il programma come root, potresti avere un errore:

stty: /dev/rfcomm0: Device or resource busy

Prima opzione: connettersi utilizzando screen

Lo schermo è uno strumento molto potente. Puoi installarlo (è sempre più utile) usando:

sudo apt-get install screen

e poi corri

sudo screen /dev/rfcomm0

Se dimentichi di eseguirlo come root, otterrai un errore come Aleksander:

[screen is terminating]

Per uscire, digita "(CTRL + A) +: esci"

Seconda opzione: connettersi utilizzando minicom

Installalo

sudo apt-get install minicom

e poi corri

sudo minicom -D /dev/rfcomm0

Se si dimentica di eseguirlo come root, si verificherà un errore simile

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

Per uscire, digita "Ctrl + A X".

Terza opzione: miniterm di script python

Scarica questo script ed esegui:

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

Scrivi direttamente nel file

Innanzitutto eseguire il comando seguente (9600 è la velocità di trasmissione):

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

Ora puoi scrivere in questo file come in un file classico:

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

e in teoria letto da esso usando

sudo tail -f /dev/rfcomm0

Ma non so che leggere non funziona, se qualcuno di voi ha un'idea ...


/def/rfcomm0dovrebbe essere/dev/rfcomm0
stewSquared il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.