Resolves IPP- 59. Enables writing to E300 after the tag value is set. Needs testing
This commit is contained in:
@@ -56,17 +56,24 @@ class Channel():
|
||||
|
||||
def write(self, val, handshake=None, handshake_val=None):
|
||||
if self.writeable:
|
||||
h = handshake
|
||||
hval = handshake_val
|
||||
if h is None:
|
||||
if u800.writeMicroTag(self.device_addr, self.tag, val, handshake=self.tag, handshake_val=val):
|
||||
self.sendFn(self.name, val, time.time())
|
||||
self.last_value = val
|
||||
return True
|
||||
if not self.e300_param:
|
||||
if handshake is None:
|
||||
if u800.writeMicroTag(self.device_addr, self.tag, val):
|
||||
self.sendFn(self.name, val, time.time())
|
||||
self.last_value = val
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
else:
|
||||
return False
|
||||
return u800.writeMicroTag(self.device_addr, self.tag, val, handshake=handshake, handshake_val=handshake_val)
|
||||
else:
|
||||
return u800.writeMicroTag(self.device_addr, self.tag, val, handshake=h, handshake_val=hval)
|
||||
if u800.writeMicroTag(self.device_addr, self.tag, val):
|
||||
if u800.writeMicroTag(self.device_addr, "write_E300", 1):
|
||||
self.sendFn(self.name, val, time.time())
|
||||
self.last_value = val
|
||||
return True
|
||||
return False
|
||||
|
||||
else:
|
||||
print("NOT ALLOWED TO WRITE TO {}".format(self.name))
|
||||
return False
|
||||
@@ -74,20 +81,9 @@ class Channel():
|
||||
|
||||
class start(threading.Thread, deviceBase):
|
||||
def writeTag_WriteE300(self, addr, tag, val):
|
||||
c = u800.Driver()
|
||||
if c.open(addr):
|
||||
try:
|
||||
cv = c.read_tag(tag)
|
||||
wt = c.write_tag(tag, val, cv[1])
|
||||
write_E300 = c.write_tag("cfg_WRITE", 1, "BOOL")
|
||||
print("wt= {}, write_E300 = {}".format(wt, write_E300))
|
||||
return wt and write_E300
|
||||
except Exception:
|
||||
err = c.get_status()
|
||||
c.close()
|
||||
print err
|
||||
return False
|
||||
c.close()
|
||||
write_tag = u800.writeMicroTag(addr, tag, val)
|
||||
write_e300 = u800.writeMicroTag(addr, "write_E300", 1)
|
||||
return write_tag and write_e300
|
||||
|
||||
def updateGPS(self):
|
||||
gps = self.mcu.gps
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
from pycomm.ab_comm.clx import Driver as u800Driver
|
||||
from pycomm.ab_comm.clx import Driver as plcDriver
|
||||
import sys
|
||||
|
||||
|
||||
def readMicroTag(addr, tag):
|
||||
addr = str(addr)
|
||||
tag = str(tag)
|
||||
c = u800Driver()
|
||||
c = plcDriver()
|
||||
if c.open(addr, True):
|
||||
try:
|
||||
v = c.read_tag(tag)
|
||||
@@ -14,13 +14,15 @@ def readMicroTag(addr, tag):
|
||||
except Exception:
|
||||
err = c.get_status()
|
||||
c.close()
|
||||
print("Error with {}: {}".format(tag, err))
|
||||
print "{} on reading {} from {}".format(err, tag, addr)
|
||||
pass
|
||||
c.close()
|
||||
|
||||
|
||||
def getTagType(addr, tag):
|
||||
c = u800Driver()
|
||||
addr = str(addr)
|
||||
tag = str(tag)
|
||||
c = plcDriver()
|
||||
if c.open(addr, True):
|
||||
try:
|
||||
return c.read_tag(tag)[1]
|
||||
@@ -32,25 +34,69 @@ def getTagType(addr, tag):
|
||||
c.close()
|
||||
|
||||
|
||||
def writeMicroTag(addr, tag, val):
|
||||
c = u800Driver()
|
||||
def write(addr, tag, val, t):
|
||||
addr = str(addr)
|
||||
tag = str(tag)
|
||||
c = plcDriver()
|
||||
if c.open(addr, True):
|
||||
try:
|
||||
# typ = getTagType(addr, tag)
|
||||
cv = c.read_tag(tag)
|
||||
wt = c.write_tag(tag, val, cv[1])
|
||||
# print(wt)
|
||||
wt = c.write_tag(tag, val, t)
|
||||
return wt
|
||||
except Exception:
|
||||
err = c.get_status()
|
||||
c.close()
|
||||
print err
|
||||
pass
|
||||
print("Write Error: {} setting {} at {} to {} type {}".format(err, tag, addr, val, t))
|
||||
return False
|
||||
c.close()
|
||||
|
||||
|
||||
def closeEnough(a, b):
|
||||
return abs(a - b) <= 0.001
|
||||
|
||||
|
||||
def writeMicroTag(addr, tag, val, handshake=None, handshake_val=None):
|
||||
addr = str(addr)
|
||||
tag = str(tag)
|
||||
print("handshake: {}, handshake_val: {}".format(handshake, handshake_val))
|
||||
chk_tag = tag
|
||||
if not(handshake is None) and not(handshake == "None"):
|
||||
chk_tag = str(handshake)
|
||||
print("Handshake tag passed, using {}".format(chk_tag))
|
||||
chk_val = val
|
||||
if not (handshake_val is None) and not(handshake_val == "None"):
|
||||
chk_val = handshake_val
|
||||
print("Handshake value passed, using {}".format(chk_val))
|
||||
attempts_allowed = 5
|
||||
attempts = 1
|
||||
|
||||
while attempts <= attempts_allowed:
|
||||
try:
|
||||
attempts = attempts + 1
|
||||
cv = readMicroTag(addr, tag)
|
||||
print("Val Before Write: {}".format(cv))
|
||||
if cv:
|
||||
if cv[1] == "REAL":
|
||||
val = float(val)
|
||||
chk_val = float(chk_val)
|
||||
else:
|
||||
val = int(val)
|
||||
chk_val = int(chk_val)
|
||||
wt = write(addr, tag, val, cv[1])
|
||||
if wt:
|
||||
print("write: {}".format(wt))
|
||||
chk = readMicroTag(addr, chk_tag)
|
||||
if chk:
|
||||
print("chk: {}, chk_val: {}".format(chk, chk_val))
|
||||
if closeEnough(chk[0], chk_val):
|
||||
return True
|
||||
except Exception as e:
|
||||
print e
|
||||
return False
|
||||
|
||||
|
||||
def readMicroTagList(addr, tList):
|
||||
c = u800Driver()
|
||||
addr = str(addr)
|
||||
c = plcDriver()
|
||||
if c.open(addr, True):
|
||||
vals = []
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user