You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
138 lines
3.9 KiB
Python
138 lines
3.9 KiB
Python
2 years ago
|
import struct
|
||
|
|
||
|
|
||
|
# from skio.worker.state import SlotInfo
|
||
|
|
||
|
|
||
|
class DIdataPacket(object):
|
||
|
|
||
|
def __init__(self, data_type: int, data_size: int, Packet_serial_No: int, lis: list):
|
||
|
self.data_type = data_type
|
||
|
self.data_size = data_size
|
||
|
self.Packet_serial_No = Packet_serial_No
|
||
|
|
||
|
lis1 = []
|
||
|
for i in lis:
|
||
|
lis1 += i
|
||
|
# print(lis1)
|
||
|
|
||
|
self.value = struct.pack('8Q', *lis1)
|
||
|
# print(len(self.value))
|
||
|
self.array = []
|
||
|
|
||
|
self.buf = [
|
||
|
0xF312, self.data_type, self.data_size, self.Packet_serial_No, self.value, 0xF314
|
||
|
]
|
||
|
# print(self.buf)
|
||
|
def packBytes(self):
|
||
|
packstyle = '>HHLL64sH'
|
||
|
req = struct.pack(packstyle, *self.buf)
|
||
|
return req
|
||
|
|
||
|
|
||
|
class AOdataPacket(object):
|
||
|
def __init__(self, data_type: int, data_size: int, Packet_serial_No: int, lis: list):
|
||
|
self.data_type = data_type
|
||
|
self.data_size = data_size
|
||
|
self.Packet_serial_No = Packet_serial_No
|
||
|
self.value = struct.pack('d' * 80, *lis)
|
||
|
|
||
|
self.buf = [
|
||
|
0xF312, self.data_type, self.data_size, self.Packet_serial_No, self.value, 0xF314
|
||
|
]
|
||
|
# print(self.buf)
|
||
|
def packBytes(self):
|
||
|
packstyle = '>HHLL640sH'
|
||
|
req = struct.pack(packstyle, *self.buf)
|
||
|
return req
|
||
|
|
||
|
|
||
|
class AIdataPacket(object):
|
||
|
def __init__(self, data_type: int, data_size: int, Packet_serial_No: int):
|
||
|
self.data_type = data_type
|
||
|
self.data_size = data_size
|
||
|
self.Packet_serial_No = Packet_serial_No
|
||
|
|
||
|
self.buf = [
|
||
|
0xF312, self.data_type, self.data_size, self.Packet_serial_No, 0xF314
|
||
|
]
|
||
|
|
||
|
def packBytes(self):
|
||
|
packstyle = '>HHLLH'
|
||
|
req = struct.pack(packstyle, *self.buf)
|
||
|
return req
|
||
|
|
||
|
|
||
|
class GSstartdataPacket(object):
|
||
|
def __init__(self, data_type: int, data_size: int, Packet_serial_No: int):
|
||
|
self.data_type = data_type
|
||
|
self.data_size = data_size
|
||
|
self.Packet_serial_No = Packet_serial_No
|
||
|
|
||
|
self.buf = [
|
||
|
0xF312, self.data_type, self.data_size, self.Packet_serial_No, 0xF314
|
||
|
]
|
||
|
|
||
|
def packBytes(self):
|
||
|
packstyle = '>HHLLH'
|
||
|
req = struct.pack(packstyle, *self.buf)
|
||
|
return req
|
||
|
|
||
|
|
||
|
class GSstopdataPacket(object):
|
||
|
def __init__(self, data_type: int, data_size: int, Packet_serial_No: int):
|
||
|
self.data_type = data_type
|
||
|
self.data_size = data_size
|
||
|
self.Packet_serial_No = Packet_serial_No
|
||
|
|
||
|
self.buf = [
|
||
|
0xF312, self.data_type, self.data_size, self.Packet_serial_No, 0xF314
|
||
|
]
|
||
|
|
||
|
def packBytes(self):
|
||
|
packstyle = '>HHLLH'
|
||
|
req = struct.pack(packstyle, *self.buf)
|
||
|
return req
|
||
|
|
||
|
|
||
|
class HSdataPacket(object):
|
||
|
def __init__(self, data_type: int, data_size: int, Packet_serial_No: int, lis: list):
|
||
|
self.data_type = data_type
|
||
|
self.data_size = 456
|
||
|
self.Packet_serial_No = Packet_serial_No
|
||
|
self.value = struct.pack('d' * 57, *lis)
|
||
|
print(self.data_type,self.data_size)
|
||
|
|
||
|
self.buf = [
|
||
|
0xF312, self.data_type, self.data_size, self.Packet_serial_No, self.value, 0xF314
|
||
|
]
|
||
|
|
||
|
def packBytes(self):
|
||
|
packstyle = '>HHLL456sH'
|
||
|
req = struct.pack(packstyle, *self.buf)
|
||
|
return req
|
||
|
|
||
|
|
||
|
class STDdataPacket(object):
|
||
|
def __init__(self, data_type: int, data_size: int, Packet_serial_No: int, lis: list):
|
||
|
self.data_type = data_type
|
||
|
self.data_size = data_size
|
||
|
self.Packet_serial_No = Packet_serial_No
|
||
|
self.value = struct.pack('d' * self.data_size / 8, *lis)
|
||
|
|
||
|
self.buf = [
|
||
|
0xF312, self.data_type, self.data_size, self.Packet_serial_No, self.value, 0xF314
|
||
|
]
|
||
|
|
||
|
def packBytes(self):
|
||
|
packstyle = '>HHLL%ssH' % self.data_size
|
||
|
req = struct.pack(packstyle, *self.buf)
|
||
|
return req
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
A = AOdataPacket(1, 320, 0X0000000, [1] + [0] * 39)
|
||
|
print(A.value)
|
||
|
A.packBytes()
|
||
|
print(A.packBytes())
|