|
|
|
@ -34,9 +34,13 @@ class Parm():
|
|
|
|
|
if value == '读取错误':
|
|
|
|
|
return '读取错误'
|
|
|
|
|
else:
|
|
|
|
|
return self.analysisValue(value)
|
|
|
|
|
return self.unpackValue(value)
|
|
|
|
|
|
|
|
|
|
def writeParm(self, values):
|
|
|
|
|
valueByte = self.packValue(*values)
|
|
|
|
|
result = self.DPV1Master.writeParm(address = self.address, slot = self.slot, index = self.realIndex, length = self.size, valueByte = valueByte)
|
|
|
|
|
|
|
|
|
|
def analysisValue(self, value):
|
|
|
|
|
def unpackValue(self, value):
|
|
|
|
|
match self.dataType:
|
|
|
|
|
case 'Unsigned8':
|
|
|
|
|
return self.unpackU8(value)
|
|
|
|
@ -60,9 +64,36 @@ class Parm():
|
|
|
|
|
return self.unpackDS50(value)
|
|
|
|
|
case 'OctetString' | 'VisibleString':
|
|
|
|
|
return self.unpackStr(value)
|
|
|
|
|
case 'FloatList2':
|
|
|
|
|
return self.unpackFloatList2(value)
|
|
|
|
|
case _:
|
|
|
|
|
return str(value)
|
|
|
|
|
|
|
|
|
|
def packValue(self, values):
|
|
|
|
|
match self.dataType:
|
|
|
|
|
case 'Unsigned8':
|
|
|
|
|
return self.packU8(values)
|
|
|
|
|
case 'Unsigned16':
|
|
|
|
|
return self.packU16(values)
|
|
|
|
|
case 'Unsigned32':
|
|
|
|
|
return self.packU32(values)
|
|
|
|
|
case 'Float':
|
|
|
|
|
return self.packFloat(values)
|
|
|
|
|
case '101':
|
|
|
|
|
return self.pack101(values)
|
|
|
|
|
case 'DS-32':
|
|
|
|
|
return self.packDS32(values)
|
|
|
|
|
case 'DS-36':
|
|
|
|
|
return self.packDS36(values)
|
|
|
|
|
case 'DS-50':
|
|
|
|
|
return self.packDS50(values)
|
|
|
|
|
case 'OctetString' | 'VisibleString':
|
|
|
|
|
return self.packStr(values)
|
|
|
|
|
case 'FloatList2':
|
|
|
|
|
return self.packFloatList2(values)
|
|
|
|
|
case _:
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
def unpackU8(self, value):
|
|
|
|
|
return str(struct.unpack('>b', value)[0])
|
|
|
|
|
|
|
|
|
@ -114,7 +145,7 @@ class Parm():
|
|
|
|
|
|
|
|
|
|
def unpackDS37(self, value):
|
|
|
|
|
actualByte, permitByte, normalByte = value[0].to_bytes(1, byteorder='little'), value[1].to_bytes(1, byteorder='little'), value[2].to_bytes(1, byteorder='little')
|
|
|
|
|
print(type(actualByte), permitByte, normalByte)
|
|
|
|
|
# print(type(actualByte), permitByte, normalByte)
|
|
|
|
|
actualMode = self.unpackU8(actualByte)
|
|
|
|
|
permitMode = self.unpackU8(permitByte)
|
|
|
|
|
normalMode = self.unpackU8(normalByte)
|
|
|
|
@ -140,14 +171,25 @@ class Parm():
|
|
|
|
|
displayStr = '仿真值状态:{}\r\n仿真值:{}\r\n是否启用仿真:{}'
|
|
|
|
|
return displayStr
|
|
|
|
|
|
|
|
|
|
def unpackFloatList2(self, value):
|
|
|
|
|
float1Byte, float2Byte = value[:4], value[4:8]
|
|
|
|
|
float1 = self.unpackFloat(float1Byte)
|
|
|
|
|
float2 = self.unpackFloat(float2Byte)
|
|
|
|
|
displayStr = '值1:{}\r\n值2:{}'.format(float1, float2)
|
|
|
|
|
return displayStr
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def packU8(self, value):
|
|
|
|
|
return struct.pack('>b', value)
|
|
|
|
|
return struct.pack('>b', int(value))
|
|
|
|
|
|
|
|
|
|
def packU16(self, value):
|
|
|
|
|
return struct.pack('>h', value)
|
|
|
|
|
return struct.pack('>h', int(value))
|
|
|
|
|
|
|
|
|
|
def packFloat(self, value):
|
|
|
|
|
return struct.pack('>f', value)
|
|
|
|
|
return struct.pack('>f', float(value))
|
|
|
|
|
|
|
|
|
|
def packU32(self, value):
|
|
|
|
|
return struct.pack('>i', int(value))
|
|
|
|
|
|
|
|
|
|
def pack101(self, value, status):
|
|
|
|
|
valueByte = self.packFloat(value)
|
|
|
|
@ -163,6 +205,7 @@ class Parm():
|
|
|
|
|
packedData = EU100Byte + EU0Byte + unitByte + decPointByte
|
|
|
|
|
return packedData
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def packDS50(self, simulateStatus, simulateValue, simulateEnabled):
|
|
|
|
|
simulateStatusByte = self.packU8(simulateStatus)
|
|
|
|
|
simulateValueByte = self.packFloat(simulateValue)
|
|
|
|
@ -170,6 +213,12 @@ class Parm():
|
|
|
|
|
packedData = simulateStatusByte + simulateValueByte + simulateEnabledByte
|
|
|
|
|
return packedData
|
|
|
|
|
|
|
|
|
|
def packFloatList2(self, float1, float2):
|
|
|
|
|
float1Byte = self.packFloat(float1)
|
|
|
|
|
float2Byte = self.packFloat(float2)
|
|
|
|
|
packedData = float1Byte + float2Byte
|
|
|
|
|
return packedData
|
|
|
|
|
|
|
|
|
|
def unitConver(self, unitValue):
|
|
|
|
|
unit, desc = '1', '1'
|
|
|
|
|
return unit + desc
|
|
|
|
|
return unit + desc
|
|
|
|
|