Ejemplo n.º 1
0
        public JianCheBao3006Data(JianCheBaoGPRSFrame gprsFrame)
            : base(gprsFrame)
        {

        }
Ejemplo n.º 2
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)
        {
            //Transfer.TraceToFile(buffer,@"c:\gps.txt");
            //Transfer.TraceToConsole(buffer);

            List<GPSDataEntity> gpsDatalist = new List<GPSDataEntity>();
            responseList = new List<byte[]>();
            fullGpsCode = string.Empty;


            //GPRS数据信息
            JianCheBaoGPRSFrame gprsFrame = new JianCheBaoGPRSFrame(this.CodePrefix, buffer);
            fullGpsCode = gprsFrame.FullGpsCode;

            if (!string.IsNullOrEmpty(fullGpsCode))
            {
                OnAddConnectionEvent(fullGpsCode, sessionID);
            }

            JianCheBaoData data = null;

            switch (gprsFrame.Type)
            {
                case JianCheBaoType.Register:
                    //注册 上行
                    //注册 下行
                    responseList.Add(gprsFrame.GetResponeMsgForRegister());
                    //0x0B 进气歧管绝对压力 0xB021
                    break;
                case JianCheBaoType.Login:
                    //登陆 上行
                    //登陆 下行
                    responseList.Add(gprsFrame.GetResponeMsg(new byte[] { 0xB0, 0x03 }, new byte[] { 0x00 }));
                    //0xB021 消息头
                    //0x05 冷却液温度
                    //0x04 计算负荷值
                    //0x0F 进气温度
                    //0x10 空气流量
                    //0x11 节气门绝对位置
                    //0x46 环境温度
                    //0x07 长期燃油修正
                    //0x0E 第一缸点火正时提前角
                    //0x0B 进气歧管绝对压力

                    //0x0B 进气歧管绝对压力
                    //0x04 计算负荷值
                    //0x0F 进气温度
                    //0x11 节气门绝对位置
                    //0x46 环境温度
                    responseList.Add(gprsFrame.GetResponeMsg(new byte[] { 0xB0, 0x21 }, new byte[] { 0x05, 0x0B, 0x04, 0x0F, 0x11, 0x46 }));
                    Logger.Info("Device Login:" + fullGpsCode);
                    break;
                case JianCheBaoType.LoginOut:
                    //注销 上行
                    //注销 下行
                    responseList.Add(gprsFrame.GetResponeMsg(new byte[] { 0xB0, 0x03 },new byte[] { 0x00 }));
                    break;
                case JianCheBaoType.Heartbeat:
                    //心跳上行
                    //心跳下行
                    responseList.Add(gprsFrame.GetResponeMsg(new byte[] { 0xB0, 0x03 }, null));
                    break;
                case JianCheBaoType.GetLocation:
                    //请求地理位置上行
                    //请求地理位置下行
                    responseList.Add(gprsFrame.GetResponeMsg(new byte[] { 0xB0, 0x03 }, new byte[] { 0x00 }));
                    break;
                case JianCheBaoType.GetTime:
                    //请求时间上行
                    //请求时间下行
                    responseList.Add(gprsFrame.GetResponeMsgForGetTime());
                    break;
                case JianCheBaoType.RouteData:
                    //行程 开始或者结束 上行
                    data = new JianCheBao3005Data(gprsFrame);
                    data.AnalyseData();
                    gpsDatalist.Add(data.GetResult());
                    //行程 开始或者结束 下行
                    responseList.Add(gprsFrame.GetResponeMsg(new byte[] { 0xB0, 0x03 },new byte[] { 0x00 }));
                    break;
                case JianCheBaoType.DataStream:
                    //行程数据 上行
                    data = new JianCheBao3006Data(gprsFrame);
                    data.AnalyseData();
                    gpsDatalist.AddRange(data.GetResultList());
                    //行程数据 下行
                    responseList.Add(gprsFrame.GetResponeMsg(new byte[] { 0xB0, 0x03 }, new byte[] { 0x00 }));
                    break;
                default:
                    break;
            }

            return gpsDatalist;
        }