LinuxからBLEでPixl.jsを操作する
書き換えたいときに .js ファイルを作成してアップロードするといいっぽい?
node, npm で espruino を入れる
辛い
インストールから辛いしつらすぎ
試す
コマンド管理がだるい
いけそう
sudo pip3 install bluepy
sudo setcap 'cap_net_raw,cap_net_admin+eip' /usr/local/lib/python3.7/dist-packages/bluepy/bluepy-helper
とか必要
code:python
# USAGE:
# python bluepy_uart.py ff:a0:c7:07:8c:29
import sys
import io
from bluepy import btle
from time import sleep
if len(sys.argv) < 2:
print("Fatal, must pass device address:", sys.argv0, "<device address="">") quit()
# \x03 -> Ctrl-C clears line
# \x10 -> Echo off for line so don't try and send any text back
#command = "\x03\x10reset()\nLED.toggle()\n" command = "\x03\x10clearInterval()\n\x10setInterval(function() {LED.toggle()}, 500);\n\x10print('Hello World')\n".encode('UTF-8')
if len(sys.argv) > 2:
f = open(path, 'r')
lines = f.readlines()
f.close()
command = ("\x03\x10%s\n" % "\n\x10".join(lines)).encode('UTF-8')
# Handle received data
class NUSRXDelegate(btle.DefaultDelegate):
def __init__(self):
btle.DefaultDelegate.__init__(self)
# ... initialise here
def handleNotification(self, cHandle, data):
print('RX: ', data)
# Connect, set up notifications
p = btle.Peripheral(sys.argv1, "random") p.setDelegate( NUSRXDelegate() )
nus = p.getServiceByUUID(btle.UUID("6E400001-B5A3-F393-E0A9-E50E24DCCA9E"))
nustx = nus.getCharacteristics(btle.UUID("6E400002-B5A3-F393-E0A9-E50E24DCCA9E"))0 nusrx = nus.getCharacteristics(btle.UUID("6E400003-B5A3-F393-E0A9-E50E24DCCA9E"))0 nusrxnotifyhandle = nusrx.getHandle() + 1
p.writeCharacteristic(nusrxnotifyhandle, b"\x01\x00", withResponse=True)
# Send data (chunked to 20 bytes)
while len(command)>0:
nustx.write(command0:20); # wait for data to be received
while p.waitForNotifications(1.0): pass
# No more data for 1 second, disconnect
p.disconnect()
これをベースにスレッドで接続維持して管理すればよさそう
Bluetoothで接続→スクリプト流し込み→Bluetooth切断とすると <- Bluetooth みたいな接続ログっぽいのが表示に残ってしまう問題
code:javascript
setTimeout(function() {
g.clear();
// ここに書きたい処理
g.flip();
}, 5000);
みたいに5秒くらいあとにレンダリングするようにしておけばわりとうまくいきそう
全書換ではなく追記型だと無理