#!/usr/bin/python
|
# -*- coding: GBK -*-
|
#×÷Õß :
|
|
import CommFunc
|
import binascii
|
import copy
|
from struct import *
|
from ctypes import *
|
#²å¼þÍ·
|
#
|
#
|
ChNetPackDict={}
|
class BString:
|
NameLen = 0 # (BYTE NameLen )
|
Name = "" # (String Name ) //size = NameLen
|
data = None
|
|
def __init__(self):
|
self.Clear()
|
|
return
|
def ReadData(self, _lpData, _pos=0, _Len=0):
|
self.Clear()
|
|
self.NameLen, _pos = CommFunc.ReadBYTE(_lpData, _pos)
|
self.Name, _pos = CommFunc.ReadString(_lpData, _pos, self.NameLen)
|
|
return _pos
|
|
def Clear(self):
|
self.NameLen = 0
|
self.Name = ""
|
return
|
|
def GetLength(self):
|
length = 0
|
length += 1
|
length += self.Name.Length()
|
return length
|
|
def GetBuffer(self):
|
data = ''
|
data = CommFunc.WriteBYTE(data, self.NameLen)
|
data = CommFunc.WriteString(data, self.NameLen, self.Name)
|
return data
|
|
def OutputString(self):
|
DumpString = ''':
|
NameLen:%d,
|
Name:%s
|
'''\
|
%(
|
self.NameLen,
|
self.Name
|
)
|
|
return DumpString
|
|
class tagHead:
|
Cmd = 0 # (BYTE Cmd )
|
SubCmd = 0 # (BYTE SubCmd )
|
def __init__(self):
|
self.Clear()
|
|
return
|
def ReadData(self, _lpData, _pos=0, _Len=0):
|
self.Clear()
|
|
self.Cmd, _pos = CommFunc.ReadBYTE(_lpData, _pos)
|
self.SubCmd, _pos = CommFunc.ReadBYTE(_lpData, _pos)
|
|
return _pos
|
|
def Clear(self):
|
self.Cmd = 0
|
self.SubCmd = 0
|
return
|
|
def GetLength(self):
|
length = 0
|
length += 1
|
length += 1
|
return length
|
|
def GetBuffer(self):
|
data = ''
|
data = CommFunc.WriteBYTE(data, self.Cmd)
|
data = CommFunc.WriteBYTE(data, self.SubCmd)
|
return data
|
|
def OutputString(self):
|
DumpString = ''':
|
Cmd:%d,
|
SubCmd:%d
|
'''\
|
%(
|
self.Cmd,
|
self.SubCmd
|
)
|
|
return DumpString
|
#------------------------------------------------------
|
# C2 02 ¿ç·þͨÓÃÐÅÏ¢°ü #tagSSCommMsg
|
|
class tagSSCommMsg(Structure):
|
Head = tagHead()
|
FromServerID = 0 #(DWORD FromServerID)//Äĸö·þ·¢µÄ
|
ServerTime = 0 #(DWORD ServerTime)//À´Ô´·þÎñÆ÷ʱ¼ä´Á
|
TypeLen = 0 #(BYTE TypeLen)
|
MsgType = "" #(String MsgType)
|
Len = 0 #(DWORD Len)
|
Data = "" #(String Data)
|
data = None
|
|
def __init__(self):
|
self.Clear()
|
self.Head.Cmd = 0xC2
|
self.Head.SubCmd = 0x02
|
return
|
|
def ReadData(self, _lpData, _pos=0, _Len=0):
|
self.Clear()
|
_pos = self.Head.ReadData(_lpData, _pos)
|
self.FromServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
self.ServerTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
self.TypeLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
self.MsgType,_pos = CommFunc.ReadString(_lpData, _pos,self.TypeLen)
|
self.Len,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
self.Data,_pos = CommFunc.ReadString(_lpData, _pos,self.Len)
|
return _pos
|
|
def Clear(self):
|
self.Head = tagHead()
|
self.Head.Clear()
|
self.Head.Cmd = 0xC2
|
self.Head.SubCmd = 0x02
|
self.FromServerID = 0
|
self.ServerTime = 0
|
self.TypeLen = 0
|
self.MsgType = ""
|
self.Len = 0
|
self.Data = ""
|
return
|
|
def GetLength(self):
|
length = 0
|
length += self.Head.GetLength()
|
length += 4
|
length += 4
|
length += 1
|
length += len(self.MsgType)
|
length += 4
|
length += len(self.Data)
|
|
return length
|
|
def GetBuffer(self):
|
data = ''
|
data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
data = CommFunc.WriteDWORD(data, self.FromServerID)
|
data = CommFunc.WriteDWORD(data, self.ServerTime)
|
data = CommFunc.WriteBYTE(data, self.TypeLen)
|
data = CommFunc.WriteString(data, self.TypeLen, self.MsgType)
|
data = CommFunc.WriteDWORD(data, self.Len)
|
data = CommFunc.WriteString(data, self.Len, self.Data)
|
return data
|
|
def OutputString(self):
|
DumpString = '''
|
Head:%s,
|
FromServerID:%d,
|
ServerTime:%d,
|
TypeLen:%d,
|
MsgType:%s,
|
Len:%d,
|
Data:%s
|
'''\
|
%(
|
self.Head.OutputString(),
|
self.FromServerID,
|
self.ServerTime,
|
self.TypeLen,
|
self.MsgType,
|
self.Len,
|
self.Data
|
)
|
return DumpString
|
|
|
m_NAtagSSCommMsg=tagSSCommMsg()
|
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSSCommMsg.Head.Cmd,m_NAtagSSCommMsg.Head.SubCmd))] = m_NAtagSSCommMsg
|
|
|
#------------------------------------------------------
|
# C2 01 ¿ç·þ·þÎñÆ÷¼äµÄ²âÊÔ°ü #tagSSTest
|
|
class tagSSTest(Structure):
|
_pack_ = 1
|
_fields_ = [
|
("Cmd", c_ubyte),
|
("SubCmd", c_ubyte),
|
("Data", c_int), #²âÊÔ
|
]
|
|
def __init__(self):
|
self.Clear()
|
self.Cmd = 0xC2
|
self.SubCmd = 0x01
|
return
|
|
def ReadData(self, stringData, _pos=0, _len=0):
|
self.Clear()
|
memmove(addressof(self), stringData[_pos:], self.GetLength())
|
return _pos + self.GetLength()
|
|
def Clear(self):
|
self.Cmd = 0xC2
|
self.SubCmd = 0x01
|
self.Data = 0
|
return
|
|
def GetLength(self):
|
return sizeof(tagSSTest)
|
|
def GetBuffer(self):
|
return string_at(addressof(self), self.GetLength())
|
|
def OutputString(self):
|
DumpString = '''// C2 01 ¿ç·þ·þÎñÆ÷¼äµÄ²âÊÔ°ü //tagSSTest:
|
Cmd:%s,
|
SubCmd:%s,
|
Data:%d
|
'''\
|
%(
|
self.Cmd,
|
self.SubCmd,
|
self.Data
|
)
|
return DumpString
|
|
|
m_NAtagSSTest=tagSSTest()
|
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSSTest.Cmd,m_NAtagSSTest.SubCmd))] = m_NAtagSSTest
|