public List<GPSDataEntity> Parse(byte[] buffer, out List<byte[]> responseList, out string fullGpsCode, string sessionID) { List<GPSDataEntity> ObjectList = new List<GPSDataEntity>(); string strReceivedOrgMsg = Encoding.ASCII.GetString(buffer); responseList = new List<byte[]>(); fullGpsCode = string.Empty; string[] strPosInfo = strReceivedOrgMsg.Split('#'); int msgCount = int.Parse(strPosInfo[6].Trim()); try { string gpscode = GetHexString(long.Parse(strPosInfo[1]), 30); fullGpsCode = base.CodePrefix + gpscode; if (!string.IsNullOrEmpty(fullGpsCode)) { OnAddConnectionEvent(fullGpsCode, sessionID); } string strDataType = strPosInfo[5].Trim(); bool locatedData = true; //if (strPosInfo[3].Trim() == "0") // locatedData = false; for (var i = 0; i < msgCount; i++) { string strCellNo = strPosInfo[7 + 4 * i]; string[] strPos = strPosInfo[8 + 4 * i].Split(','); string strDate = strPosInfo[9 + 4 * i]; string strTime = strPosInfo[10 + 4 * i]; DateTime ReportTime = DateTime.ParseExact(strTime, "HHmmss", new System.Globalization.CultureInfo("zh-CN", true)); ReportTime = ReportTime.AddHours(8); GPSDataEntity gpsData = new GPSDataEntity(); gpsData.GPSCode = gpscode; gpsData.IsLocatedData = locatedData; gpsData.ReceiveTime = DateTime.Now; gpsData.ReportTime = DateTime.ParseExact(strDate + ReportTime.ToString("HH:mm:ss"), "ddMMyyHH:mm:ss", new System.Globalization.CultureInfo("zh-CN", true)); if (float.Parse(strPos[0]) == 0 || float.Parse(strPos[2]) == 0) { if (strCellNo != "V") { string[] aryCellNo = strCellNo.Split(','); KKSLBSInfo lbs = new KKSLBSInfo(); lbs.LAC = Convert.ToUInt16(aryCellNo[0].Substring(0, 4),16); lbs.CellID = Convert.ToUInt16(aryCellNo[0].Substring(4), 16); lbs.MCC = 0; CELL_Position_Info pos=new CELL_Position_Info(); byte[] b = GetLbsPosition(lbs, ref pos); gpsData.Longitude = pos.Longitude; gpsData.Latitude = pos.Latitude; } } else { gpsData.Longitude = Convert2Longitude(strPos[0]); gpsData.Latitude = Convert2Latitude(strPos[2]); } gpsData.Speed = decimal.Parse(strPos[4]); gpsData.Direction = decimal.Parse(strPos[5]); gpsData.ACCState = 1; gpsData.OilState = 1; if (strDataType == "POWER") { gpsData.PowerState = 1; Logger.Trace(fullGpsCode + "断电"); } else { gpsData.PowerState = 0; } if (strDataType == "SOS" || strDataType == "LPSOS") { gpsData.PlunderState = 0; Logger.Trace(fullGpsCode + "劫警"); } else gpsData.PlunderState = 1; ObjectList.Add(gpsData); } } catch (Exception ex) { Logger.Error(ex); } return ObjectList; }
private byte[] GetLbsPosition(KKSLBSInfo lbs, ref CELL_Position_Info position) { byte[] bret = null; string strKey = lbs.MNC.ToString() + "#" + lbs.LAC.ToString(); if (_MobileCellInfo.ContainsKey(strKey)) { IDictionary<UInt32, CELL_Position_Info> cell_lac_info = _MobileCellInfo[strKey]; if (cell_lac_info.ContainsKey(lbs.CellID)) { position = cell_lac_info[lbs.CellID]; bret = new byte[8]; int iLatitude = (int)(position.Latitude * 500 * 3600); byte[] bLatitude = BitConverter.GetBytes(iLatitude); Array.Copy(bLatitude, 0, bret, 0, 4); int iLongitude = (int)(position.Longitude * 500 * 3600); byte[] bLongitude = BitConverter.GetBytes(iLongitude); Array.Copy(bLongitude, 0, bret, 4, 4); } } return bret; }
private GPSDataEntity GetGPSDataEntity(string fullGpsCode, DateTime Reporttime, CELL_Position_Info pi, bool isPlunder) { GPSDataEntity gpsData = null; gpsData = new GPSDataEntity(); gpsData.ReportTime = Reporttime; gpsData.ReceiveTime = DateTime.Now; gpsData.GPSCode = fullGpsCode.Substring(4); gpsData.IsLocatedData = true; gpsData.Latitude = pi.Latitude; gpsData.Longitude = pi.Longitude; if (isPlunder) { gpsData.PlunderState = 0; } else { gpsData.PlunderState = 1; } gpsData.ACCState = 0; //油电接通 gpsData.OilState = 1; //已接电源 gpsData.PowerState = 0; //判断是否是补传数据 //设备补传数据与实时数据是混合传输,只能通过ReportTime判断 TimeSpan ts = DateTime.Now.Subtract(gpsData.ReportTime); if (ts.TotalMinutes > 30) { //补传数据 gpsData.IsFetchData = true; } else if (ts.TotalMinutes < -30) { //异常数据 gpsData = null; } return gpsData; }
public IDictionary<string, IDictionary<UInt32, CELL_Position_Info>> GetCellPositionInfo() { IDictionary<string, IDictionary<UInt32, CELL_Position_Info>> cellInfo = new Dictionary<string, IDictionary<UInt32, CELL_Position_Info>>(); DbConnection dbConnection = null; string strSql = @"SELECT mnc,lac,cell,lng,lat FROM cellid WHERE mCC=460"; string strKey = ""; using (dbConnection = GetConnection(_DefaultConnectionString)) { DataTable table = new DataTable(); DbCommand command = dbConnection.CreateCommand(); command.CommandText = strSql; DbDataReader dr = command.ExecuteReader(); int count = 0; while (dr.Read()) { count++; strKey = dr["mnc"].ToString() + "#" + dr["lac"].ToString(); IDictionary<UInt32, CELL_Position_Info> cell_lac_info = null; if (!cellInfo.ContainsKey(strKey)) { cell_lac_info = new Dictionary<UInt32, CELL_Position_Info>(); cellInfo.Add(strKey, cell_lac_info); } else { cell_lac_info = cellInfo[strKey]; } UInt32 cellid = UInt32.Parse(dr["cell"].ToString()); CELL_Position_Info cell_posinfo = new CELL_Position_Info(); cell_posinfo.Latitude = decimal.Parse(dr["lat"].ToString()); cell_posinfo.Longitude = decimal.Parse(dr["lng"].ToString()); if (cell_lac_info.ContainsKey(cellid)) cell_lac_info.Remove(cellid); cell_lac_info.Add(cellid, cell_posinfo); } Logger.Trace("初始化" + count.ToString() + "条LBS数据到内存"); } return cellInfo; }
public GPSDataEntity Parse(byte[] buffer, out List<byte[]> responseList, out string fullGpsCode, string sessionID) { GPSDataEntity dataEntity = null; responseList = new List<byte[]>(); fullGpsCode = string.Empty; string debuggerLog = string.Empty;//测试期间用到的LOG,待KKS网关稳定后删除 try { //GT02 if (buffer != null && buffer[0] == 0x68 && buffer[1] == 0x68) { KKSGT02Frame kksFrame = new KKSGT02Frame(); kksFrame.ReadBuffer(buffer); if (!kksFrame.IsValidData) { return null; } fullGpsCode = base.CodePrefix + GetHexString((long)kksFrame.TerminalIMEI, 30); if (string.IsNullOrEmpty(fullGpsCode)) return null; //将连接加入关系表 OnAddConnectionEvent(fullGpsCode, sessionID); switch (kksFrame.ProtocolNo) { case KKSProtocolNO.GPSInfo: KKSGT02GPSInfo kksGpsInfo = new KKSGT02GPSInfo(); kksGpsInfo.ReadBuffer(kksFrame.Data); dataEntity = GetGPSDataEntity4GT02(fullGpsCode, kksGpsInfo); break; case KKSProtocolNO.GPS_Caller_QueryInfo://心跳 KKSProtocolNO? lastProticol = GetLastDataProtocolNoByGpsCode(fullGpsCode); if (lastProticol.HasValue && lastProticol.Value == KKSProtocolNO.GPS_Caller_QueryInfo) { dataEntity = GetPreGpsDataEntity(fullGpsCode); if (dataEntity == null) { Logger.Warn("收到的定位数据全是无效数据,或者没有从gps_currentinfo中取到" + fullGpsCode + "的数据"); } else { dataEntity = SetStatusValue4GPSDataEntity(dataEntity); AddCodeVehicleGpsData(fullGpsCode, dataEntity); dataEntity.GPSCode = fullGpsCode.Substring(4); _CodeVehicleGpsData[fullGpsCode] = dataEntity; } } responseList.Add(GetResponseMsg4GT02()); break; case KKSProtocolNO.GT02_GPS_Caller_QueryInfo: { KKSGT02_Mobile_QueryInfo mobileQuery = new KKSGT02_Mobile_QueryInfo(); mobileQuery.ReadBuffer(kksFrame.Data); dataEntity = GetGPSDataEntity4GT02(fullGpsCode, mobileQuery.GPSInfo); if (dataEntity != null) { byte[] byteAddress = GetAddressByte(dataEntity, Address_PACK_Type.GPS_GetAddress, mobileQuery.Mobile, kksFrame.SerialNum); responseList.Add(GetResponseMsg(0x1A, byteAddress)); } } break; } UpdateLastProtocolNo(fullGpsCode, kksFrame.ProtocolNo); } //GT06 else if (buffer != null && buffer[0] == 0x78 && buffer[1] == 0x78) { fullGpsCode = GetGPSCode(sessionID); KKSFrame kksFrame = new KKSFrame(); kksFrame.ReadBuffer(buffer); if (!kksFrame.IsValidData) { return null; } if (kksFrame.ProtocolNo == KKSProtocolNO.LoginReg) { KKSLogin kksLogin = new KKSLogin(); kksLogin.ReadBuffer(kksFrame.Data); fullGpsCode = base.CodePrefix + GetHexString((long)kksLogin.TerminalIMEI, 30); if (!string.IsNullOrEmpty(fullGpsCode)) { AddCodeSessionTb(fullGpsCode, sessionID); OnAddConnectionEvent(fullGpsCode, sessionID); AddCodeGpsTypeRelation(fullGpsCode, kksLogin.HDType); if (kksLogin.HDType == KKS_HDType.GT07 || kksLogin.HDType == KKS_HDType.GT06 || kksLogin.HDType==KKS_HDType.GT03) { UpdateLastProtocolNo(fullGpsCode, kksFrame.ProtocolNo); } } responseList.Add(GetResponseMsg(0x01, kksFrame.SerialNum)); } debuggerLog += "ProtocolNo:" + kksFrame.ProtocolNo.ToString(); if (!string.IsNullOrEmpty(fullGpsCode)) { debuggerLog += "--fullGpsCode:" + fullGpsCode; switch (kksFrame.ProtocolNo) { case KKSProtocolNO.StatusInfo://0x13 if (_CodeGpsTypeRelation.ContainsKey(fullGpsCode) && (_CodeGpsTypeRelation[fullGpsCode] == KKS_HDType.GT06 || _CodeGpsTypeRelation[fullGpsCode] == KKS_HDType.GT03)) { KKStatus status = new KKStatus(); status.ReadBuffer(kksFrame.Data); AddCodeVehicleStatusTb(fullGpsCode, status); dataEntity = GetGPSDataEntity(fullGpsCode, status); UpdateLastProtocolNo(fullGpsCode, kksFrame.ProtocolNo); } else if (_CodeGpsTypeRelation.ContainsKey(fullGpsCode) && (_CodeGpsTypeRelation[fullGpsCode] == KKS_HDType.GS503 || _CodeGpsTypeRelation[fullGpsCode] == KKS_HDType.GK301)) { KKS_Mobile_Status status = new KKS_Mobile_Status(); status.ReadBuffer(kksFrame.Data); if (status.LocationStatus == 1) { bool isPlunder = status.PlunderStatus == 100; dataEntity = GetGPSDataEntity(fullGpsCode, isPlunder); } else { Logger.Warn("手机终端收到心跳包,但是未定位"); } } else if (_CodeGpsTypeRelation.ContainsKey(fullGpsCode) && _CodeGpsTypeRelation[fullGpsCode] == KKS_HDType.GT07) { if (_LastReceiveDataProtocolNo[fullGpsCode] == KKSProtocolNO.StatusInfo) { if (_CodeVehicleGpsData.ContainsKey(fullGpsCode)) { dataEntity = _CodeVehicleGpsData[fullGpsCode]; } else { dataEntity = FetchData.GetInstance().GetLastGpsEntityByGpsCode(fullGpsCode); } if (dataEntity == null) { Logger.Warn("收到的定位数据全是无效数据,或者没有从gps_currentinfo中取到" + fullGpsCode + "的数据"); } else { dataEntity = SetStatusValue4GPSDataEntity(dataEntity); AddCodeVehicleGpsData(fullGpsCode, dataEntity); dataEntity.GPSCode = fullGpsCode.Substring(4); } } else { } UpdateLastProtocolNo(fullGpsCode, kksFrame.ProtocolNo); } responseList.Add(GetResponseMsg(0x13, kksFrame.SerialNum)); break; case KKSProtocolNO.GPSInfo://0x10 base.OnDebugDataEvent(base.TransfersType.ToString(), fullGpsCode, "收到GPS包"); if (_CodeGpsTypeRelation.ContainsKey(fullGpsCode) && (_CodeGpsTypeRelation[fullGpsCode] == KKS_HDType.GS503 || _CodeGpsTypeRelation[fullGpsCode] == KKS_HDType.GK301 || _CodeGpsTypeRelation[fullGpsCode] == KKS_HDType.GT03)) { KKSGPSInfo gpsInfo = new KKSGPSInfo(); gpsInfo.ReadBuffer(kksFrame.Data); dataEntity = GetGPSDataEntity(fullGpsCode, gpsInfo); AddCodeVehicleGpsData(fullGpsCode, dataEntity); responseList.Add(GetResponseMsg(0x10, kksFrame.SerialNum)); } break; case KKSProtocolNO.LBSInfo://0x11 if (_CodeGpsTypeRelation.ContainsKey(fullGpsCode) && (_CodeGpsTypeRelation[fullGpsCode] == KKS_HDType.GS503 || _CodeGpsTypeRelation[fullGpsCode] == KKS_HDType.GK301 || _CodeGpsTypeRelation[fullGpsCode] == KKS_HDType.GT03)) { KKSLBSInfo lbsInfo = new KKSLBSInfo(); lbsInfo.ReadBuffer(kksFrame.Data, LBS_PACK_Type.MovoLBS); CELL_Position_Info position = new CELL_Position_Info(); byte[] bResponse = GetLbsPosition(lbsInfo, ref position); if (bResponse != null) { dataEntity = GetGPSDataEntity(fullGpsCode, lbsInfo.ReportTime, position, false); AddCodeVehicleGpsData(fullGpsCode, dataEntity); } responseList.Add(GetResponseMsg(0x11, kksFrame.SerialNum)); } break; case KKSProtocolNO.ET200_GPS_LBS_Info://0x22 KKSGPS_LBS_Info gps_lbs_info1 = new KKSGPS_LBS_Info(); gps_lbs_info1.ReadBuffer(kksFrame.Data); dataEntity = GetGPSDataEntity(fullGpsCode, gps_lbs_info1.GPS); dataEntity.ACCState = kksFrame.Data[kksFrame.Data.Length - 3]; UpdateLastProtocolNo(fullGpsCode, kksFrame.ProtocolNo); responseList.Add(GetResponseMsg(0x22, kksFrame.SerialNum)); break; case KKSProtocolNO.GPS_LBS_Info://0x12 KKSGPS_LBS_Info gps_lbs_info = new KKSGPS_LBS_Info(); gps_lbs_info.ReadBuffer(kksFrame.Data); if (_CodeGpsTypeRelation.ContainsKey(fullGpsCode) && (_CodeGpsTypeRelation[fullGpsCode] == KKS_HDType.GT06 || _CodeGpsTypeRelation[fullGpsCode] == KKS_HDType.GT03)) { dataEntity = GetGPSDataEntity(fullGpsCode, gps_lbs_info.GPS, false); UpdateLastProtocolNo(fullGpsCode, kksFrame.ProtocolNo); } else if (_CodeGpsTypeRelation.ContainsKey(fullGpsCode) && _CodeGpsTypeRelation[fullGpsCode] == KKS_HDType.GT07) { dataEntity = GetGPSDataEntity(fullGpsCode, gps_lbs_info.GPS); UpdateLastProtocolNo(fullGpsCode, kksFrame.ProtocolNo); } break; case KKSProtocolNO.ET200_GPS_LBS_Status_Info://0x26 KKSMobile_GPS_LBS_StatusInfo gps_lbs_statusinfo1 = new KKSMobile_GPS_LBS_StatusInfo(); gps_lbs_statusinfo1.ReadBuffer(kksFrame.Data); dataEntity = GetGPSDataEntity(fullGpsCode, gps_lbs_statusinfo1.GPS); GPSDataEntity pr=GetPreGpsDataEntity(fullGpsCode); if (pr != null) { dataEntity.ACCState = pr.ACCState; } byte[] byteAddress2 = GetAddressByte(dataEntity, Address_PACK_Type.GPS_Plunder, new byte[21], kksFrame.SerialNum); responseList.Add(GetResponseMsg(0x26, byteAddress2)); AddCodeVehicleGpsData(fullGpsCode, dataEntity); break; case KKSProtocolNO.GPS_LBS_Status_Info://0x16 if (_CodeGpsTypeRelation.ContainsKey(fullGpsCode) && (_CodeGpsTypeRelation[fullGpsCode] == KKS_HDType.GT06 || _CodeGpsTypeRelation[fullGpsCode] == KKS_HDType.GT03)) { KKSGPS_LBS_StatusInfo gps_lbs_statusinfo = new KKSGPS_LBS_StatusInfo(); gps_lbs_statusinfo.ReadBuffer(kksFrame.Data); bool isPunderAlarm = false; KKStatus objStatus = gps_lbs_statusinfo.Status; //由于硬件缺陷采用临时方案 switch (gps_lbs_statusinfo.Status.AlarmType) { case KKSAlarmType.PowerOff: objStatus.PowerState = 1; break; case KKSAlarmType.SOS: objStatus.AlarmType = KKSAlarmType.Normal; isPunderAlarm = true; break; } AddCodeVehicleStatusTb(fullGpsCode, objStatus); UpdateLastProtocolNo(fullGpsCode, kksFrame.ProtocolNo); dataEntity = GetGPSDataEntity(fullGpsCode, gps_lbs_statusinfo.GPS, isPunderAlarm); responseList.Add(GetResponseMsg(0x16, kksFrame.SerialNum)); } else if (_CodeGpsTypeRelation.ContainsKey(fullGpsCode) && _CodeGpsTypeRelation[fullGpsCode] == KKS_HDType.GT07) { UpdateLastProtocolNo(fullGpsCode, kksFrame.ProtocolNo); } else if (_CodeGpsTypeRelation.ContainsKey(fullGpsCode) && (_CodeGpsTypeRelation[fullGpsCode] == KKS_HDType.GS503 || _CodeGpsTypeRelation[fullGpsCode] == KKS_HDType.GK301)) { KKSMobile_GPS_LBS_StatusInfo gps_lbs_statusinfo = new KKSMobile_GPS_LBS_StatusInfo(); gps_lbs_statusinfo.ReadBuffer(kksFrame.Data); dataEntity = GetGPSDataEntity(fullGpsCode, gps_lbs_statusinfo.GPS); if (dataEntity != null) { byte[] byteAddress = GetAddressByte(dataEntity, Address_PACK_Type.GPS_Plunder, new byte[21], kksFrame.SerialNum); responseList.Add(GetResponseMsg(0x16, byteAddress)); AddCodeVehicleGpsData(fullGpsCode, dataEntity); } } break; case KKSProtocolNO.StringInfo://0x15 string strClientMsg = Encoding.ASCII.GetString(kksFrame.Data); base.OnDebugDataEvent(base.TransfersType.ToString(), fullGpsCode, "[Reply]:" + strClientMsg); Logger.Trace("收到客户端应答[" + fullGpsCode + "]:" + strClientMsg); break; case KKSProtocolNO.LBS_Caller_QueryInfo://0x17 { if (_CodeGpsTypeRelation.ContainsKey(fullGpsCode) && (_CodeGpsTypeRelation[fullGpsCode] == KKS_HDType.GS503 || _CodeGpsTypeRelation[fullGpsCode] == KKS_HDType.GK301 || _CodeGpsTypeRelation[fullGpsCode] == KKS_HDType.GT03)) { KKS_LBS_MobileInfo lbs_mobile = new KKS_LBS_MobileInfo(); lbs_mobile.ReadBuffer(kksFrame.Data); CELL_Position_Info position = new CELL_Position_Info(); byte[] bResponse = GetLbsPosition(lbs_mobile.LBS, ref position); if (bResponse != null) { dataEntity = GetGPSDataEntity(fullGpsCode, lbs_mobile.LBS.ReportTime, position, false); AddCodeVehicleGpsData(fullGpsCode, dataEntity); if (dataEntity != null) { byte[] byteAddress = GetAddressByte(dataEntity, Address_PACK_Type.LBS_GetAddress, lbs_mobile.Mobile, kksFrame.SerialNum); responseList.Add(GetResponseMsg(0x17, byteAddress)); } } } } break; case KKSProtocolNO.Full_LBS_Info://0x18 { if (_CodeGpsTypeRelation.ContainsKey(fullGpsCode) && (_CodeGpsTypeRelation[fullGpsCode] == KKS_HDType.GS503 || _CodeGpsTypeRelation[fullGpsCode] == KKS_HDType.GK301 || _CodeGpsTypeRelation[fullGpsCode] == KKS_HDType.GT03)) { KKS_FullLBS_Info lbsInfo = new KKS_FullLBS_Info(); lbsInfo.ReadBuffer(kksFrame.Data); CELL_Position_Info position = new CELL_Position_Info(); byte[] bResponse = GetLbsPosition(lbsInfo, ref position); if (bResponse != null) { dataEntity = GetGPSDataEntity(fullGpsCode, lbsInfo.ReportTime, position, false); AddCodeVehicleGpsData(fullGpsCode, dataEntity); } responseList.Add(GetResponseMsg(0x18, kksFrame.SerialNum)); } } break; case KKSProtocolNO.GPS_Full_LBS_Info://0x1E { if (_CodeGpsTypeRelation.ContainsKey(fullGpsCode) && (_CodeGpsTypeRelation[fullGpsCode] == KKS_HDType.GS503 || _CodeGpsTypeRelation[fullGpsCode] == KKS_HDType.GK301)) { KKS_GPS_FullLBS_Info gps_fullLBS = new KKS_GPS_FullLBS_Info(); gps_fullLBS.ReadBuffer(kksFrame.Data); dataEntity = GetGPSDataEntity(fullGpsCode, gps_fullLBS.GPS); AddCodeVehicleGpsData(fullGpsCode, dataEntity); } } break; case KKSProtocolNO.LBS_Status_Info://0x19 { if (_CodeGpsTypeRelation.ContainsKey(fullGpsCode) && (_CodeGpsTypeRelation[fullGpsCode] == KKS_HDType.GS503 || _CodeGpsTypeRelation[fullGpsCode] == KKS_HDType.GK301 || _CodeGpsTypeRelation[fullGpsCode] == KKS_HDType.GT03)) { KKS_Mobile_LBS_Status lbs_Status = new KKS_Mobile_LBS_Status(); lbs_Status.ReadBuffer(kksFrame.Data); CELL_Position_Info position = new CELL_Position_Info(); byte[] bResponse = GetLbsPosition(lbs_Status.LBS, ref position); if (bResponse != null) { dataEntity = GetGPSDataEntity(fullGpsCode, DateTime.Now, position, lbs_Status.Status.PlunderStatus == 100); AddCodeVehicleGpsData(fullGpsCode, dataEntity); } if (dataEntity != null) { byte[] byteAddress = GetAddressByte(dataEntity, Address_PACK_Type.LBS_Plunder, new byte[21], kksFrame.SerialNum); responseList.Add(GetResponseMsg(0x17, byteAddress)); } } } break; case KKSProtocolNO.ET200_GPS_Caller_QueryInfo://0x2a case KKSProtocolNO.GPS_Caller_QueryInfo://0x1a KKS_GPS_MobileInfo gps_mobile = new KKS_GPS_MobileInfo(); gps_mobile.ReadBuffer(kksFrame.Data); dataEntity = GetGPSDataEntity(fullGpsCode, gps_mobile.GPS); if (dataEntity != null) { byte[] byteAddress = GetAddressByte(dataEntity, Address_PACK_Type.GPS_GetAddress, gps_mobile.Mobile, kksFrame.SerialNum); responseList.Add(GetResponseMsg(0x1A, byteAddress)); } break; case KKSProtocolNO.Set_InstructionInfo: case KKSProtocolNO.Get_InstructionInfo: Instruction_Info instructionInfo = new Instruction_Info(); instructionInfo.ReadBuffer(kksFrame.Data); string responseStr = Encoding.ASCII.GetString(instructionInfo.InstructionContent); int flag = responseStr.IndexOf('\0'); if (flag > 0) { responseStr = responseStr.Substring(0, flag); } bool IsAnswer = true; if (responseStr.StartsWith("SEESOS")) OnSendAnswerToWebEvent(responseStr, true, fullGpsCode, ControlCmdType.GetFriendNumber, true); else if (responseStr.StartsWith("SOS=Success!")) OnSendAnswerToWebEvent(responseStr, true, fullGpsCode, ControlCmdType.SetFriendNumber, true); else if (responseStr.StartsWith("GPSON")) OnSendAnswerToWebEvent(responseStr, true, fullGpsCode, ControlCmdType.OpenGPS, true); else if (responseStr.StartsWith("GPSON=OverTime Off!")) { IsAnswer = false; } else IsAnswer = false; if (IsAnswer) Logger.Trace("---gps应答:" + kksFrame.ProtocolNo.ToString() + "----" + fullGpsCode + "---" + responseStr); break; } } } } catch (Exception ex) { Logger.Error(ex); } if (dataEntity != null) { debuggerLog += "--dataEntity:" + GetStringByGPSDataEntity(dataEntity); } Logger.Warn(debuggerLog); return dataEntity; }