def update_cmd(device, id, ret, q_server=None): ''' id: 命令ID ret: 命令返回值 把返回值更新到命令 ''' cmdobj = get_cached_cmd(id) if not cmdobj: return None if cmdobj.SN_id != device.id: print u"ERROR: 命令对应的设备与指定设备不一致(%s != %s)" % (cmdobj.SN_id, device.id) return None cmdobj.CmdOverTime = datetime.datetime.now() #命令返回时间 cmdobj.CmdReturn = ret #命令返回值 update_cached_cmd(cmdobj) #更新命令到缓存 cmdobj.SN = device return cmdobj
def update_cmd(device, id, ret, q_server=None): """ id: 命令ID ret: 命令返回值 把返回值更新到命令 """ cmdobj = get_cached_cmd(id) if not cmdobj: return None if cmdobj.SN_id != device.id: print u"ERROR: 命令对应的设备与指定设备不一致(%s != %s)" % (cmdobj.SN_id, device.id) return None cmdobj.CmdOverTime = datetime.datetime.now() # 命令返回时间 cmdobj.CmdReturn = ret # 命令返回值 update_cached_cmd(cmdobj) # 更新命令到缓存 cmdobj.SN = device return cmdobj
def fetch_cmds(device): proceed_cmds(device) devcmds = [] flag_new = True if develop_model: devcmds = get_cmds(device.pk) else: flag_new = False #是否是下发新的命令 check_ret = check_pre_request(device) #确认上次下发命令,机器是否成功接收到 if not check_ret: devcmds = get_pre_request_cmds(device) #返回上一次下发的命令 else: flag_new = True devcmds = get_request_cmds(device) resp = '' c = 0 maxRet = device.max_comm_count #---每次传送给设备的命令数 maxRetSize = device.max_comm_size * 1024 #---最大数据包长度(KB) while devcmds: cmd_key = devcmds.pop(0) obj_cmd = cache.get(cmd_key) #-------------------用到cache cmd_return = obj_cmd.CmdReturn if settings.GETREQ_THREE_TIMES: #兼容固件不确认的bug if not cmd_return: cmd_return = -99996 else: cmd_return = int(cmd_return) - 1 CmdContent = obj_cmd.CmdContent if CmdContent.find("DATA UPDATE user") == 0 or CmdContent.find( "SMS ") == 0: #传送用户命令,需要解码成GB2312 cc = CmdContent try: cc = cc.encode("gb18030") except: try: cc = cc.decode("utf-8").encode("gb18030") except: import traceback traceback.print_exc() pass else: cc = str(CmdContent) nowcmd = str(cc) cc = std_cmd_convert(cc, device) #----ZK-ECO 标准命令到 PUSH-SDK 命令的转换 if cc: resp += "C:%d:%s\n" % (obj_cmd.id, cc) #---格式: C:设备序列号:内容 \n c = c + 1 if settings.GETREQ_THREE_TIMES: #兼容固件bug obj_cmd.CmdReturn = cmd_return obj_cmd.CmdTransTime = datetime.datetime.now() update_cached_cmd(obj_cmd) if (c >= maxRet) or (len(resp) >= maxRetSize): break #达到了最大命令数或最大命令长度限制 if CmdContent in ["CHECK", "CLEAR DATA", "REBOOT", "RESTART"]: break #重新启动命令只能是最后一条指令 #增加查找到CHECK指令后,直接发送 if c == 0: #没有发送任何命令时,简单向设备返回 "OK" 即可 resp += "OK" else: if flag_new: update_start_end_index(device, c) #更新下发命令的起始和结束为止 return resp
def fetch_cmds(device): proceed_cmds(device) devcmds = [] flag_new = True if develop_model: devcmds = get_cmds(device.pk) else: flag_new = False # 是否是下发新的命令 check_ret = check_pre_request(device) # 确认上次下发命令,机器是否成功接收到 if not check_ret: devcmds = get_pre_request_cmds(device) # 返回上一次下发的命令 else: flag_new = True devcmds = get_request_cmds(device) resp = "" c = 0 maxRet = device.max_comm_count # ---每次传送给设备的命令数 maxRetSize = device.max_comm_size * 1024 # ---最大数据包长度(KB) while devcmds: cmd_key = devcmds.pop(0) obj_cmd = cache.get(cmd_key) # -------------------用到cache cmd_return = obj_cmd.CmdReturn if settings.GETREQ_THREE_TIMES: # 兼容固件不确认的bug if not cmd_return: cmd_return = -99996 else: cmd_return = int(cmd_return) - 1 CmdContent = obj_cmd.CmdContent if CmdContent.find("DATA UPDATE user") == 0 or CmdContent.find("SMS ") == 0: # 传送用户命令,需要解码成GB2312 cc = CmdContent try: cc = cc.encode("gb18030") except: try: cc = cc.decode("utf-8").encode("gb18030") except: import traceback traceback.print_exc() pass else: cc = str(CmdContent) nowcmd = str(cc) cc = std_cmd_convert(cc, device) # ----ZK-ECO 标准命令到 PUSH-SDK 命令的转换 if cc: resp += "C:%d:%s\n" % (obj_cmd.id, cc) # ---格式: C:设备序列号:内容 \n c = c + 1 if settings.GETREQ_THREE_TIMES: # 兼容固件bug obj_cmd.CmdReturn = cmd_return obj_cmd.CmdTransTime = datetime.datetime.now() update_cached_cmd(obj_cmd) if (c >= maxRet) or (len(resp) >= maxRetSize): break # 达到了最大命令数或最大命令长度限制 if CmdContent in ["CHECK", "CLEAR DATA", "REBOOT", "RESTART"]: break # 重新启动命令只能是最后一条指令 #增加查找到CHECK指令后,直接发送 if c == 0: # 没有发送任何命令时,简单向设备返回 "OK" 即可 resp += "OK" else: if flag_new: update_start_end_index(device, c) # 更新下发命令的起始和结束为止 return resp