int ns__SendMission(struct soap *soap, char *MsgXml, char **ResponseXml) { *ResponseXml = (char*)soap_malloc( soap,XMLRW_MAX_WSTR ); char strText[XMLRW_MAX_WSTR]=""; struct NAME_VALUE_S mapdata[3]; mapdata[0].ins("DetectID",""); mapdata[1].ins("CameraID",""); mapdata[2].ins("Command",""); if(ReadXML_UTF8_NoSub(MsgXml,mapdata,3)) { if(mapdata[0].valuestr.length()==0 || mapdata[1].valuestr.length()==0 || mapdata[2].valuestr.length()==0 ) { ErrorStringXML("-2","传入的报文字段参数缺失",strText,XMLRW_MAX_WSTR); goto ALL_EXIT; } long DetectID=-1; long CameraID=-1; long Command=-1; sscanf(mapdata[0].valuestr.c_str(),"%d",&DetectID); sscanf(mapdata[1].valuestr.c_str(),"%d",&CameraID); sscanf(mapdata[2].valuestr.c_str(),"%d",&Command); if(-1 == DetectID || -1 ==CameraID || -1 ==Command ) { ErrorStringXML("-3","传入的报文字段参数有误",strText,XMLRW_MAX_WSTR); goto ALL_EXIT; } //检测摄像头是否存在 if(false == OracleIO.DEVICE_IfCamera(CameraID)) { ErrorStringXML("-4","摄像头不存在",strText,XMLRW_MAX_WSTR); goto ALL_EXIT; } //检测识别服务器是否存在 if(false == OracleIO.DEVICE_IfDetectServer(DetectID)) { ErrorStringXML("-5","识别服务器不存在",strText,XMLRW_MAX_WSTR); goto ALL_EXIT; } //测试识别服务器是否正常 if(false == OracleIO.DEVICE_IfDetectServerEnable(DetectID)) { ErrorStringXML("-6","识别服务器故障",strText,XMLRW_MAX_WSTR); goto ALL_EXIT; } if(Command) { long DetectDeviceID=0; //查找是否有正在识别的摄像头 if(false == OracleIO.DEVICE_SearchForStop(&DetectDeviceID,CameraID)) { ErrorStringXML("-98","内部异常数据库出错",strText,XMLRW_MAX_WSTR); goto ALL_EXIT; } if(DetectDeviceID>0) { char strtemp[XMLRW_MAX_WSTR]=""; sprintf(strtemp,"正在识别,服务器ID:%d",DetectDeviceID); ErrorStringXML("-7",strtemp,strText,XMLRW_MAX_WSTR); goto ALL_EXIT; } //测试识别服务器是否占用 if(false == OracleIO.DEVICE_IfDetectServerPlay(DetectID)) { ErrorStringXML("-8","识别服务器被占用",strText,XMLRW_MAX_WSTR); goto ALL_EXIT; } } if(false == OracleIO.Mission_ADD(DetectID,CameraID,GlobalConfig.UserID,Command)) { ErrorStringXML("-98","内部异常数据库出错",strText,XMLRW_MAX_WSTR); goto ALL_EXIT; } ErrorStringXML("0","数据下发成功",strText,XMLRW_MAX_WSTR); } else { ErrorStringXML("-1","传入的报文无法解析",strText,XMLRW_MAX_WSTR); goto ALL_EXIT; } ALL_EXIT: CHAR2UTF8(strText,*ResponseXml,XMLRW_MAX_WSTR); return SOAP_OK; }