
私は 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]>" をどのように処理すればよいでしょうか? "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
には、対話型セッションを「監視」して expect スクリプトを生成する が付属しています。 を実行しautoexpect
、通常のシェルで行うすべての操作を実行すると、シェルを終了すると、script.exp
ベースとして使用できるファイルが作成されます。