コード例 #1
0
        public ResponseAppResult AppGetOBDDriverResult(Dictionary <string, string> inparams)
        {
            ResponseAppResult Result = null;

            if (!inparams.Keys.Contains("cid") || inparams["cid"] == "")
            {
                Result = new ResponseAppResult(ResState.ParamsImperfect, "缺少cid或cid为空!", null);
                return(Result);
            }


            try
            {
                string         sysflag = inparams["sysflag"];
                long           cid     = GetCarCIDBySimCode(sysflag, inparams["cid"]);
                AlertorResolve ar      = new AlertorResolve();
                RDSConfigModel rc      = RDSConfig.GetRDS(WebProc.GetAppSysflagKey(sysflag));
                RealtimeDataServer.WCFServiceClient df = new RealtimeDataServer.WCFServiceClient();
                df.Endpoint.Address = new System.ServiceModel.EndpointAddress(rc.WCFUrl);
                RealtimeDataServer.CarTransmissionProtocolInfo ctf = df.GetCarTransData(WebProc.GetAppSysflagKey(sysflag), cid);
                byte[] spai = null;

                if (ctf != null && ctf.TransData != null && ctf.TransData.ContainsKey(0x0FC8))
                {
                    spai = ctf.TransData[0x0FC8];// date[0].TransmissionProtocolInfo;
                    List <OBDDriver> res = ar.analyzeOBDDriver(spai);

                    Result = new ResponseAppResult(ResState.Success, "操作成功", res);
                }

                else
                {
                    Result = new ResponseAppResult(ResState.RetryAfter, "未收到ODB行车数据,请稍候重试!", "");
                }
            }
            catch (Exception ex)
            {
                LogHelper.WriteError("AppGetOBDDriverResult调用异常", ex);
                Result = new ResponseAppResult(ResState.OperationFailed, ex.Message, null);
            }
            return(Result);
        }
コード例 #2
0
        private alarmcarstatuesalarm analyzeStatues(alarmcarstatuesalarm res, byte[] datas)
        {
            AlertorResolve alertorResolve = new AlertorResolve();
            //MemoryStream msAdditionalInfo = new MemoryStream(datas);
            //COM_PositionAdditionalInfo AdditionalInfo = ProtoBuf.Serializer.Deserialize<COM_PositionAdditionalInfo>(msAdditionalInfo);
            Dictionary <int, byte[]> customdataparams = EB_Analyze.AnalyzePosAddlInfo(datas);

            //wd.rawdata = MyTools.byteToHexStr(AdditionalInfo.sCustomData);
            if (customdataparams.ContainsKey(1))//报警信息
            {
                res.caralarms = dictcov(alertorResolve.analyzeAlertorInfo(customdataparams[1]));
            }
            if (customdataparams.ContainsKey(2))//状态信息
            {
                res.carstatues = dictcov(alertorResolve.analyzeStatues(customdataparams[2]));
            }
            if (customdataparams.ContainsKey(3))//电压信息
            {
                res.voltage = alertorResolve.analyzeEV(customdataparams[3][0]).ToString();
            }
            return(res);
        }
コード例 #3
0
        public ResponseAppResult AppSendOBDDriver(Dictionary <string, string> inparams)
        {
            ResponseAppResult Result = null;

            if (!inparams.Keys.Contains("cid") || inparams["cid"] == "")
            {
                Result = new ResponseAppResult(ResState.ParamsImperfect, "缺少cid或cid为空!", null);
                return(Result);
            }


            try
            {
                string  sysflag = inparams["sysflag"];
                monitor mon     = new monitor();
                long    cid     = GetCarCIDBySimCode(sysflag, inparams["cid"]);
                WebGIS.RealtimeDataServer.CarRealData[] RealData = mon.CarRealDataByCids(WebProc.GetAppSysflagKey(sysflag), new long[] { cid });
                if (RealData.Length > 0)
                {
                    if (RealData[0].OnlineStatus == 1 && RealData[0].sPositionAdditionalInfo != null && RealData[0].sPositionAdditionalInfo.Length > 0)
                    {
                        alarmcarstatuesalarm act = new alarmcarstatuesalarm();
                        act = analyzeStatues(act, RealData[0].sPositionAdditionalInfo);


                        KeyValuePair <int, int> accstates = (KeyValuePair <int, int>)act.carstatues.GetValue(13);
                        if (accstates.Value == 1)
                        {
                            long tno = GetCarTNO(WebProc.GetAppSysflagKey(sysflag), cid.ToString());

                            AlertorResolve ar   = new AlertorResolve();
                            byte[]         data = new byte[0];
                            bool           w    = SendOrderHander.Send_CTS_TransmissionProtocol(WebProc.GetAppSysflagKey(sysflag), "", cid, tno, 0x8fc8, data);
                            if (w)
                            {
                                Result = new ResponseAppResult(ResState.Success, "操作成功", "");
                            }
                            else
                            {
                                Result = new ResponseAppResult(ResState.OperationFailed, "操作失败,后台服务中断!", "");
                            }
                        }
                        else
                        {
                            Result = new ResponseAppResult(ResState.OperationFailed, "操作失败,请将钥匙置为ON档!", null);
                        }
                    }
                    else
                    {
                        Result = new ResponseAppResult(ResState.OperationFailed, "车辆已经离线,无法发送指令!", null);
                        return(Result);
                    }
                }
                else
                {
                    Result = new ResponseAppResult(ResState.OperationFailed, "车辆已经离线,无法发送指令!", null);
                    return(Result);
                }
            }
            catch (Exception ex)
            {
                LogHelper.WriteError("AppSendOBDDriver调用异常", ex);
                Result = new ResponseAppResult(ResState.OperationFailed, ex.Message, null);
            }
            return(Result);
        }
コード例 #4
0
        public ResponseAppResult AppGetOBDDiagnResult(Dictionary <string, string> inparams)
        {
            ResponseAppResult Result = null;

            if (!inparams.Keys.Contains("cid") || inparams["cid"] == "")
            {
                Result = new ResponseAppResult(ResState.ParamsImperfect, "缺少cid或cid为空!", null);
                return(Result);
            }


            try
            {
                string         sysflag = inparams["sysflag"];
                long           cid     = GetCarCIDBySimCode(sysflag, inparams["cid"]);
                AlertorResolve ar      = new AlertorResolve();
                RDSConfigModel rc      = RDSConfig.GetRDS(WebProc.GetAppSysflagKey(sysflag));
                RealtimeDataServer.WCFServiceClient df = new RealtimeDataServer.WCFServiceClient();
                df.Endpoint.Address = new System.ServiceModel.EndpointAddress(rc.WCFUrl);
                RealtimeDataServer.CarTransmissionProtocolInfo ctf = df.GetCarTransData(WebProc.GetAppSysflagKey(sysflag), cid);
                byte[] spai = null;

                //OBDDiagn res = new OBDDiagn();
                //res.VIN = "aa12345678935";
                //res.NormalUnitCount = 2;
                //res.FaultyUnitList = new List<OBDDiagn.diagn>();
                //OBDDiagn.diagn rrr = new OBDDiagn.diagn();
                //rrr.FaultyCodes = "12412";
                //rrr.UnitCode = 0x5;
                //rrr.UnitName = "允许进入/启动";
                //rrr.AsmName = "车身系统";
                //res.FaultyUnitList.Add(rrr);
                //OBDDiagn.diagn rrr2 = new OBDDiagn.diagn();
                //rrr2.FaultyCodes = "27452";
                //rrr2.UnitCode = 0x16;
                //rrr2.UnitName = "方向盘";
                //rrr2.AsmName = "车身系统";
                //res.FaultyUnitList.Add(rrr2);
                //res.NormalUnitList = new List<OBDDiagn.diagn>();
                //OBDDiagn.diagn rrr3 = new OBDDiagn.diagn();
                //rrr3.FaultyCodes = "00000";
                //rrr3.UnitCode = 0x1;
                //rrr3.UnitName = "发动机";
                //rrr3.AsmName = "动力总成系统";
                //res.NormalUnitList.Add(rrr3);
                //OBDDiagn.diagn rrr4 = new OBDDiagn.diagn();
                //rrr4.FaultyCodes = "00000";
                //rrr4.UnitCode = 0x3;
                //rrr3.AsmName = "底盘系统";
                // rrr4.UnitName = "ABS制动";
                //res.NormalUnitList.Add(rrr4);
                //Result = new ResponseAppResult(ResState.Success, "操作成功", res);


                if (ctf != null && ctf.TransData != null && ctf.TransData.ContainsKey(0x0FC7))
                {
                    spai = ctf.TransData[0x0FC7];// date[0].TransmissionProtocolInfo;
                    OBDDiagn res = ar.analyzeOBDDiagn(spai);
                    if (res != null)
                    {
                        Result = new ResponseAppResult(ResState.Success, "操作成功", res);
                    }
                    else
                    {
                        Result = new ResponseAppResult(ResState.RetryAfter, "未收到OBD诊断数据,请稍候重试!", "");
                    }
                }

                else
                {
                    Result = new ResponseAppResult(ResState.RetryAfter, "未收到OBD诊断数据,请稍候重试!", "");
                }
            }
            catch (Exception ex)
            {
                LogHelper.WriteError("AppSendOBDDiagn调用异常", ex);
                Result = new ResponseAppResult(ResState.OperationFailed, ex.Message, null);
            }
            return(Result);
        }
コード例 #5
0
        private DataTable FormatData(DataTable originalDt)
        {
            AlertorResolve ar       = new AlertorResolve();
            DataTable      resultDt = new DataTable();

            resultDt.Columns.Add("CID");
            resultDt.Columns.Add("CarNo");
            resultDt.Columns.Add("SimCode");
            resultDt.Columns.Add("CarOwnTel");
            resultDt.Columns.Add("TNO");
            resultDt.Columns.Add("VehicleType");
            resultDt.Columns.Add("FaultCount");

            DataView  dataView = originalDt.DefaultView;
            DataTable carDt    = dataView.ToTable(true, "CID", "CarNo", "SimCode", "CarOwnTel", "TNO", "VehicleType");

            if (carDt != null && carDt.Rows.Count > 0)
            {
                int carcount = carDt.Rows.Count;
                for (int i = 0; i < carcount; i++)
                {
                    int     fCount = 0;
                    DataRow dr     = resultDt.NewRow();
                    string  CID    = carDt.Rows[i]["CID"].ToString().Trim();
                    dr["CID"]         = CID;
                    dr["CarNo"]       = carDt.Rows[i]["CarNo"].ToString().Trim();
                    dr["SimCode"]     = carDt.Rows[i]["SimCode"].ToString().Trim();
                    dr["CarOwnTel"]   = carDt.Rows[i]["CarOwnTel"].ToString().Trim();
                    dr["TNO"]         = carDt.Rows[i]["TNO"].ToString().Trim();
                    dr["VehicleType"] = carDt.Rows[i]["VehicleType"].ToString().Trim();

                    DataRow[] faultDrs = originalDt.Select("CID=" + CID);
                    if (faultDrs != null && faultDrs.Length > 0)
                    {
                        int count = faultDrs.Length;
                        for (int j = 0; j < count; j++)
                        {
                            OBDDiagn obdDiagn = ar.analyzeOBDDiagn((byte[])(faultDrs[j]["vData"]));
                            List <CommLibrary.OBDDiagn.diagn> powerAsmList    = obdDiagn.PowerAsmList;    //动力总成系统
                            List <CommLibrary.OBDDiagn.diagn> underpanAsmList = obdDiagn.UnderpanAsmList; //底盘系统
                            List <CommLibrary.OBDDiagn.diagn> carBodyAsmList  = obdDiagn.CarBodyAsmList;  //车身系统
                            List <CommLibrary.OBDDiagn.diagn> networkAsmList  = obdDiagn.NetworkAsmList;  //网络系统
                            if (powerAsmList.Count > 0)
                            {
                                foreach (CommLibrary.OBDDiagn.diagn obddiagn in powerAsmList)
                                {
                                    if (!obddiagn.FaultyCodes.Equals("00000000"))
                                    {
                                        fCount++;
                                    }
                                }
                            }

                            if (underpanAsmList.Count > 0)
                            {
                                foreach (CommLibrary.OBDDiagn.diagn obddiagn in underpanAsmList)
                                {
                                    if (!obddiagn.FaultyCodes.Equals("00000000"))
                                    {
                                        fCount++;
                                    }
                                }
                            }

                            if (carBodyAsmList.Count > 0)
                            {
                                foreach (CommLibrary.OBDDiagn.diagn obddiagn in carBodyAsmList)
                                {
                                    if (!obddiagn.FaultyCodes.Equals("00000000"))
                                    {
                                        fCount++;
                                    }
                                }
                            }

                            if (networkAsmList.Count > 0)
                            {
                                foreach (CommLibrary.OBDDiagn.diagn obddiagn in networkAsmList)
                                {
                                    if (!obddiagn.FaultyCodes.Equals("00000000"))
                                    {
                                        fCount++;
                                    }
                                }
                            }
                        }
                    }

                    dr["FaultCount"] = fCount;
                    resultDt.Rows.Add(dr);
                }
            }

            return(resultDt);
        }
コード例 #6
0
        private DataTable FormatDetailData(DataTable originalDt)
        {
            DataTable resultDt = new DataTable();

            DataColumn dc0 = new DataColumn();

            resultDt.Columns.Add(new DataColumn("CarNo", Type.GetType("System.String")));
            resultDt.Columns.Add(new DataColumn("T_DateTime", Type.GetType("System.DateTime")));
            resultDt.Columns.Add(new DataColumn("UnitCode", Type.GetType("System.String")));
            //resultDt.Columns.Add(new DataColumn("AsmName", Type.GetType("System.String")));
            resultDt.Columns.Add(new DataColumn("UnitName", Type.GetType("System.String")));
            resultDt.Columns.Add(new DataColumn("FaultyCodes", Type.GetType("System.String")));

            if (originalDt != null && originalDt.Rows.Count > 0)
            {
                AlertorResolve ar    = new AlertorResolve();
                int            count = originalDt.Rows.Count;
                for (int i = 0; i < count; i++)
                {
                    try
                    {
                        OBDDiagn obdDiagn = ar.analyzeOBDDiagn((byte[])(originalDt.Rows[i]["vData"]));
                        List <CommLibrary.OBDDiagn.diagn> powerAsmList    = obdDiagn.PowerAsmList;    //动力总成系统
                        List <CommLibrary.OBDDiagn.diagn> underpanAsmList = obdDiagn.UnderpanAsmList; //底盘系统
                        List <CommLibrary.OBDDiagn.diagn> carBodyAsmList  = obdDiagn.CarBodyAsmList;  //车身系统
                        List <CommLibrary.OBDDiagn.diagn> networkAsmList  = obdDiagn.NetworkAsmList;  //网络系统
                        if (powerAsmList.Count > 0)
                        {
                            foreach (CommLibrary.OBDDiagn.diagn obddiagn in powerAsmList)
                            {
                                if (!obddiagn.FaultyCodes.Equals("00000000"))
                                {
                                    DataRow dr = resultDt.NewRow();
                                    dr["CarNo"]      = originalDt.Rows[i]["CarNo"].ToString();
                                    dr["T_DateTime"] = Convert.ToDateTime(originalDt.Rows[i]["T_DateTime"]);
                                    //dr["AsmName"] = obddiagn.AsmName;
                                    dr["UnitName"]    = obddiagn.UnitName;
                                    dr["UnitCode"]    = obddiagn.UnitCode.ToString("X2");
                                    dr["FaultyCodes"] = obddiagn.FaultyCodes;
                                    resultDt.Rows.Add(dr);
                                }
                            }
                        }

                        if (underpanAsmList.Count > 0)
                        {
                            foreach (CommLibrary.OBDDiagn.diagn obddiagn in underpanAsmList)
                            {
                                if (!obddiagn.FaultyCodes.Equals("00000000"))
                                {
                                    DataRow dr = resultDt.NewRow();
                                    dr["CarNo"]      = originalDt.Rows[i]["CarNo"].ToString();
                                    dr["T_DateTime"] = Convert.ToDateTime(originalDt.Rows[i]["T_DateTime"]);
                                    //dr["AsmName"] = obddiagn.AsmName;
                                    dr["UnitName"]    = obddiagn.UnitName;
                                    dr["UnitCode"]    = obddiagn.UnitCode.ToString("X2");
                                    dr["FaultyCodes"] = obddiagn.FaultyCodes;
                                    resultDt.Rows.Add(dr);
                                }
                            }
                        }

                        if (carBodyAsmList.Count > 0)
                        {
                            foreach (CommLibrary.OBDDiagn.diagn obddiagn in carBodyAsmList)
                            {
                                if (!obddiagn.FaultyCodes.Equals("00000000"))
                                {
                                    DataRow dr = resultDt.NewRow();
                                    dr["CarNo"]      = originalDt.Rows[i]["CarNo"].ToString();
                                    dr["T_DateTime"] = Convert.ToDateTime(originalDt.Rows[i]["T_DateTime"]);
                                    //dr["AsmName"] = obddiagn.AsmName;
                                    dr["UnitName"]    = obddiagn.UnitName;
                                    dr["UnitCode"]    = obddiagn.UnitCode.ToString("X2");
                                    dr["FaultyCodes"] = obddiagn.FaultyCodes;
                                    resultDt.Rows.Add(dr);
                                }
                            }
                        }

                        if (networkAsmList.Count > 0)
                        {
                            foreach (CommLibrary.OBDDiagn.diagn obddiagn in networkAsmList)
                            {
                                if (!obddiagn.FaultyCodes.Equals("00000000"))
                                {
                                    DataRow dr = resultDt.NewRow();
                                    dr["CarNo"]      = originalDt.Rows[i]["CarNo"].ToString();
                                    dr["T_DateTime"] = Convert.ToDateTime(originalDt.Rows[i]["T_DateTime"]);
                                    //dr["AsmName"] = obddiagn.AsmName;
                                    dr["UnitName"]    = obddiagn.UnitName;
                                    dr["UnitCode"]    = obddiagn.UnitCode.ToString("X2");
                                    dr["FaultyCodes"] = obddiagn.FaultyCodes;
                                    resultDt.Rows.Add(dr);
                                }
                            }
                        }
                    }
                    catch
                    {
                        //
                    }
                }
            }
            //resultDt.DefaultView.Sort =
            DataView dv = resultDt.DefaultView;

            dv.Sort = "T_DateTime ASC,UnitCode ASC ";
            DataTable dt2 = dv.ToTable();

            return(dt2);
        }