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

10

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

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

Брайан Баллсун-Стэнтон
источник
Вы делаете Bluetooth-> Serial, Serial-> Bluetooth или двусторонний?
нанофарад
Totalstation Bluetooth <-> Ubuntu Bluetooth. Учитывая, что итоговая станция имеет стандартную последовательную конфигурацию через USB, я подозреваю, что она устанавливает последовательное соединение через Bluetooth. Конечно, я могу быть совершенно не прав, и в этот момент ответ, что я ошибаюсь и Bluetooth использует XYZ, полностью допустим.
Брайан Баллсун-Стэнтон
С точки зрения двустороннего доказательства, мне удалось установить пустое последовательное соединение через «экран», который вызывает звуковой сигнал об ошибке на устройстве, когда я нажимаю клавишу на клавиатуре. Так что я подозреваю, что я на полпути, я просто не знаю, какая половина.
Брайан Баллсун-Стэнтон
Можете ли вы составить быструю диаграмму? Я не могу понять, идет ли речь о последовательном или Bluetooth-соединении, а также о том, кто передает данные куда. Просто сделайте это в GIMP или что-то еще и загрузите это здесь
нанофарад
Работает очень хорошо, но я сталкиваюсь с некоторыми проблемами с RFCOMM. Когда я соединяюсь с SCREEN, некоторые AT-последовательности набираются автоматически «ATE1 E0» <RETURN> три раза. Из-за этого на стороне Raspi появляется сообщение «Ошибка входа». После этого я могу успешно войти в систему и использовать сеанс терминала без каких-либо дальнейших глюков.
Коди

Ответы:

5

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

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

sudo miniterm.py /dev/rfcomm0
Александр Белов
источник
12

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

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

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

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

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

Брайан Баллсун-Стэнтон
источник
3
Я получаю «Missing dev параметр», когда я пытаюсь запустить «rfcomm connect 0»
someonewithpc
Правильно ли вы редактировали файл conf?
Брайан Баллсун-Стэнтон
5
Попробуйте sudo rfcomm connect rfcomm0 00: 07: 80: 44: 4F: 37
elopio
Очень простой @ @ elopia. Это сработало для меня
ptetteh227
10

Вот мой способ подключения к Bluetooth-устройству HC-05, подключенному к моему arduino. Не нужно писать файл, как в ответе Брайана, но идея похожа. Я протестировал его с настройкой скорости 9600 бод на устройстве 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

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

stty: /dev/rfcomm0: Device or resource busy

Первый вариант: подключиться с помощью screen

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

sudo apt-get install screen

а потом беги

sudo screen /dev/rfcomm0

Если вы забудете запустить его как root, вы получите сообщение об ошибке, похожее на то, что получил Александр:

[screen is terminating]

Чтобы выйти, введите «(CTRL + A) +: quit»

Второй вариант: подключиться с помощью minicom

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

sudo apt-get install minicom

а потом беги

sudo minicom -D /dev/rfcomm0

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

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

Чтобы выйти, введите «Ctrl + A X».

Третий вариант: скрипт Python miniterm

Скачайте этот скрипт и запустите:

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

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

tobiasBora
источник
/def/rfcomm0должно быть/dev/rfcomm0
stewSquared