pywinusbの使用例

# USBDAP.py 2013/4/25
import pywinusb.hid

class USBDAP:
    def __init__(self, pname="CMSIS-DAP"):
        self.dev = None
        for dev in pywinusb.hid.find_all_hid_devices():
            if dev.product_name.find(pname) >= 0:
                self.dev = dev
                break
        assert(self.dev)
        self.dev.open()
        self.dev.set_raw_data_handler(self.rx_handler)
        reports = dev.find_output_reports()
        assert(len(reports) == 1)
        self.report = reports[0]

    def close(self):
        if self.dev:
            self.dev.close()

    def rx_handler(self, data):
        self.recv_data = data[1:]

    def write(self, data):
        assert(len(data) >= 0 and len(data) <= 64)
        data += [0]*(64-len(data))
        self.recv_data = None
        self.report.send([0] + data)

    def read(self):
        while self.recv_data == None:
            pass
        return self.recv_data

if __name__=="__main__":
    import time
    dap = USBDAP("KL25Z CMSIS-DAP")
    for _ in range(10):
        dap.write([1,1,1]) # LED ON
        dap.read()
        time.sleep(0.2)
        dap.write([1,1,0]) # LED OFF
        dap.read()
        time.sleep(0.2)
    dap.close()

zipfileとdifflibの使用例

# mydiff.py 2013/4/19
import zipfile
import difflib
import os.path
import sys

def mydiff(fromarc, toarc, n=3):
    to_zip = zipfile.ZipFile(toarc)
    from_zip = zipfile.ZipFile(fromarc)

    fromto = []
    for t in to_zip.namelist():
        name,ext = os.path.splitext(t)
        s = t
        if ext == ".cpp":
            s = name + ".c"
        for f in from_zip.namelist():
            if f.endswith(s):
                fromto.append([t,f])

    for ft in fromto:
        tofile,fromfile = ft
        with to_zip.open(tofile, 'U') as f:
            tolines = f.readlines()
        with from_zip.open(fromfile, 'U') as f:
            fromlines = f.readlines()
        diff = difflib.unified_diff(fromlines, tolines, fromfile, tofile, n=n)
        sys.stdout.writelines(diff)

if __name__ == '__main__':
    fromarc = "AN11321.zip"
    toarc   = "pms-CMSIS-DAP.zip"
    mydiff(fromarc, toarc, n=3)

MPL115A

#include "mbed.h"
#include "mbed_debug.h"

#if defined(TARGET_KL25Z)
SPI spi(PTE1,PTE3,PTE2); // SPI_1
DigitalOut cs(PTE4);
#endif

int main()
{
    cs = 1;
    
    debug(" Read Coefficient(a0,b1,b2,c12)\n");
    cs = 0;
    for(int addr = 0x04; addr <= 0x0b; addr++) {
        spi.write((addr<<1)|0x80);
        uint8_t data = spi.write(0x00);
        debug("%02x: %02x\n", addr, data);
    }
    spi.write(0x00);
    cs = 1;

    while(1) {
        debug("Start Conversion\n");
        cs = 0;
        spi.write(0x12<<1);
        spi.write(0x00);
        cs = 1;
        wait_ms(3); //3ms delay
        debug("Read Results(Padc,Tadc)\n");
        cs = 0;
        for(int addr = 0x00; addr <= 0x03; addr++) {
            spi.write((addr<<1)|0x80);
            uint8_t data = spi.write(0x00);
            debug("%02x: %02x\n", addr, data);
        }
        spi.write(0x00);
        cs = 1;

        wait_ms(5*1000);
    }
}

app-board-LM75B mbed NXP LPC1768

# app-board-LM75B mbed NXP LPC1768
# http://mbed.org/users/chris/code/app-board-LM75B/
import mbed
import sys
 
class LM75B:
    LM75B_ADDR=0x90
    LM75B_Conf=0x01
    LM75B_Temp=0x00
 
    def __init__(self, sda, scl):
        self.i2c = mbed.I2C(sda, scl)
        cmd = chr(self.LM75B_Conf) + chr(0)
        self.i2c.write(self.LM75B_ADDR, cmd, 2, 0)
 
    def read_u16(self):
        cmd = chr(self.LM75B_Temp) + chr(0)
        self.i2c.write(self.LM75B_ADDR, cmd, 1, 0) # Send command string
        self.i2c.read(self.LM75B_ADDR, cmd, 2, 0)
        return (ord(cmd[0])<<8)|ord(cmd[1])
 
tmp = LM75B('p28', 'p27')
while 1:
    v = tmp.read_u16()
    print v
    sys.wait(1000)

app-board-RGB mbed NXP LPC1768

# app-board-RGB mbed NXP LPC1768
# http://mbed.org/users/chris/code/app-board-RGB/
import mbed
import sys
r = mbed.PwmOut('p23')
g = mbed.PwmOut('p24')
b = mbed.PwmOut('p25')
r.period(0.001);
while 1:
    i = 0.0
    while i < 1.0:
        p = 3.0 * i
        r.write(1.0 - (1.0 - p if p < 1.0 else (p - 2.0 if p > 2.0 else 0.0)))
        g.write(1.0 - (p if p < 1.0 else (0.0 if p > 2.0 else 2.0 - p)))
        b.write(1.0 - (0.0 if p < 1.0 else (3.0 - p if p > 2.0 else p - 1.0)))
        sys.wait(10) # 10ms
        i += 0.001