예제 #1
0
def write_regs(mst: modbus.Instrument, start: int, data: list):
    mst.write_registers(start, data)
예제 #2
0
    print 'Rainbow.'
    while True:
        # Shift all values by one led.
        led.insert(0, list(led[0]))
        led = led[:-1]

        # Change color when colour length is reached.
        if k > COLORLENGTH:
            j += 1
            if j >= len(RAINBOW):
                j = 0
            k = 0
        k += 1

        # Fade first LED.
        if led[0][0] < (RAINBOW[j][0] - FADE):
            led[0][0] += FADE
        if led[0][0] > (RAINBOW[j][0] + FADE):
            led[0][0] -= FADE
        if led[0][1] < (RAINBOW[j][1] - FADE):
            led[0][1] += FADE
        if led[0][1] > (RAINBOW[j][1] + FADE):
            led[0][1] -= FADE
        if led[0][2] < (RAINBOW[j][2] - FADE):
            led[0][2] += FADE
        if led[0][2] > (RAINBOW[j][2] + FADE):
            led[0][2] -= FADE

        instrument.write_registers(0x1000, map(to_color, led))
        time.sleep(0.05)
예제 #3
0
    print ':: Modbus updater'

    port = sys.argv[1]
    slave_address = int(sys.argv[2])
    fmw = sys.argv[3]

    inst = Instrument(port, slave_address)
    inst.serial.baudrate = 57600
    inst.serial.timeout = 0.1
    # print inst
    # inst.debug = True

    # Try to reset FW and run bootloader.
    print 'Sending reset to FW... ',
    try:
        inst.write_registers(RESET_ADDRESS, [0xFFFF])
    except IOError:
        print '[no response]'
    except ValueError:
        print '[wrong response]'
    else:
        print '[OK]'

    # Bootloader slave address has MSB set.
    inst.address = BOOTLOADER_SLAVE_ADDRESS | slave_address
    time.sleep(0.5)

    start_time = time.time()

    # Unlock bootloader.
    print 'Sending secret key',
예제 #4
0
    print ':: Modbus updater'

    port = sys.argv[1]
    slave_address = int(sys.argv[2])
    fmw = sys.argv[3]

    inst = Instrument(port, slave_address)
    inst.serial.baudrate = 57600
    inst.serial.timeout = 0.1
    # print inst
    # inst.debug = True

    # Try to reset FW and run bootloader.
    print 'Sending reset to FW... ',
    try:
        inst.write_registers(RESET_ADDRESS, [0xFFFF])
    except IOError:
        print '[no response]'
    except ValueError:
        print '[wrong response]'
    else:
        print '[OK]'

    # Bootloader slave address has MSB set.
    inst.address = BOOTLOADER_SLAVE_ADDRESS | slave_address
    time.sleep(0.5)

    start_time = time.time()

    # Unlock bootloader.
    print 'Sending secret key',
예제 #5
0
    print 'Rainbow.'
    while True:
        # Shift all values by one led.
        led.insert(0, list(led[0]))
        led = led[:-1]

        # Change color when colour length is reached.
        if k > COLORLENGTH:
            j += 1
            if j >= len(RAINBOW):
                j = 0
            k = 0
        k += 1

        # Fade first LED.
        if led[0][0] < (RAINBOW[j][0] - FADE):
            led[0][0] += FADE
        if led[0][0] > (RAINBOW[j][0] + FADE):
            led[0][0] -= FADE
        if led[0][1] < (RAINBOW[j][1] - FADE):
            led[0][1] += FADE
        if led[0][1] > (RAINBOW[j][1] + FADE):
            led[0][1] -= FADE
        if led[0][2] < (RAINBOW[j][2] - FADE):
            led[0][2] += FADE
        if led[0][2] > (RAINBOW[j][2] + FADE):
            led[0][2] -= FADE

        instrument.write_registers(0x1000, map(to_color, led))
        time.sleep(0.05)
예제 #6
0
#!/usr/bin/env python

if __name__ == '__main__':
    import sys
    from minimalmodbus import Instrument

    if len(sys.argv) < 3:
        print 'Usage: {} [COM] [SLAVE] <baudrate=57600>'.format(sys.argv[0])
        exit(1)

    port = sys.argv[1]
    slave = int(sys.argv[2])
    try:
        baudrate = int(sys.argv[3])
    except Exception:
        baudrate = 57600

instrument = Instrument(port, slave)
instrument.serial.baudrate = baudrate
instrument.serial.timeout = 1

instrument.write_registers(
    0x0002,    # Address
    [0xFFFF],  # Data, any value will do.
)
예제 #7
0
파일: slave.py 프로젝트: vladimir1284/pi
class Slave:
    def __init__(self, label, slave_id, slave_address, setupsAdr, setupsCount,
                 variablesAdr, variablesCount, port):
        self.label = label
        self.id = slave_id
        self.port = port
        self.slave_address = slave_address
        self.setupsAdr = setupsAdr
        self.setupsCount = setupsCount
        self.variablesAdr = variablesAdr
        self.variablesCount = variablesCount

        try:
            self.instrument = Instrument(self.port, slave_address)
        except:
            self.status = "ERROR"
            traceback.print_exc()

        self.status = "NEW"
        self.variable_values = []
        self.config_values = []

    def getConfig(self, adr):
        if self.status == "OK":
            return self.config_values[adr]
        else:
            return 0

    def getValue(self, adr):
        if self.status == "OK":
            return self.variable_values[adr - self.variablesAdr]
        else:
            return 0

    def getVariables(self):
        try:
            self.variable_values = self.instrument.read_registers(
                self.variablesAdr, self.variablesCount)
            self.status = "OK"
        except IOError:
            self.status = "ERROR"
            traceback.print_exc()

    def getConfigs(self):
        try:
            self.config_values = self.instrument.read_registers(
                self.setupsAdr, self.setupsCount)
            self.status = "OK"
        except IOError:
            self.status = "ERROR"
            traceback.print_exc()

    def setConfigs(self):
        try:
            #TODO Detener el hilo de actualización de las variables
            self.instrument.write_registers(self.setupsAdr, self.config_values)
            self.status = "OK"
        except IOError:
            self.status = "ERROR"
            traceback.print_exc()

    def run(self):
        if self.status != "OK":
            self.getConfigs()
        self.getVariables()

    def simulate(self):
        print('Simulating from slave: %s' % self.id)
        from random import randint
        self.variable_values = [
            randint(0, 100) for i in range(self.variablesCount)
        ]
        self.status = "SIMULATE"