青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

socketref,再見!高德

https://github.com/adoggie

  C++博客 :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
  246 Posts :: 4 Stories :: 312 Comments :: 0 Trackbacks

常用鏈接

留言簿(54)

我參與的團隊

搜索

  •  

最新評論

閱讀排行榜

評論排行榜


ks108 Gps定位模塊接入服務(wù)中心,解碼類:
  1 # -- coding:utf-8 --
  2 #解碼器定義
  3 #2011.3.10 scott  sw2us.com
  4 #from aobject import *
  5 import os,os.path,sys,time,datetime,copy
  6 #import codec
  7 
  8 #MediaCodecType = MediaDataType
  9 class MediaDataType:    
 10     GPS   = 1<<0
 11     AUDIO = 1<<1
 12     VIDEO = 1<<2
 13     IMAGE = 1<<3
 14     TEXT =  1<<4
 15     IODATA = 1<<5
 16     RAWBLOB = 1<<6    
 17     COMMAND = 1<<7    #通用命令
 18     ALARM =  1<<8  #報警信息
 19     UNDEFINED = 0xff
 20     
 21 
 22 AOCTRL_CMD_SHAKE_ACK =1     #應(yīng)答握手信號信息
 23 AOCTRL_CMD_REG_ACK= 2    #終端注冊響應(yīng)消息
 24 AOCTRL_CMD_SAMPLING_TIMESET = 3     #等時連續(xù)回傳設(shè)置
 25 AOCTRL_CMD_ALARM_ACK = 4    #應(yīng)答報警消息
 26 AOCTRL_CMD_NAMED = 5     #一次點名消息
 27 AOCTRL_CMD_SPEEDSET = 6 #設(shè)置車速上下限
 28 AOCTRL_CMD_POWER_ONOFF = 7 #電路控制信號
 29 AOCTRL_CMD_OIL_ONOFF = 8  #油路控制信號
 30 AOCTRL_CMD_REBOOT = 9         #控制設(shè)備重啟消息
 31 AOCTRL_CMD_ACC_ON_TIME = 10 #設(shè)置ACC開發(fā)送數(shù)據(jù)間隔
 32 AOCTRL_CMD_ACC_OFF_TIME = 11 #設(shè)置ACC關(guān)發(fā)送數(shù)據(jù)間隔
 33 AOCTRL_CMD_BARRIER_SET = 12     #設(shè)置電子圍欄消息
 34 AOCTRL_CMD_GETLOCATION = 13         #應(yīng)答獲取終端所在位置消息
 35 AOCTRL_CMD_LISTEN_START = 14         #監(jiān)聽命令
 36 AOCTRL_CMD_COMMADDR_SET = 15     #設(shè)置終端IP地址和端口
 37 AOCTRL_CMD_APN_SET = 16            # 設(shè)置APN消息
 38 AOCTRL_CMD_GET_VERSION = 17     # 讀取終端版本消息
 39 AOCTRL_CMD_CLEAR_ALARMS = 18     #取消所有報警消息
 40 AOCTRL_CMD_CLEAR_MILES = 19     #里程清零消息
 41 AOCTRL_CMD_INIT_MILES = 20         #里程初始化消息
 42 AOCTRL_CMD_UPDATING = 21         #啟動升級消息
 43 
 44 AOCTRL_CMD_SHACK_REQ =31 #握手信號消息
 45 AOCTRL_CMD_REG_REQ =32     #終端注冊信息
 46 AOCTRL_CMD_SAMPLING_TIMESET_ACK = 32 #應(yīng)答等時連續(xù)回傳設(shè)置
 47 AOCTRL_CMD_ALARM_REQ = 33         #警報消息
 48 AOCTRL_CMD_NAMED_ACK = 34         #應(yīng)答點名信息
 49 AOCTRL_CMD_SIMPLING_GPSDATA = 35         #等時連續(xù)回傳消息
 50 AOCTRL_CMD_SIMPLING_END = 36     #連續(xù)回傳結(jié)束消息
 51 AOCTRL_CMD_SPEEDSET_ACK = 37     #應(yīng)答設(shè)置車速上下限
 52 AOCTRL_CMD_POWERCTRL_ACK = 38   #應(yīng)答電路控制
 53 AOCTRL_CMD_OILCTRL_ACK = 39     #應(yīng)答油路控制
 54 AOCTRL_CMD_REBOOT_ACK = 40         #應(yīng)答設(shè)備重啟消息
 55 AOCTRL_CMD_ACCON_TIMESET_ACK = 41 #應(yīng)答設(shè)置ACC開發(fā)送數(shù)據(jù)間隔
 56 AOCTRL_CMD_ACCOFF_TIMESET_ACK=42 #應(yīng)答設(shè)置ACC關(guān)發(fā)送數(shù)據(jù)間隔
 57 AOCTRL_CMD_BARRIER_SET_ACK =  43 #應(yīng)答設(shè)置電子圍欄消息
 58 AOCTRL_CMD_GETLOCATION_ACK = 44  #獲取終端所在位置消息
 59 AOCTRL_CMD_LISTEN_ACK = 45         #應(yīng)答監(jiān)聽命令
 60 AOCTRL_CMD_COMMADDR_SET_ACK=46    #應(yīng)答設(shè)置終端IP地址和端口
 61 AOCTRL_CMD_APN_SET_ACK=47        #應(yīng)答設(shè)置APN消息
 62 AOCTRL_CMD_GETVERSION_ACK=48    #應(yīng)答讀取終端版本消息
 63 AOCTRL_CMD_CLEAR_ALARMS_ACK=49    #應(yīng)答取消所有報警消息
 64 AOCTRL_CMD_CLEAR_MILES_ACK=50     #應(yīng)答里程清零消息
 65 AOCTRL_CMD_UPDATING_ACK = 61     #應(yīng)答啟動升級消息
 66 AOCTRL_CMD_INIT_MILES_ACK = 62    #應(yīng)答初始化里程消息    
 67 
 68 AOCTRL_CMD_LIST={
 69     AOCTRL_CMD_SHAKE_ACK:u'應(yīng)答握手信號信息',
 70     AOCTRL_CMD_REG_ACK:u'終端注冊響應(yīng)消息',
 71     AOCTRL_CMD_SAMPLING_TIMESET:u'等時連續(xù)回傳設(shè)置',
 72     AOCTRL_CMD_ALARM_ACK:u'應(yīng)答報警消息',
 73     AOCTRL_CMD_NAMED:u'一次點名消息',
 74     AOCTRL_CMD_SPEEDSET:u'設(shè)置車速上下限',
 75     
 76     AOCTRL_CMD_POWER_ONOFF:u'電路控制信號',
 77     AOCTRL_CMD_OIL_ONOFF:u'油路控制信號',
 78     AOCTRL_CMD_REBOOT:u'控制設(shè)備重啟消息',
 79     AOCTRL_CMD_ACC_ON_TIME :u'設(shè)置ACC開發(fā)送數(shù)據(jù)間隔',
 80     AOCTRL_CMD_ACC_OFF_TIME :u'設(shè)置ACC關(guān)發(fā)送數(shù)據(jù)間隔',
 81     AOCTRL_CMD_BARRIER_SET :u'設(shè)置電子圍欄消息',
 82     AOCTRL_CMD_GETLOCATION :u'應(yīng)答獲取終端所在位置消息',
 83     AOCTRL_CMD_LISTEN_START :u'監(jiān)聽命令',
 84     AOCTRL_CMD_COMMADDR_SET :u'設(shè)置終端IP地址和端口',
 85     AOCTRL_CMD_APN_SET :u'設(shè)置APN消息',
 86     AOCTRL_CMD_GET_VERSION :u'讀取終端版本消息',
 87     AOCTRL_CMD_CLEAR_ALARMS :u'取消所有報警消息',
 88     AOCTRL_CMD_CLEAR_MILES :u'里程清零消息',
 89     AOCTRL_CMD_INIT_MILES :u'里程初始化消息',
 90     AOCTRL_CMD_UPDATING :u'啟動升級消息',
 91     
 92     AOCTRL_CMD_SHACK_REQ :u'握手信號消息',
 93     AOCTRL_CMD_REG_REQ :u'終端注冊信息',
 94     AOCTRL_CMD_SAMPLING_TIMESET_ACK :u'應(yīng)答等時連續(xù)回傳設(shè)置',
 95     AOCTRL_CMD_ALARM_REQ :u'警報消息',
 96     AOCTRL_CMD_NAMED_ACK :u'應(yīng)答點名信息',
 97     AOCTRL_CMD_SIMPLING_GPSDATA :u'等時連續(xù)回傳消息',
 98     AOCTRL_CMD_SIMPLING_END :u'連續(xù)回傳結(jié)束消息',
 99     AOCTRL_CMD_SPEEDSET_ACK :u'應(yīng)答設(shè)置車速上下限',
100     AOCTRL_CMD_POWERCTRL_ACK :u'應(yīng)答電路控制',
101     AOCTRL_CMD_OILCTRL_ACK :u'應(yīng)答油路控制',
102     AOCTRL_CMD_REBOOT_ACK :u'應(yīng)答設(shè)備重啟消息',
103     AOCTRL_CMD_ACCON_TIMESET_ACK :u'應(yīng)答設(shè)置ACC開發(fā)送數(shù)據(jù)間隔',
104     AOCTRL_CMD_ACCOFF_TIMESET_ACK:u'應(yīng)答設(shè)置ACC關(guān)發(fā)送數(shù)據(jù)間隔',
105     AOCTRL_CMD_BARRIER_SET_ACK :u'應(yīng)答設(shè)置電子圍欄消息',
106     AOCTRL_CMD_GETLOCATION_ACK :u'獲取終端所在位置消息',
107     AOCTRL_CMD_LISTEN_ACK :u'應(yīng)答監(jiān)聽命令',
108     AOCTRL_CMD_COMMADDR_SET_ACK:u'應(yīng)答設(shè)置終端IP地址和端口',
109     AOCTRL_CMD_APN_SET_ACK:u'應(yīng)答設(shè)置APN消息',
110     AOCTRL_CMD_GETVERSION_ACK:u'應(yīng)答讀取終端版本消息',
111     AOCTRL_CMD_CLEAR_ALARMS_ACK:u'應(yīng)答取消所有報警消息',
112     AOCTRL_CMD_CLEAR_MILES_ACK:u'應(yīng)答里程清零消息',
113     AOCTRL_CMD_UPDATING_ACK :u'應(yīng)答啟動升級消息',
114     AOCTRL_CMD_INIT_MILES_ACK :u'應(yīng)答初始化里程消息',    
115 }
116     
117     
118 ALARM_TYPELIST={
119     0:u'車輛斷電',
120     1:u'電子圍欄入界報警',
121     2:u'車輛劫警(SOS求助)',
122     3:u'車輛防盜器警報',
123     4:u'車輛低速報警',
124     5:u'車輛超速報警',
125     6:u'電子圍欄出界報警'
126 }
127 
128 def parseTime(dmy,hms):
129     d,mon,y = map(int, map(float,[dmy[:2],dmy[2:4],dmy[4:]]) )
130     h,min,s = map(int, map(float,[hms[:2],hms[2:4],hms[4:]]) )
131     #print d,mon,y,h,min,s
132     return time.mktime((2000+y,mon,d,h,min,s,0,0,0))
133 
134 #簡單的模擬gps接收解碼器
135 #gps接收程序解析之后連接本地的TcpService端口,并傳送過來
136 #只有簡單的gps數(shù)據(jù),模擬端口打開
137 class MediaCodec_KS108:
138     def __init__(self):
139         self.buf =''
140         self.conn = None        
141     
142     
143     def parse_gps(self,msg,s):
144         # gps 數(shù)據(jù)長度62個字符
145         msg['gps'= None #AOCTRL_CMD_SIMPLING_GPSDATA
146         if len(s)!=62:
147             return
148         try:
149             yy = int(s[:2])
150             mm = int(s[2:4])
151             dd = int(s[4:6])
152             av = s[6]    #是否有效
153             lat = int(s[7:9])+ float( s[9:16]) / 60.
154             ns = s[16#維度標(biāo)志 N/S
155             lon = int(s[17:20]) + float( s[20:27]) /60.
156             ew = s[27]
157             speed = float(s[28:33])
158             HH = int(s[33:35])
159             MM = int(s[35:37])
160             SS = int(s[37:39])
161             angle = float(s[39:45])
162             power = int(s[45])
163             acc = int(s[46])
164             mileflag = s[53]
165             miles = int(s[54:],16)
166             gpstime = datetime.datetime(2000+yy,mm,dd,HH,MM,SS)
167             #GMT+8
168             gpstime = gpstime + datetime.timedelta(hours=8)
169             msg['gps'= {
170                 'time':gpstime,
171                 'lon':lon,
172                 'lat':lat,
173                 'speed':speed,
174                 'angle':angle,
175                 'power':power,
176                 'acc':acc,
177                 'miles':miles
178             }
179         except:
180             traceback.print_exc()
181             msg['gps'= None
182     
183         
184         
185     def __parseMessage(self,s):
186         # @return:  [object,] or [None,]        
187         msg={'mid':self.conn.mid,'cmd':0,'seq':'','params':'','gps':None}    # mid - 模塊硬件編號
188         
189         
190         cmd = s[12:16]
191         msg['msg'= cmd
192         msg['seq'= s[:12]
193         
194         if cmd == 'BP00' and len(s) == 24:
195             msg['cmd'= AOCTRL_CMD_SHACK_REQ
196         elif cmd =='BP05':    #注冊信息
197             msg['cmd'= AOCTRL_CMD_REG_REQ
198             msg['mid'= s[16:31#            
199             self.conn.mid = msg['mid'#設(shè)備連接上來這個是第一個消息包
200             #將gps獨立出單獨的包
201             self.parse_gps(msg,s[31:])
202         elif cmd =='BS08' and len(s) == 24:
203             msg['cmd'= AOCTRL_CMD_SAMPLING_TIMESET_ACK    #應(yīng)答等時連續(xù)回傳設(shè)置
204             msg['samplewait'= int(s[16:20],16)
205             hours = int(s[20:22],16)
206             minutes = int(s[22:24],16)
207             msg['samplecycle'= hours*3600 + minutes * 60
208             msg['params'= "samplewait:%s,samplecycle:%s"%(msg['samplewait'],msg['samplecycle'])
209             
210         elif cmd == 'BO01':
211             msg['cmd'= AOCTRL_CMD_ALARM_REQ    #警報消息
212             msg['alarm'= int(s[16]) #報警類型
213             msg['params'= ALARM_TYPELIST[msg['alarm']]
214             self.parse_gps(msg,s[17:])
215         elif cmd =='BP04' : #點名應(yīng)答
216             msg['cmd'= AOCTRL_CMD_NAMED_ACK    #應(yīng)答點名信息
217             self.parse_gps(msg,s[16:])
218         elif cmd == 'BR00' :
219             msg['cmd'= AOCTRL_CMD_SIMPLING_GPSDATA
220             self.parse_gps(msg,s[16:])
221         elif cmd == 'BR02' :
222             msg['cmd'= AOCTRL_CMD_SIMPLING_END
223             self.parse_gps(msg,s[16:])
224         elif cmd == 'BP12' and len(s) == 24:
225             msg['cmd'= AOCTRL_CMD_SPEEDSET_ACK
226             msg['hispeed'= int(s[17:20])
227             msg['lospeed'= int(s[21:24]) #低速限制
228             msg['params'= "hispeed:%s,lospeed:%s"%( msg['hispeed'],msg['lospeed'] )
229             
230         elif cmd == 'BV00' and len(s) == 17:
231             msg['cmd'= AOCTRL_CMD_POWERCTRL_ACK ##應(yīng)答電路控制
232             msg['onoff'= int(len(s[17]))
233             if msg['onoff'== 0:
234                 msg['params'= u'已關(guān)電路'
235             else:
236                 msg['params'= '已開電路'
237                 
238         elif cmd =='BV01' and len(s) == 17:#應(yīng)答油路控制
239             msg['cmd'= AOCTRL_CMD_OILCTRL_ACK
240             msg['onoff'= int(len(s[17]))
241             if msg['onoff'== 0:
242                 msg['params'= u'已關(guān)油路'
243             else:
244                 msg['params'= '已開油路'
245         elif cmd =='BT00':
246             msg['cmd'= AOCTRL_CMD_REBOOT_ACK
247         elif cmd =='BR05':
248             msg['cmd'= AOCTRL_CMD_ACCON_TIMESET_ACK    #應(yīng)答設(shè)置ACC開發(fā)送數(shù)據(jù)間隔
249         elif cmd =='BR06':
250             msg['cmd'= AOCTRL_CMD_ACCOFF_TIMESET_ACK    #應(yīng)答設(shè)置ACC關(guān)發(fā)送數(shù)據(jù)間隔
251         elif cmd == 'BU00':
252             msg['cmd'= AOCTRL_CMD_BARRIER_SET_ACK
253         elif cmd == 'BR03':        #獲取終端所在位置消息
254             msg['cmd'= AOCTRL_CMD_GETLOCATION_ACK            
255             self.parse_gps(msg,s[16:])
256         elif cmd =='BS20' :
257             msg['cmd'=  AOCTRL_CMD_LISTEN_ACK  #應(yīng)答監(jiān)聽命令
258         elif cmd =='BP02' and len(s) == 16:
259             msg['cmd'= AOCTRL_CMD_COMMADDR_SET_ACK    #應(yīng)答設(shè)置終端IP地址和端口
260         elif cmd =='BP03':
261             msg['cmd'= AOCTRL_CMD_APN_SET_ACK    #應(yīng)答設(shè)置APN消息
262         elif cmd == 'BP01':
263             msg['cmd'= AOCTRL_CMD_GETVERSION_ACK
264             msg['version'= s[16:]
265         elif cmd == 'BS21':
266             msg['cmd'= AOCTRL_CMD_CLEAR_ALARMS_ACK #應(yīng)答取消所有報警消息
267         elif cmd == 'BS04':
268             msg['cmd'= AOCTRL_CMD_CLEAR_MILES_ACK #應(yīng)答里程清零消息
269         elif cmd == 'BS05':
270             msg['cmd'= AOCTRL_CMD_UPDATING_ACK     #= 61     #應(yīng)答啟動升級消息
271         elif cmd == 'BS06':
272             msg['cmd'= AOCTRL_CMD_INIT_MILES_ACK    #應(yīng)答初始化里程消息            
273         else:
274             msg = None
275         #print 'decode:',msg
276         return msg
277     
278     # parse - codec 必須實現(xiàn)
279     #對于某些設(shè)備的請求消息,這里必須進行默認的應(yīng)答
280     #如果出現(xiàn)大量數(shù)據(jù)包的要發(fā)送回設(shè)備的情況,考慮建立隊列,用工作線程
281     # 慢慢發(fā)送,因為parse還在socket接收線程中
282     def parse(self,aom,d):        
283         cmd = d['cmd']
284         s=''
285         if cmd == AOCTRL_CMD_SHACK_REQ:    #握手回復(fù)
286             s = self.command(aom,{'cmd':AOCTRL_CMD_SHAKE_ACK,'seq':d['seq']})            
287         if cmd == AOCTRL_CMD_REG_REQ: #設(shè)備注冊
288             s =self.command(aom,{'cmd':AOCTRL_CMD_REG_ACK,'seq':d['seq']})
289         if cmd == AOCTRL_CMD_ALARM_REQ:
290             s = self.command(aom,{'cmd':AOCTRL_CMD_ALARM_ACK,'seq':d['seq'],'alarm':d['alarm']})
291         if s:
292             print 'send back to device:',s
293             self.conn.handle.sendall(s)
294             
295     def decode(self,s,conn):            
296         #@return:     packets,retry        
297         #解碼出多個消息包,并返回是否
298         self.conn = conn        
299         msglist=[]
300         retry = True
301         print s
302         self.buf+=s        
303         while True:
304             p1 = self.buf.find('(')            
305             if p1 == -1:
306                 self.buf=''
307                 break
308             self.buf = self.buf[p1:]
309             
310             p2 = self.buf.find(')')
311             if p2 == -1:
312                 if len(self.buf) > 1024:
313                     return (),False # please break socket connection
314                 break    # push in more data                
315             #find tail
316             msg = None
317             try:
318                 msg = self.__parseMessage(self.buf[1:p2])
319             except:
320                 traceback.print_exc()
321                 msg = None
322             if msg:
323                 msglist.append(msg)
324             self.buf = self.buf[p2+1:]
325         return msglist,retry
326 
327 
328     
329     #執(zhí)行設(shè)備命令
330     def command(self,aom,msg):
331         # cmd - object (json decoded)
332         #@return:  返回命令控制消息
333         cmd = msg['cmd']
334         code=''
335         params=''
336         if not msg.has_key('seq'):
337             msg['seq'= '0'*12
338             
339         if cmd == AOCTRL_CMD_REG_ACK: #注冊響應(yīng)
340             code = "(%sAP05)"%(msg['seq'])
341             
342         elif cmd == AOCTRL_CMD_SAMPLING_TIMESET: #等時連續(xù)回傳設(shè)置
343             wait = msg['samplewait']    #時間間隔
344             cycle = msg['samplecycle']     #總時長
345             hh = int(cycle/3600)
346             mm = (cycle - hh*3600)/60
347             mm = int(mm)            
348             code = "(%sAR00%04x%02x%02x)"%('0'*12,wait,hh,mm)
349             params = "wait:%s seconds, cycle: %s hours,%s mimuts"%(wait,hh,mm)            
350         elif cmd == AOCTRL_CMD_ALARM_ACK: #應(yīng)答報警消息
351             alarm = msg['alarm']
352             code = "(%sAS01%d)"%(msg['seq'],alarm)
353             params = ALARM_TYPELIST[alarm]            
354         elif cmd == AOCTRL_CMD_NAMED : #一次點名消息
355             code = "(%sAP00)"%('0'*12)
356         elif cmd == AOCTRL_CMD_SPEEDSET: #設(shè)置車速上下限
357             hi = msg['hispeed']
358             lo = msg['lospeed']
359             code = "(%sAP12H%03dL%03d)"%('0'*12,hi,lo)
360             params = "hi:%s,lo:%s"%(hi,lo)
361         elif cmd == AOCTRL_CMD_POWER_ONOFF: #電路控制信號
362             onoff = msg['onoff']
363             code = "(%sAV00%d)"%('0'*12,onoff) #“1”表示開電路,“0”表示關(guān)電路
364             params = "onoff:%s"%(onoff)
365         elif cmd ==AOCTRL_CMD_OIL_ONOFF: #油路控制信號
366             onoff = msg['onoff']
367             code = "(%sAV01%d)"%('0'*12,onoff) #“1”表示開油路,“0”表示關(guān)油路
368             params = "onoff:%s"%(onoff)
369         elif cmd == AOCTRL_CMD_REBOOT:     #控制設(shè)備重啟消息
370             code = "(%sAT00)"%('0'*12)
371         elif cmd == AOCTRL_CMD_ACC_ON_TIME: #設(shè)置ACC開發(fā)送數(shù)據(jù)間隔
372             interval = msg['interval']
373             code = "(%sAR05%04x)"%('0'*12,interval)
374             params = "interval:%s seconds"%(interval)
375         elif cmd == AOCTRL_CMD_ACC_OFF_TIME: #設(shè)置ACC關(guān)發(fā)送數(shù)據(jù)間隔
376             interval = msg['interval']
377             code = "(%sAR06%04x)"%('0'*12,interval)
378             params = "interval:%s seconds"%(interval)
379         elif cmd == AOCTRL_CMD_BARRIER_SET: #設(shè)置電子圍欄消息
380             pass
381             #code = "(%sAR06%04x)"%('0'*12,interval)
382         elif cmd ==AOCTRL_CMD_GETLOCATION : #應(yīng)答獲取終端所在位置消息
383             pass
384         elif cmd == AOCTRL_CMD_LISTEN_START: #監(jiān)聽命令
385             phone = msg['phone']
386             code = "(%sAP15%s)"%('0'*12,phone) #讓設(shè)備主動撥打電話
387             params = "phone:%s"%(phone)
388         elif cmd == AOCTRL_CMD_COMMADDR_SET: #設(shè)置終端IP地址和端口
389             p1,p2,p3,p4 = map(int,msg['ip'].strip().split('.'))
390             port = int(msg['port'])
391             code = "(%sAP03%03d%03d%03d%03d%05d)"%('0'*12,p1,p2,p3,p4,port)
392             params = "%s:%s"%(msg['ip'],msg['port'])
393         elif cmd == AOCTRL_CMD_APN_SET: #設(shè)置APN消息
394             apn = msg['apn']
395             code = "(%sAP04%s)"%('0'*12,apn)
396             params = "APN:%s"%(apn)
397         elif cmd == AOCTRL_CMD_GET_VERSION: #讀取終端版本消息
398             code = "(%sAP07)"%('0'*12)
399         elif cmd == AOCTRL_CMD_CLEAR_ALARMS: #取消所有報警消息
400             code = "(%sAV02)"%('0'*12)
401         elif cmd == AOCTRL_CMD_CLEAR_MILES: #里程清零消息
402             code = "(%sAX01)"%('0'*12)
403         elif cmd == AOCTRL_CMD_INIT_MILES: #里程初始化消息
404             miles = msg['miles']
405             code = "(%sAX03%08x)"%('0'*12,miles) #為初始化里程值,8位16進制的ASCII值,單位為米
406             params = "miles:%s"%(miles)
407         elif cmd == AOCTRL_CMD_UPDATING: #啟動升級消息
408             ip = msg['ip']
409             port = msg['port']
410             code = "(%sAX02%s:%s)"%('0'*12,ip,port)
411             params ="%s:%s"%(ip,port)
412         else:
413             return ''
414         #save to ctrl log         
415         log = aom.gm.AO_CtrlLog()
416         log.ao = aom.ao.dbobj
417         log.cmd = cmd
418         log.time = datetime.datetime.now()
419         text = "%s: %s"%(AOCTRL_CMD_LIST[log.cmd],params)
420         log.comment = text[:200]
421         log.save()
422         
423         return code
424     
425     #將d數(shù)據(jù)寫入db中
426     # 根據(jù)不同的數(shù)據(jù)進行hash分派 目前之后gps和告警信息進行分派
427     def save(self,aom,d):        
428         log = aom.gm.AO_CtrlLog()
429         log.ao = aom.ao.dbobj
430         log.cmd = d['cmd']
431         log.time = datetime.datetime.now()
432         text = "%s: %s"%(AOCTRL_CMD_LIST[log.cmd],d['params'])
433         log.comment = text[:200]
434         log.save()
435         #以下存儲gps數(shù)據(jù)和設(shè)備狀態(tài)數(shù)據(jù)
436         gps = d['gps']
437         if gps:
438             # save to db
439             g = aom.gm.AOMData_Gps()
440             g.ao = aom.ao.dbobj
441             g.savetime = gps['time']
442             g.lon = gps['lon']
443             g.lat = gps['lat']
444             g.speed = gps['speed']
445             g.angle = gps['angle']
446             g.power = gps['power']
447             g.acc = gps['acc']
448             g.miles = gps['miles']
449             g.save()
450             #for dispatch
451             t = time.mktime(g.savetime.timetuple())
452             s = {'type':MediaDataType.GPS,'hwid':aom.id,
453              'lon':g.lon,'lat':g.lat,
454              'speed':g.speed,'angle':g.angle,
455              'satenum':0,'sateused':0,
456              'time':t,
457              'power':g.power,
458              'acc':g.acc,
459              'miles':g.miles}    
460             aom.dispatch(s) #分派到 cached server
461             
462         if d['msg'== 'BO01'#報警
463             alarm = aom.gm.AO_AlarmLog()
464             alarm.ao = aom.ao.dbobj
465             alarm.time = datetime.datetime.now()
466             alarm.type = d['alarm']
467             alarm.save()
468             #分派報警
469             t = time.mktime(alarm.time.timetuple())
470             s = {'type':MediaDataType.ALARM,
471              'alarm':alarm.type,
472              'comment':ALARM_TYPELIST[alarm.type]
473              }    
474             aom.dispatch(s) #分派到 cached server
475         
476    
posted on 2012-03-08 15:20 放屁阿狗 閱讀(680) 評論(0)  編輯 收藏 引用 所屬分類: perl/python/php/lua/tclWebGisGps管理
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产欧美亚洲一区| 亚洲区一区二区三区| 国产欧美精品久久| 国产精品久久久久9999吃药| 欧美日韩一区二区三区视频| 日韩一区二区高清| 欧美成人一区二区| 欧美日韩三级视频| 欧美色图五月天| 亚洲一区二区三区在线观看视频 | 亚洲人www| 亚洲第一精品影视| a4yy欧美一区二区三区| 亚洲男同1069视频| 久久这里只有| 亚洲精品一区二区三区四区高清| 女人香蕉久久**毛片精品| 午夜日韩av| 欧美xart系列高清| 国产精品日韩精品欧美精品| 国产一区二区无遮挡| 最新中文字幕一区二区三区| 午夜精品一区二区三区电影天堂 | 欧美在线免费观看视频| 久久三级福利| 一区二区三区日韩精品视频| 久久精品视频一| 欧美系列精品| 亚洲激情电影中文字幕| 久久av一区二区| 亚洲精品网址在线观看| 国产亚洲一区二区三区在线播放| 国产拍揄自揄精品视频麻豆| 亚洲乱码国产乱码精品精可以看 | 亚洲高清视频在线| 亚洲欧美日韩在线观看a三区| 免费在线欧美视频| 国内成+人亚洲| 午夜精品国产精品大乳美女| 最近看过的日韩成人| 久久精品国产第一区二区三区| 欧美日韩在线看| 亚洲美女少妇无套啪啪呻吟| 国产亚洲a∨片在线观看| 亚洲美女电影在线| 亚洲一区精品视频| 亚洲成色最大综合在线| 亚洲欧美一区二区视频| 欧美日韩国产在线| 日韩视频―中文字幕| 久久综合久色欧美综合狠狠| 久久理论片午夜琪琪电影网| 亚洲精品一区二区三区av| 国产精品家庭影院| 亚洲另类春色国产| 六月丁香综合| 久久精品免费看| 国产一区二区高清不卡| 亚洲欧美在线网| 亚洲一区二区三区在线| 欧美亚州一区二区三区| 亚洲私人影院| 亚洲小说区图片区| 国产精品美女主播在线观看纯欲| 亚洲一区精品视频| 亚洲免费一区二区| 国产无一区二区| 国产伪娘ts一区| 久久av老司机精品网站导航| 西瓜成人精品人成网站| 国产日韩精品在线观看| 久久爱91午夜羞羞| 久久久久久亚洲精品中文字幕| 一区二区在线视频| 欧美激情精品久久久久久黑人| 免费看黄裸体一级大秀欧美| 亚洲欧美综合国产精品一区| 亚洲高清一区二区三区| 欧美成人综合在线| 一区二区三区四区国产精品| 在线一区免费观看| 欧美中文字幕不卡| 久久久久久久久蜜桃| 久久久久一区| 亚洲人成啪啪网站| 亚洲无人区一区| 黄色一区三区| 亚洲人成人一区二区在线观看| 欧美日韩中文| 久久一区免费| 欧美亚洲成人网| 免费观看国产成人| 国产精品国产精品| 国内成人在线| 亚洲美女啪啪| 伊人久久大香线蕉综合热线| 亚洲国产精品va在线看黑人| 欧美午夜www高清视频| 久久精品99久久香蕉国产色戒| 麻豆av一区二区三区| 亚洲一区精品电影| 久久免费99精品久久久久久| 欧美亚洲免费高清在线观看| 免费欧美网站| 性欧美在线看片a免费观看| 玖玖综合伊人| 中日韩视频在线观看| 久久成人人人人精品欧| 亚洲一区二区视频在线观看| 久久伊人亚洲| 欧美中日韩免费视频| 媚黑女一区二区| 欧美一区二区三区在| 欧美理论在线播放| 欧美国产成人精品| 国产一区日韩欧美| 亚洲午夜极品| 亚洲一区二区高清| 久久精品最新地址| 欧美在线黄色| 国产精品99久久久久久久久久久久| 激情综合色综合久久| 亚洲婷婷在线| 亚洲天堂成人在线视频| 欧美承认网站| 亚洲福利视频一区二区| 狠狠色狠狠色综合日日小说| 一卡二卡3卡四卡高清精品视频| 亚洲欧洲日韩综合二区| 久久久久久午夜| 亚洲免费人成在线视频观看| 亚洲黄色视屏| 久久综合给合久久狠狠狠97色69| 久久全球大尺度高清视频| 国产精品永久入口久久久| 这里只有精品电影| 亚洲淫性视频| 国产精品亚洲产品| 亚洲在线成人| 欧美一区二区三区在线看| 国产美女在线精品免费观看| 亚洲少妇最新在线视频| 一区二区三区精品久久久| 欧美成人在线网站| 亚洲激情女人| 亚洲先锋成人| 国产亚洲精品aa午夜观看| 欧美中文字幕第一页| 乱中年女人伦av一区二区| 久久手机免费观看| 六月婷婷一区| 亚洲电影av| 欧美精品在线看| 9i看片成人免费高清| 亚洲男人av电影| 一区二区三区在线免费播放| 亚洲三级电影全部在线观看高清| 日韩网站在线看片你懂的| 欧美激情精品久久久久久蜜臀| 国产精品久久久对白| 另类天堂视频在线观看| 亚洲欧洲在线播放| 欧美视频中文字幕在线| 欧美自拍偷拍| 亚洲人成在线观看一区二区| 亚洲五月六月| 极品少妇一区二区三区| 欧美噜噜久久久xxx| 亚洲主播在线| 久久一区视频| 日韩亚洲欧美高清| 国产夜色精品一区二区av| 欧美mv日韩mv国产网站| 亚洲伊人一本大道中文字幕| 免费在线欧美视频| 亚洲午夜在线观看视频在线| 精品成人在线| 国产精品久久久久影院色老大| 久久一日本道色综合久久| 这里只有精品丝袜| 狠狠色狠色综合曰曰| 欧美日韩视频免费播放| 久久se精品一区二区| 99精品国产在热久久婷婷| 国产夜色精品一区二区av| 欧美精品一区二区蜜臀亚洲| 欧美一级大片在线观看| 亚洲国产一区二区三区在线播 | 亚洲高清在线精品| 亚洲免费一级电影| 91久久精品国产| 国产一区二区精品| 欧美色123| 你懂的一区二区| 亚洲电影在线| 夜夜嗨av一区二区三区四季av| 另类激情亚洲| 久久国产精品电影| 亚洲欧美视频在线| 妖精成人www高清在线观看|