import pylibi2c; import time import logging #bus = pylibi2c.I2CDevice('/dev/i2c-1' #read=0: write to register #read=1: read from register #read=2: write to register (common in group) #read=3: wait ms second I2Ccounter=0; def I2C1server(addr,data,reg=None,read=0): try: if read==3: time.sleep(data[0]/1000.) return True logging.debug(str(("I2C",addr,reg,data,read))) # print("I2C",addr,reg,data,read) # return True; bus=pylibi2c.I2CDevice('/dev/i2c-2',addr) if read==1: length=len(data) bus.iaddr_bytes=0 if not(reg is None): bus.ioctl_write(0,str(bytearray([reg]))) data[:]=[int(x) for x in bus.ioctl_read(0,length)] else: if reg is None: bus.iaddr_bytes=0 reg=0; bus.ioctl_write(reg,str(bytearray(data))) bus.close() return True; except: if bus: bus.close() # data[0]=0xff return False; def I2C2server(addr,data,reg=None,read=0): try: if read==3: time.sleep(data[0]/1000.) return True logging.debug(str(("I2C",addr,reg,data,read))) # print("I2C",addr,reg,data,read) # return True; bus=pylibi2c.I2CDevice('/dev/i2c-1',addr) if read==1: length=len(data) bus.iaddr_bytes=0 if not(reg is None): bus.ioctl_write(0,str(bytearray([reg]))) data[:]=[int(x) for x in bus.ioctl_read(0,length)] else: if reg is None: bus.iaddr_bytes=0 reg=0; bus.ioctl_write(reg,str(bytearray(data))) bus.close() return True; except: if bus: bus.close() # data[0]=0xff return False;