前提・実現したいこと
Raspberry Pi と大宮技研さんのIRMagician を使って、赤外線リモコンを作っています。
赤外線の周波数などをjsonで記録するところまではいいたのですが、照射することができません。
以下のPython3コードで実行してみました。どのようにすればいいのでしょうか
(大宮技研様のサンプルコードを参考にさせていただきました http://www.omiya-giken.com/?page_id=1231)
発生している問題・エラーメッセージ
======================== RESTART: /home/pi/IRplay.py ======================== Usage: # python /home/pi/IRplay.py filename Traceback (most recent call last): File "/home/pi/IRplay.py", line 24, in <module> ser.write("n,%d\r\n" % recNumber) File "/usr/lib/python3/dist-packages/serial/serialposix.py", line 518, in write d = to_bytes(data) File "/usr/lib/python3/dist-packages/serial/serialutil.py", line 63, in to_bytes raise TypeError('unicode strings are not supported, please encode to bytes: {!r}'.format(seq)) TypeError: unicode strings are not supported, please encode to bytes: 'n,472\r\n'
該当のソースコード
python3
1import sys 2import serial 3import time 4import json 5import urllib3 6from time import sleep 7 8while True: 9 ser = serial.Serial("/dev/ttyACM0", 9600, timeout = 1) 10 #ser = serial.Serial("/dev/tty.usb0121", 9600, timeout = 1) 11 ser.readline() 12 13 argvs = sys.argv 14 argc = len(argvs) 15 if (argc != 2): 16 print ('Usage: # python %s filename' % argvs[0]) 17 18 json_data = {"postscale": 100, "freq": 38, "data": [112, 1, 49, 15, 4, 4, 5, 4, 5, 4, 9, 4, 5, 4, 5, 4, 9, 4, 4, 4, 8, 4, 5, 4, 5, 4, 9, 4, 8, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 4, 4, 4, 4, 5, 4, 9, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 8, 4, 9, 4, 5, 4, 5, 4, 72, 19, 110, 12, 33, 15, 4, 4, 4, 4, 4, 4, 8, 5, 4, 4, 5, 4, 9, 4, 4, 4, 8, 4, 5, 4, 5, 4, 9, 4, 9, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 4, 4, 4, 4, 9, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 9, 4, 9, 4, 5, 4, 5, 4, 104, 15, 4, 4, 5, 4, 5, 4, 9, 4, 4, 4, 5, 4, 9, 4, 4, 4, 8, 4, 5, 4, 5, 4, 9, 4, 9, 4, 5, 4, 5, 4, 4, 4, 4, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 4, 4, 4, 4, 8, 4, 5, 4, 5, 4, 4, 4, 5, 4, 5, 4, 5, 4, 5, 4, 8, 4, 9, 4, 5, 4, 5, 4, 105, 15, 4, 4, 5, 4, 9, 4, 5, 4, 4, 4, 8, 4, 9, 4, 5, 4, 8, 4, 5, 4, 5, 4, 9, 4, 9, 4, 5, 4, 5, 4, 4, 4, 4, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 9, 4, 5, 4, 4, 4, 4, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 4, 4, 4, 4, 8, 4, 10, 22, 112, 9, 209, 15, 5, 4, 9, 4, 4, 4, 4, 4, 5, 4, 9, 4, 9, 4, 4, 4, 9, 4, 5, 4, 5, 4, 9, 4, 9, 4, 4, 4, 4, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 9, 4, 4, 4, 5, 4, 5, 4, 5, 4, 5, 4, 4, 4, 4, 4, 4, 4, 5, 4, 9, 4, 9, 4, 121, 74, 52, 66, 61, 61, 68, 45, 79, 37, 93, 17, 5, 4, 9, 4, 9, 4, 9, 4, 4, 4, 4, 4, 8, 4, 5, 4, 9, 4, 5, 4, 5, 4, 9, 4, 9, 4, 5, 4, 5, 4, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 4, 4, 4, 4, 4, 4, 4, 9, 4, 5, 4, 5, 4, 4, 4, 4, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 9, 4, 5, 4, 99, 72, 54, 67, 61, 56, 69, 48], "format": "raw"} 19 20 recNumber = len(json_data['data']) 21 rawX = json_data['data'] 22 23 ser.write("n,%d\r\n" % recNumber) 24 ser.readline() 25 26 postScale = json_data['postscale'] 27 ser.write("k,%d\r\n" % postScale) 28#time.sleep(1.0) 29 ser.readline() 30 31 for n in range(recNumber): 32 bank = n / 64 33 pos = n % 64 34 if (pos == 0): 35 ser.write("b,%d\r\n" % bank) 36 37 ser.write("w,%d,%d\n\r" % (pos, rawX[n])) 38 39 ser.write("p\r\n") 40 ser.readline() 41 42ser.close() 43
補足情報(FW/ツールのバージョンなど)
Raspberry Pi W です。よろしくお願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。