Select Git revision
i2cdirect.py
-
Paulus Kruger authoredPaulus Kruger authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
i2cdirect.py 1.79 KiB
name='RECVTR_LB_TEST' #YAML config file with all register values etc
import logging
#import argparse
from pypcc.opcuaserv import opcuaserv
from pypcc.opcuaserv import i2client
from pypcc.opcuaserv import yamlreader
#from opcuaserv import pypcc2
from pypcc.i2cserv import i2cthread
#import threading
import time
import sys
import signal
from pypcc.yamlconfig import Find;
import pypcc.yamlconfig as yc
from datetime import datetime
from pypcc.opcuaserv.yamlreader import byte2var,var2byte
class i2cdirect():
def __init__(self,name):
self.conf=yc.yamlconfig(name)
self.conf.linkdevices()
self.conf.loaddrivers()
self.conf.linkdrivers()
def GetVal(self,name,N=1):
varid=self.conf.getvarid(name);
if varid is None:
logging.error("Variable "+name+" not found")
return None,None
var1=self.conf.getvars()[varid]
drv=var1.get('drivercls');
data=drv.OPCUAReadVariable(varid,var1,[])
data=data[0].data
return byte2var(var1,data),var1
def SetVal(self,name,data):
varid=self.conf.getvarid(name);
if varid is None:
logging.error("Variable "+name+" not found")
return None
var1=self.conf.getvars()[varid]
drv=var1.get('drivercls');
data2=var2byte(var1,data)
return drv.OPCUASetVariable(varid,var1,data2,[])
def SetRegister(self,regname,value):
methodid=self.conf.getmethodid("RECVTR_Init");
var1=self.conf.getmethod(methodid)
drv=var1.get('drivercls');
v1=self.conf.getdevreg(regname)
drv2=v1.get('drivercls')
mask=[]
if drv: drv.Setdevreg(v1,value,mask)
elif drv2: drv2.Setdevreg(v1,value,mask)
else: logging.warn("Driver not specified for instruction"+key)