public ZhongXunData(ZhongXunGPRSFrame gprsFrame) { _gprsFrame = gprsFrame; DeviceNo = _gprsFrame.DeviceNo; SourceData = _gprsFrame.SourceData; FullGpsCode = _gprsFrame.FullGpsCode; CodePrefix = _gprsFrame.CodePrefix; ReceiveTime = DateTime.Now; }
public ZhongXun4005Data(ZhongXunGPRSFrame gprsFrame) : base(gprsFrame) { }
/// <summary> /// 转换数据 /// </summary> /// <param name="buffer"></param> /// <param name="responseList"></param> /// <param name="fullGpsCode"></param> /// <param name="sessionID"></param> /// <returns></returns> public List<GPSDataEntity> Parse(byte[] buffer, out List<byte[]> responseList, out string fullGpsCode, string sessionID) { responseList = new List<byte[]>(); List<GPSDataEntity> gpsDatalist = new List<GPSDataEntity>(); //GPRS数据信息 ZhongXunGPRSFrame gprsFrame = new ZhongXunGPRSFrame(this.CodePrefix, buffer); fullGpsCode = gprsFrame.FullGpsCode; if (!string.IsNullOrEmpty(fullGpsCode)) { OnAddConnectionEvent(fullGpsCode, sessionID); } ZhongXunData data = null; switch (gprsFrame.Type) { case ZhongXunType.Login: //上行 登录 //下行 登录 确认 responseList.Add(gprsFrame.GetResponeMsg(new byte[] { 0x90, 0x01 }, new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 })); break; case ZhongXunType.LoginOut: //上行 注销 break; case ZhongXunType.Heartbeat: //上行 心跳包 //下行 心跳包 响应 responseList.Add(gprsFrame.GetResponeMsg(new byte[] { 0x90, 0x03 }, null)); break; case ZhongXunType.GpsData: //上行 GPS数据包 包含GPS数据 附加数据 状态数据 data = new ZhongXun4001Data(gprsFrame); data.AnalyseData(); gpsDatalist.Add(data.GetResult()); break; case ZhongXunType.WorkingData: //上行 工况数据 break; case ZhongXunType.GSensorData: //上行 GSensor数据 break; case ZhongXunType.RouteStart: //上行 行程开始 包含行程编号 PID列表 共96位 PID1-96对应的数据流项详见数据流库 data = new ZhongXun4004Data(gprsFrame); data.AnalyseData(); gpsDatalist.Add(data.GetResult()); //下行 行程开始确认 responseList.Add(gprsFrame.GetResponeMsg(new byte[] { 0xC0, 0x04 }, null)); break; case ZhongXunType.RouteEnd: //上行 行程结束 包含行程编号 设备时间 行程里程 行程油耗 data = new ZhongXun4007Data(gprsFrame); data.AnalyseData(); gpsDatalist.Add(data.GetResult()); //下行 行程结束 确认 responseList.Add(gprsFrame.GetResponeMsg(new byte[] { 0xC0, 0x07 }, null)); break; case ZhongXunType.DataStream: //上行 数据流数据 (即OBD 数据) 包含设备时间 数据流个数 数据流数组 data = new ZhongXun4005Data(gprsFrame); data.AnalyseData(); gpsDatalist.Add(data.GetResult()); //下行 数据流数据 确认 responseList.Add(gprsFrame.GetResponeMsg(new byte[] { 0xC0, 0x05 }, null)); break; case ZhongXunType.PassengerFault: //上行 乘用车故障信息 包含设备时间 故障标志 故障个数 故障数组 data = new ZhongXun4006Data(gprsFrame); data.AnalyseData(); var pfs = data.GetResultList(); if (pfs != null && pfs.Count > 0) { gpsDatalist.AddRange(pfs); } //下行 乘用车故障信息确认 responseList.Add(gprsFrame.GetResponeMsg(new byte[] { 0xC0, 0x06 }, null)); break; case ZhongXunType.AlarmData: //上行 警情变化数据包 包含GPS数据 附加数据 警情数 警情信息数据 data = new ZhongXun4008Data(gprsFrame); data.AnalyseData(); var ads=data.GetResultList(); if (ads != null && ads.Count > 0) { gpsDatalist.AddRange(ads); } //下行 警情变化 确认 responseList.Add(gprsFrame.GetResponeMsg(new byte[] { 0xC0, 0x08 }, null)); break; default: break; } return gpsDatalist; }