Пример #1
0
 public ZhongXunData(ZhongXunGPRSFrame gprsFrame)
 {
     _gprsFrame = gprsFrame;
     DeviceNo = _gprsFrame.DeviceNo;
     SourceData = _gprsFrame.SourceData;
     FullGpsCode = _gprsFrame.FullGpsCode;
     CodePrefix = _gprsFrame.CodePrefix;
     ReceiveTime = DateTime.Now;
 }
Пример #2
0
        public ZhongXun4005Data(ZhongXunGPRSFrame gprsFrame)
            : base(gprsFrame)
        {

        }
Пример #3
0
        /// <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;
        }