diff --git a/clk/CLK.py b/clk/CLK.py index decd383dccc925bc7536d7c8c253c977b42d5d3e..f71fe4de5f2eb5a48b97611a38ea03ca938c289c 100644 --- a/clk/CLK.py +++ b/clk/CLK.py @@ -124,7 +124,7 @@ class RCU1(): Mask=Mask.OPCW.get_value() value1=strs2bytes(Instr.value) if V1.OPCR is None else strs2bytes(V1.OPCR.get_value()) if (len(value1)==V1.nVars) and (self.N>1): value1=(value1*self.N); - if (Instr.type==Vars.DevType.Var) or ((self.N==1) and (Instr.type==Vars.DevType.VarUpdate)): + if (Instr.type==Vars.DevType.Var): logging.info(str(('** Set Var:',V1.name,value1))) for RCUi in range(self.N): for Vari in range(Step): @@ -138,10 +138,19 @@ class RCU1(): if not(V1.OPCR is None): V1.OPCR.set_value(bytes2strs(value1,Step2,V1.type)) elif Instr.type==Vars.DevType.VarUpdate: - self.GetVarValueAll(V1,value1) -# if not(V1.OPCR is None): V1.OPCR.get_data_value().Value.Value=bytes2strs(value1,Step2,V1.type) - if not(V1.OPCR is None): V1.OPCR.set_value(bytes2strs(value1,Step2,V1.type)) -# V1.OPCR.get_data_value().Value.Value=value1 + if self.N==1: + for Vari in range(Step): + i0=(Vari)*Step2 + i1=(Vari+1)*Step2 + value2=value1[i0:i1] + self.GetVarValue(0,V1.Vars[Vari],value2) + value1[i0:i1]=value2 + if not(V1.OPCR is None): V1.OPCR.set_value(bytes2strs(value1,Step2,V1.type)) + else: + self.GetVarValueAll(V1,value1) +# if not(V1.OPCR is None): V1.OPCR.get_data_value().Value.Value=bytes2strs(value1,Step2,V1.type) + if not(V1.OPCR is None): V1.OPCR.set_value(bytes2strs(value1,Step2,V1.type)) +# V1.OPCR.get_data_value().Value.Value=value1 logging.info(str(('** Readback:',V1.name,value1))) diff --git a/pypcc2.py b/pypcc2.py index 719eef930ea8aaed9aeb35a3ce57f268a5d98873..6ba9f38e8da66e7db05bde46493c0a48dc0e82f8 100644 --- a/pypcc2.py +++ b/pypcc2.py @@ -50,10 +50,10 @@ RCU.AddVars(Q1,opcuaserv.AddVarR,opcuaserv.AddVarW) RCU.AddMethod(Q1,opcuaserv.Addmethod) RCU.load() #Load current register values from HW -#CLK=CLK.RCU1(1,I2C.I2C2server,SW0.SetChannel) -#CLK.AddVars(Q2,opcuaserv.AddVarR,opcuaserv.AddVarW) -#CLK.AddMethod(Q2,opcuaserv.Addmethod) -#CLK.load() #Load current register values from HW +CLK=CLK.RCU1(1,I2C.I2C2server,SW0.SetChannel) +CLK.AddVars(Q2,opcuaserv.AddVarR,opcuaserv.AddVarW) +CLK.AddMethod(Q2,opcuaserv.Addmethod) +CLK.load() #Load current register values from HW #logging.debug(str(("I2C bytes=",I2C.I2Ccounter))) @@ -62,7 +62,7 @@ if False: exit() RCUthread1=RCU.start(Q1) -#CLKthread1=CLK.start(Q2) +CLKthread1=CLK.start(Q2) RunTimer=True; def TimerThread(Q1,RCU):