--- a/etherlab/EthercatSlave.py Thu Nov 22 23:39:54 2018 +0100
+++ b/etherlab/EthercatSlave.py Fri Nov 23 00:33:04 2018 +0100
@@ -9,37 +9,39 @@
#
# See COPYING file for copyrights details.
-import wx
+from __future__ import absolute_import
-from PLCControler import LOCATION_CONFNODE, LOCATION_MODULE, LOCATION_GROUP, LOCATION_VAR_INPUT, LOCATION_VAR_OUTPUT, LOCATION_VAR_MEMORY
+from PLCControler import LOCATION_CONFNODE, LOCATION_VAR_INPUT, LOCATION_VAR_OUTPUT, LOCATION_VAR_MEMORY
from ConfigTreeNode import ConfigTreeNode
-from ConfigEditor import NodeEditor
+from etherlab.ConfigEditor import NodeEditor
-#------------------------------------------
-from CommonEtherCATFunction import _CommonSlave
-#------------------------------------------
+# ------------------------------------------
+from etherlab.CommonEtherCATFunction import _CommonSlave
+# ------------------------------------------
-TYPECONVERSION = {"BOOL" : "X", "SINT" : "B", "INT" : "W", "DINT" : "D", "LINT" : "L",
- "USINT" : "B", "UINT" : "W", "UDINT" : "D", "ULINT" : "L",
- "BYTE" : "B", "WORD" : "W", "DWORD" : "D", "LWORD" : "L"}
+TYPECONVERSION = {"BOOL": "X", "SINT": "B", "INT": "W", "DINT": "D", "LINT": "L",
+ "USINT": "B", "UINT": "W", "UDINT": "D", "ULINT": "L",
+ "BYTE": "B", "WORD": "W", "DWORD": "D", "LWORD": "L"}
-DATATYPECONVERSION = {"BOOL" : "BIT", "SINT" : "S8", "INT" : "S16", "DINT" : "S32", "LINT" : "S64",
- "USINT" : "U8", "UINT" : "U16", "UDINT" : "U32", "ULINT" : "U64",
- "BYTE" : "U8", "WORD" : "U16", "DWORD" : "U32", "LWORD" : "U64"}
+DATATYPECONVERSION = {"BOOL": "BIT", "SINT": "S8", "INT": "S16", "DINT": "S32", "LINT": "S64",
+ "USINT": "U8", "UINT": "U16", "UDINT": "U32", "ULINT": "U64",
+ "BYTE": "U8", "WORD": "U16", "DWORD": "U32", "LWORD": "U64"}
VARCLASSCONVERSION = {"T": LOCATION_VAR_INPUT, "R": LOCATION_VAR_OUTPUT, "RT": LOCATION_VAR_MEMORY}
+
def ExtractHexDecValue(value):
try:
return int(value)
- except:
+ except Exception:
pass
try:
return int(value.replace("#", "0"), 16)
- except:
- raise ValueError, "Invalid value for HexDecValue \"%s\"" % value
+ except Exception:
+ raise ValueError("Invalid value for HexDecValue \"%s\"" % value)
+
def GenerateHexDecValue(value, base=10):
if base == 10:
@@ -47,7 +49,8 @@
elif base == 16:
return "#x%.8x" % value
else:
- raise ValueError, "Not supported base"
+ raise ValueError("Not supported base")
+
def ExtractName(names, default=None):
if len(names) == 1:
@@ -59,31 +62,31 @@
return default
-#--------------------------------------------------
+# --------------------------------------------------
# Ethercat Node
-#--------------------------------------------------
+# --------------------------------------------------
-class _EthercatSlaveCTN:
+class _EthercatSlaveCTN(object):
NODE_PROFILE = None
EditorType = NodeEditor
-
+
def __init__(self):
# ----------- call ethercat mng. function --------------
self.CommonMethod = _CommonSlave(self)
-
+
def GetIconName(self):
return "Slave"
-
+
def ExtractHexDecValue(self, value):
return ExtractHexDecValue(value)
-
+
def GetSizeOfType(self, type):
return TYPECONVERSION.get(self.GetCTRoot().GetBaseType(type), None)
-
+
def GetSlavePos(self):
return self.BaseParams.getIEC_Channel()
-
- def GetParamsAttributes(self, path = None):
+
+ def GetParamsAttributes(self, path=None):
if path:
parts = path.split(".", 1)
if self.MandatoryParams and parts[0] == self.MandatoryParams[0]:
@@ -96,64 +99,71 @@
params.append(self.CTNParams[1].getElementInfos(self.CTNParams[0]))
else:
params.append({
- 'use': 'required',
- 'type': 'element',
- 'name': 'SlaveParams',
- 'value': None,
+ 'use': 'required',
+ 'type': 'element',
+ 'name': 'SlaveParams',
+ 'value': None,
'children': []
})
-
+
slave_type = self.CTNParent.GetSlaveType(self.GetSlavePos())
- params[0]['children'].insert(0,
- {'use': 'optional',
- 'type': self.CTNParent.GetSlaveTypesLibrary(self.NODE_PROFILE),
- 'name': 'Type',
- 'value': (slave_type["device_type"], slave_type)})
- params[0]['children'].insert(1,
- {'use': 'optional',
- 'type': 'unsignedLong',
- 'name': 'Alias',
- 'value': self.CTNParent.GetSlaveAlias(self.GetSlavePos())})
+ params[0]['children'].insert(
+ 0,
+ {
+ 'use': 'optional',
+ 'type': self.CTNParent.GetSlaveTypesLibrary(self.NODE_PROFILE),
+ 'name': 'Type',
+ 'value': (slave_type["device_type"], slave_type)
+ })
+ params[0]['children'].insert(
+ 1,
+ {
+ 'use': 'optional',
+ 'type': 'unsignedLong',
+ 'name': 'Alias',
+ 'value': self.CTNParent.GetSlaveAlias(self.GetSlavePos())
+ })
return params
-
+
def SetParamsAttribute(self, path, value):
self.GetSlaveInfos()
position = self.BaseParams.getIEC_Channel()
-
+
if path == "SlaveParams.Type":
self.CTNParent.SetSlaveType(position, value)
slave_type = self.CTNParent.GetSlaveType(self.GetSlavePos())
value = (slave_type["device_type"], slave_type)
- #if self._View is not None:
- #wx.CallAfter(self._View.EtherCATManagementTreebook.SlaveStatePanel.RefreshSlaveInfos())
- #self._View.EtherCATManagementTreebook.SlaveStatePanel.RefreshSlaveInfos()
- #self._View.EtherCATManagementTreebook.PDOMonitoringPanel.PDOInfoUpdate()
- #self._View.EtherCATManagementTreebook.SmartView.Create_SmartView()
+ # if self._View is not None:
+ # wx.CallAfter(self._View.EtherCATManagementTreebook.SlaveStatePanel.RefreshSlaveInfos())
+ # self._View.EtherCATManagementTreebook.SlaveStatePanel.RefreshSlaveInfos()
+ # self._View.EtherCATManagementTreebook.PDOMonitoringPanel.PDOInfoUpdate()
+ # self._View.EtherCATManagementTreebook.SmartView.Create_SmartView()
return value, True
elif path == "SlaveParams.Alias":
self.CTNParent.SetSlaveAlias(position, value)
return value, True
-
+
value, refresh = ConfigTreeNode.SetParamsAttribute(self, path, value)
-
+
# Filter IEC_Channel, Slave_Type and Alias that have specific behavior
if path == "BaseParams.IEC_Channel" and value != position:
self.CTNParent.SetSlavePosition(position, value)
-
+
return value, refresh
-
+
def GetSlaveInfos(self):
return self.CTNParent.GetSlaveInfos(self.GetSlavePos())
-
+
def GetSlaveVariables(self, limits):
return self.CTNParent.GetSlaveVariables(self.GetSlavePos(), limits)
-
+
def GetVariableLocationTree(self):
- return {"name": self.BaseParams.getName(),
- "type": LOCATION_CONFNODE,
- "location": self.GetFullIEC_Channel(),
- "children": self.CTNParent.GetDeviceLocationTree(self.GetSlavePos(), self.GetCurrentLocation(), self.BaseParams.getName())
+ return {
+ "name": self.BaseParams.getName(),
+ "type": LOCATION_CONFNODE,
+ "location": self.GetFullIEC_Channel(),
+ "children": self.CTNParent.GetDeviceLocationTree(self.GetSlavePos(), self.GetCurrentLocation(), self.BaseParams.getName())
}
def CTNGenerate_C(self, buildpath, locations):
- return [],"",False
+ return [], "", False