#!/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