
저는 Linux를 처음 접하고 Intel Edison을 사용하여 Bluetooth Low Energy 프로젝트를 수행하고 있습니다. 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]>"를 어떻게 처리할 수 있습니까? "연결"을 직접 넣을 수는 없습니다. 작동하지 않습니다.
#!/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