etherlab/CommonEtherCATFunction.py
changeset 2459 21164625b393
parent 2446 922f0d84f869
child 2643 b98d9e08231f
--- a/etherlab/CommonEtherCATFunction.py	Fri Nov 23 11:01:20 2018 +0100
+++ b/etherlab/CommonEtherCATFunction.py	Fri Nov 23 12:13:24 2018 +0100
@@ -9,8 +9,12 @@
 # See COPYING file for copyrights details.
 
 from __future__ import absolute_import
+from __future__ import division
+from builtins import str as text
+import codecs
 import wx
 
+
 mailbox_protocols = ["AoE", "EoE", "CoE", "FoE", "SoE", "VoE"]
 
 
@@ -182,7 +186,7 @@
         @param controler: _EthercatSlaveCTN class in EthercatSlave.py
         """
         self.Controler = controler
-
+        self.HexDecode = codecs.getdecoder("hex_codec")
         self.ClearSDODataSet()
 
     # -------------------------------------------------------------------------------
@@ -549,7 +553,7 @@
         if (value_len % 2) == 0:
             hex_len = value_len
         else:
-            hex_len = (value_len / 2) * 2 + 2
+            hex_len = (value_len // 2) * 2 + 2
 
         hex_data = ("{:0>"+str(hex_len)+"x}").format(decnum)
 
@@ -589,7 +593,7 @@
 
         # append zero-filled padding data up to EEPROM size
         for dummy in range(self.SmartViewInfosFromXML["eeprom_size"] - len(self.BinaryCode)):
-            self.BinaryCode = self.BinaryCode + 'ff'.decode('hex')
+            self.BinaryCode = self.BinaryCode + self.HexDecode('ff')[0]
 
         return self.BinaryCode
 
@@ -648,7 +652,7 @@
         eeprom_list = []
 
         if direction is 0 or 1:
-            for dummy in range(length/2):
+            for dummy in range(length//2):
                 if data == "":
                     eeprom_list.append("00")
                 else:
@@ -808,7 +812,7 @@
             for eeprom_element in device.getEeprom().getcontent():
                 if eeprom_element["name"] == "ByteSize":
                     eeprom_size = int(str(eeprom_element))
-                    data = "{:0>4x}".format(int(eeprom_element)/1024*8-1)
+                    data = "{:0>4x}".format(int(eeprom_element)//1024*8-1)
 
             if data == "":
                 eeprom.append("00")
@@ -857,7 +861,7 @@
 
             # convert binary code
             for index in range(eeprom_size):
-                eeprom_binary = eeprom_binary + eeprom[index].decode('hex')
+                eeprom_binary = eeprom_binary + self.HexDecode(eeprom[index])[0]
 
             return eeprom_binary
 
@@ -894,7 +898,7 @@
         vendor_spec_strings = []
         for element in device.getType().getcontent():
             data += element
-        if data != "" and isinstance(data, unicode):
+        if data != "" and isinstance(data, text):
             for vendor_spec_string in vendor_spec_strings:
                 if data == vendor_spec_string:
                     self.OrderIdx = vendor_spec_strings.index(data)+1
@@ -913,7 +917,7 @@
 
         #  element2-1; <EtherCATInfo>-<Descriptions>-<Devices>-<Device>-<GroupType>
         data = device.getGroupType()
-        if data is not None and isinstance(data, unicode):
+        if data is not None and isinstance(data, text):
             for vendor_spec_string in vendor_spec_strings:
                 if data == vendor_spec_string:
                     self.GroupIdx = vendor_spec_strings.index(data)+1
@@ -937,7 +941,7 @@
                         for device_item in group_etc["devices"]:
                             if device == device_item[1]:
                                 data = group_type
-                if data is not None and isinstance(data, unicode):
+                if data is not None and isinstance(data, text):
                     for vendor_spec_string in vendor_spec_strings:
                         if data == vendor_spec_string:
                             self.GroupIdx = vendor_spec_strings.index(data)+1
@@ -961,7 +965,7 @@
                     for device_item in group_etc["devices"]:
                         if device == device_item[1]:
                             data = group_etc["name"]
-        if data != "" and isinstance(data, unicode):
+        if data != "" and isinstance(data, text):
             for vendor_spec_string in vendor_spec_strings:
                 if data == vendor_spec_string:
                     groupnameflag = True
@@ -980,7 +984,7 @@
         for element in device.getName():
             if element.getLcId() == 1 or element.getLcId() == 1033:
                 data = element.getcontent()
-        if data != "" and isinstance(data, unicode):
+        if data != "" and isinstance(data, text):
             for vendor_spec_string in vendor_spec_strings:
                 if data == vendor_spec_string:
                     self.NameIdx = vendor_spec_strings.index(data)+1
@@ -1000,7 +1004,7 @@
         #  element5-1; <EtherCATInfo>-<Descriptions>-<Devices>-<Device>-<Image16x14>
         if device.getcontent() is not None:
             data = device.getcontent()
-            if data is not None and isinstance(data, unicode):
+            if data is not None and isinstance(data, text):
                 for vendor_spec_string in vendor_spec_strings:
                     if data == vendor_spec_string:
                         self.ImgIdx = vendor_spec_strings.index(data)+1
@@ -1024,7 +1028,7 @@
                         for device_item in group_etc["devices"]:
                             if device == device_item[1]:
                                 data = group_etc
-                if data is not None and isinstance(data, unicode):
+                if data is not None and isinstance(data, text):
                     for vendor_spec_string in vendor_spec_strings:
                         if data == vendor_spec_string:
                             self.ImgIdx = vendor_spec_strings.index(data)+1
@@ -1132,15 +1136,15 @@
         else:
             length += length % 4
             padflag = True
-        eeprom.append("{:0>4x}".format(length/4)[2:4])
-        eeprom.append("{:0>4x}".format(length/4)[0:2])
+        eeprom.append("{:0>4x}".format(length//4)[2:4])
+        eeprom.append("{:0>4x}".format(length//4)[0:2])
         #  total numbers of strings
         eeprom.append("{:0>2x}".format(count))
         for element in [vendor_specific_data,
                         dc_related_elements,
                         input_elements,
                         output_elements]:
-            for dummy in range(len(element)/2):
+            for dummy in range(len(element)//2):
                 if element == "":
                     eeprom.append("00")
                 else:
@@ -1285,11 +1289,11 @@
             #  category length
             if count % 2 == 1:
                 padflag = True
-                eeprom.append("{:0>4x}".format((count+1)/2)[2:4])
-                eeprom.append("{:0>4x}".format((count+1)/2)[0:2])
+                eeprom.append("{:0>4x}".format((count+1)//2)[2:4])
+                eeprom.append("{:0>4x}".format((count+1)//2)[0:2])
             else:
-                eeprom.append("{:0>4x}".format((count)/2)[2:4])
-                eeprom.append("{:0>4x}".format((count)/2)[0:2])
+                eeprom.append("{:0>4x}".format((count)//2)[2:4])
+                eeprom.append("{:0>4x}".format((count)//2)[0:2])
             for dummy in range(count):
                 if data == "":
                     eeprom.append("00")
@@ -1332,9 +1336,9 @@
             eeprom.append("29")
             eeprom.append("00")
             #  category length
-            eeprom.append("{:0>4x}".format(len(data)/4)[2:4])
-            eeprom.append("{:0>4x}".format(len(data)/4)[0:2])
-            for dummy in range(len(data)/2):
+            eeprom.append("{:0>4x}".format(len(data)//4)[2:4])
+            eeprom.append("{:0>4x}".format(len(data)//4)[0:2])
+            for dummy in range(len(data)//2):
                 if data == "":
                     eeprom.append("00")
                 else:
@@ -1440,10 +1444,10 @@
                 eeprom.append("00")
             eeprom.append("00")
             #  category length
-            eeprom.append("{:0>4x}".format(len(data)/4)[2:4])
-            eeprom.append("{:0>4x}".format(len(data)/4)[0:2])
+            eeprom.append("{:0>4x}".format(len(data)//4)[2:4])
+            eeprom.append("{:0>4x}".format(len(data)//4)[0:2])
             data = str(data.lower())
-            for dummy in range(len(data)/2):
+            for dummy in range(len(data)//2):
                 if data == "":
                     eeprom.append("00")
                 else:
@@ -1514,10 +1518,10 @@
             eeprom.append("3c")
             eeprom.append("00")
             #  category length
-            eeprom.append("{:0>4x}".format(len(data)/4)[2:4])
-            eeprom.append("{:0>4x}".format(len(data)/4)[0:2])
+            eeprom.append("{:0>4x}".format(len(data)//4)[2:4])
+            eeprom.append("{:0>4x}".format(len(data)//4)[0:2])
             data = str(data.lower())
-            for dummy in range(len(data)/2):
+            for dummy in range(len(data)//2):
                 if data == "":
                     eeprom.append("00")
                 else: