
Я новичок в Linux и делаю проект Bluetooth Low energy с использованием Intel Edison. На Edison установлен Yocto 1.6.1. Я использовал Bluz и gatttool для подключения моего датчика BLE. Но мне нужно вводить одну и ту же команду каждый раз, когда я хочу подключиться. Поэтому я хочу написать скрипт оболочки и запустить его автоматически при загрузке платы.
В окне терминала я ввожу следующие команды:
rfkill unblock bluetooth
hciconfig hci0
export PATH=$PATH:~/bluez-5.24/attrib/
gatttool -b D2:AD:9F:B7:BB:60 -I -t random
Он переходит на [D2:AD:9F:B7:BB:60][LE]>, а затем я набираю «connect»
[D2:AD:9F:B7:BB:60][LE]> connect
Attempting to connect to D2:AD:9F:B7:BB:60
Connection successful
[D2:AD:9F:B7:BB:60][LE]> char-write-req 0x000e 0100
Когда я пишу скрипт оболочки, как мне обработать "[D2:AD:9F:B7:BB:60][LE]>" в моем скрипте? Я не могу напрямую вставить "connect". Это не сработает.
#!/bin/sh
rfkill unblock bluetooth
hciconfig hci0
export PATH=$PATH:~/bluez-5.24/attrib/
gatttool -b D2:AD:9F:B7:BB:60 -I -t random
conncet
char-write-req 0x000e 0100
решение1
Инструмент expect
должен делать то, что вам нужно.
Он поставляется с autoexpect
который будет производить ожидаемый сценарий, "наблюдая" за вашим интерактивным сеансом. Запустите autoexpect
, затем сделайте все то, что вы бы сделали в вашей обычной оболочке, и после выхода из оболочки вы получите файл, script.exp
который затем можете использовать в качестве основы.