50 lines
997 B
Python
50 lines
997 B
Python
|
|
#!/usr/bin/env python
|
||
|
|
#encoding=utf-8
|
||
|
|
|
||
|
|
from ctypes import *
|
||
|
|
|
||
|
|
class TPkt(BigEndianStructure):
|
||
|
|
pass
|
||
|
|
TPkt._pack_ = 1
|
||
|
|
TPkt._fields_=[
|
||
|
|
('len', c_uint, 12),
|
||
|
|
('rsv1', c_uint, 2),
|
||
|
|
('type', c_uint, 2),
|
||
|
|
('rsv2', c_uint16),
|
||
|
|
('data', c_uint8 * 2040),
|
||
|
|
]
|
||
|
|
|
||
|
|
class TSubPkt(BigEndianStructure):
|
||
|
|
pass
|
||
|
|
|
||
|
|
TSubPkt._pack_ = 1
|
||
|
|
TSubPkt._fields_=[
|
||
|
|
('dev', c_uint, 14),
|
||
|
|
('mode', c_uint, 2),
|
||
|
|
('addr', c_uint16),
|
||
|
|
('cmd', c_uint, 4),
|
||
|
|
('slen', c_uint, 12),
|
||
|
|
('wkr', c_uint16)
|
||
|
|
]
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
if __name__ == '__main__':
|
||
|
|
packet = b'\0' * 2048
|
||
|
|
|
||
|
|
pkt = cast (packet, POINTER(TPkt)).contents
|
||
|
|
pkt.len = 512
|
||
|
|
pkt.rsv1 = 0
|
||
|
|
pkt.type = 0
|
||
|
|
pkt.rsv2 = 0
|
||
|
|
pkt.data[0] = 1
|
||
|
|
pkt.data[1] = 2
|
||
|
|
pkt.data[2] = 3
|
||
|
|
pkt.data[3] = 4
|
||
|
|
|
||
|
|
for i in range(10):
|
||
|
|
print(hex(packet[i]), ' ')
|
||
|
|
|
||
|
|
|