Я пытаюсь подключиться к Totalstation, которая не предлагает драйверы Bluetooth. Поскольку я делаю это по чисто диагностическим причинам, я хотел бы видеть необработанный вывод установленного последовательного соединения.
Что я должен сделать, чтобы передать все выходные данные через соединение Bluetooth на терминал?
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
Для получения информации о последовательных командах, передаваемых таким образом, обратитесь к продавцу и попросите.
Как дополнение к ответу Брайана. Экран у меня не работал, сразу отображалось [screen is terminating]
Так что я нашел скрипт miniterm python . Использование аналогично:
sudo miniterm.py /dev/rfcomm0
Вот мой способ продолжить соединяться с bluetooth-устройством HC-05, включенным на моем arduino. Это не должно писать файл как в ответе Brian, но идея подобна. Я протестировал его с бодом 9 600 установок уровня на устройстве HC-05.
Я пытался установить от 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".
Загрузите этот сценарий и работайте:
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
Но я не знаю, что чтение не работает, если у какого-либо из Вас есть идея...