Как подключить необработанный последовательный терминал к соединению Bluetooth?

Я пытаюсь подключиться к Totalstation, которая не предлагает драйверы Bluetooth. Поскольку я делаю это по чисто диагностическим причинам, я хотел бы видеть необработанный вывод установленного последовательного соединения.

Что я должен сделать, чтобы передать все выходные данные через соединение Bluetooth на терминал?

10
задан 7 March 2014 в 06:54

3 ответа

1) Используйте hcitool scan, чтобы найти Mac-адрес устройства.

Устройство должно быть переведено в режим ведомого с известным контактом. Если вы не используете известный пин-код, Ubuntu создаст его, и у вас, как правило, не будет времени ввести его в неуклюжие меню вашего измерительного инструмента.

2) Я не совсем уверен, что это необходимо, но в меню интерфейса Bluetooth выполните сопряжение устройства.

3) в /etc/bluetooth/rfcomm.conf

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

«bind no» имеет важное значение, в противном случае он попытается выполнить автоматическое связывание, что создает всевозможные проблемы для доступ к устройству (поскольку он довольно требователен, когда он связан)

4) sudo rfcomm connect 0

Если у вас есть ошибки, перезапустите службу bluetooth.

5) screen /dev/rfcomm0

Для получения информации о последовательных командах, передаваемых таким образом, обратитесь к продавцу и попросите.

0
ответ дан 7 March 2014 в 06:54

Как дополнение к ответу Брайана. Экран у меня не работал, сразу отображалось [screen is terminating]

Так что я нашел скрипт miniterm python . Использование аналогично:

sudo miniterm.py /dev/rfcomm0
0
ответ дан 7 March 2014 в 06:54

Вот мой способ продолжить соединяться с bluetooth-устройством HC-05, включенным на моем arduino. Это не должно писать файл как в ответе Brian, но идея подобна. Я протестировал его с бодом 9 600 установок уровня на устройстве HC-05.

Первый шаг: соедините устройство и обеспечьте PIN

Я пытался установить от GUI соединение, но это не работало. Вот является командная строка способом продолжиться, который работал на меня. Во-первых, давайте соединим устройство из командной строки. Выполненный:

sudo bluetoothctl

Убедитесь, что bluetooth-устройство запущено:

# power on

Мы теперь запускаем агент, который будет "помнить контакт" за rfcomm :

# agent on

Теперь мы позволяем режиму сканирования найти наше устройство и смочь соединить его:

# scan on

После нескольких секунд должен появиться MAC Вашего устройства. Мы обозначим его как после. Затем просто необходимо соединить устройство как это:

# pair <MAC>

Вас попросят ввести PIN, по умолчанию это 1234 на моем устройстве HC-05. Можно отметить, что возможно, что Вы подключение устройства затем разъединяетесь с сообщением как этот:

[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

но это не проблема. Вы не должны соединяться, таким образом, можно теперь выйти bluetoothctl путем ввода Ctrl + D.

Обеспечьте применимый файл /dev/rfcomm0

Во-первых, убедитесь, что Вы не выполняли команды rfcomm прежде. Действительно, даже если Вы соглашаетесь Ctrl+C программа, это все еще работает в фоне.

sudo killall rfcomm

Теперь, можно работать

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

Обратите внимание, что, при попытке записать на входе rfcom, ничего не произошло. Необходимо использовать другую программу.

Треть и в последний раз ступает: впишите /dev/rfcomm0

Существует несколько способов записать на файле, но отметить, что все способы продолжиться включают корень. Я описываю здесь несколько программ, которые могут сделать это (так, чтобы можно было выбрать в зависимости от потребности или на том, что установлено в системе, например). Если Вы забываете запускать программу как корень, у Вас может быть ошибка:

stty: /dev/rfcomm0: Device or resource busy

Первая опция: использование подключения screen

Экран является очень мощным инструментом. Можно установить его (это больше всегда полезно) при помощи:

sudo apt-get install screen

и затем выполненный

sudo screen /dev/rfcomm0

Если Вы забудете выполнять его как корень, то Вы доберетесь, ошибка как Aleksander добралась:

[screen is terminating]

Для выхода из него введите "Ctrl +: выход"

Вторая опция: использование подключения minicom

Установите его

sudo apt-get install minicom

и затем выполненный

sudo minicom -D /dev/rfcomm0

Если Вы забудете выполнять его как корень, то у Вас будет ошибка как

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

Для выхода из него введите "Ctrl + X".

Третья опция: мини-термин сценария Python

Загрузите этот сценарий и работайте:

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

Запишите непосредственно в файл

Во-первых работайте, следующая команда (9600 скорость в бодах):

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

Теперь можно записать в этом файле как в классическом файле:

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

и в теории, прочитанной из него использование

sudo tail -f /dev/rfcomm0

Но я не знаю, что чтение не работает, если у какого-либо из Вас есть идея...

10
ответ дан 7 March 2014 в 06:54

Другие вопросы по тегам:

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