Progamming model
irMagician can handle only one IR signal in itself. You need to download, if you use other IR signal data in every times. This page shows basic use case for IR signal uploading(save) and downloading(load).
- Capture IR signal
- Confirm correct captured IR signal data with play command
- Save captured IR signal data
- Load & Play captured IR signal data
Using python for independent platform. irMagician is based on CDC-ACM. Pyserial is mandatory. This sample does not care error handling. It will be required to make real application.
- Capture IR signal
For capturing IR signal, script as below,123456789101112131415# -*- coding: utf-8 -*-import sysimport serialimport timeimport jsonser = serial.Serial("/dev/ttyACM0", 9600, timeout = 1)ser.write("c\r\n")time.sleep(1.0)print ser.readline()ser.close() - Confirm correct captured IR signal data with play command
Evaluate captured IR signal data to point to target device. Just changed to command as “c’ to ‘p’.1234567891011121314# -*- coding: utf-8 -*-import sysimport serialimport timeimport jsonser = serial.Serial("/dev/ttyACM0", 9600, timeout = 1)ser.write("p\r\n")time.sleep(1.0)print ser.readline()ser.close() - Save captured IR signal data
Captured IR signal data is stored to json format. This point of view, inquiry for number of data, bank handling123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051# -*- coding: utf-8 -*-import sysimport serialimport timeimport jsonrawX = []ser = serial.Serial("/dev/ttyACM0", 9600, timeout = 1)#ser = serial.Serial("/dev/tty.usb0121", 9600, timeout = 1)ser.readline()argvs = sys.argvargc = len(argvs)if (argc != 2):print 'Usage: # python %s filename' % argvs[0]quit()print argvs[1]f = open(argvs[1], 'w')ser.write("I,1\r\n")time.sleep(1.0)recNumberStr = ser.readline()recNumber = int(recNumberStr, 16)ser.write("I,6\r\n")time.sleep(1.0)postScaleStr = ser.readline()postScale = int(postScaleStr, 10)#for n in range(640):for n in range(recNumber):bank = n / 64pos = n % 64if (pos == 0):ser.write("b,%d\r\n" % bank)ser.write("d,%d\n\r" % pos)xStr = ser.read(3)xData = int(xStr, 16)rawX.append(xData)json_data = {'format':'raw', 'freq':38, 'data':rawX, 'postscale':postScale}json.dump(json_data, f)f.close()ser.close() - Load & Play captured IR signal data
Download IR signal data from json file then send it to target device123456789101112131415161718192021222324252627282930313233343536373839404142434445# -*- coding: utf-8 -*-import sysimport serialimport timeimport jsonser = serial.Serial("/dev/ttyACM0", 9600, timeout = 1)#ser = serial.Serial("/dev/tty.usb0121", 9600, timeout = 1)ser.readline()argvs = sys.argvargc = len(argvs)if (argc != 2):print 'Usage: # python %s filename' % argvs[0]quit()f = open(argvs[1])json_data = json.load(f)f.close()recNumber = len(json_data['data'])rawX = json_data['data']ser.write("n,%d\r\n" % recNumber)ser.readline()postScale = json_data['postscale']ser.write("k,%d\r\n" % postScale)#time.sleep(1.0)ser.readline()for n in range(recNumber):bank = n / 64pos = n % 64if (pos == 0):ser.write("b,%d\r\n" % bank)ser.write("w,%d,%d\n\r" % (pos, rawX[n]))ser.write("p\r\n")ser.readline()ser.close()