Пример #1
0
 public TCPImplement(MainForm mainForm, TextBox textBox, DynoParameter dynoParam, EmissionInfo emiInfoSim, ModelOracle dbOracle, Logger log)
 {
     this.m_mainForm   = mainForm;
     this.m_textBox    = textBox;
     this.m_log        = log;
     this.m_dynoParam  = dynoParam;
     this.m_emiInfoSim = emiInfoSim;
     this.m_dbOracle   = dbOracle;
     this.m_listener   = new TcpListener(IPAddress.Any, this.m_dynoParam.TCPPort);
     Task.Factory.StartNew(ListenForClients);
 }
Пример #2
0
        private void HandleClientComm(object param)
        {
            TcpClient     client       = (TcpClient)param;
            NetworkStream clientStream = client.GetStream();

            byte[] recv = new byte[BUFSIZE];
            string strRecv;
            int    bytesRead;

            while (true)
            {
                try {
                    bytesRead = clientStream.Read(recv, 0, BUFSIZE);
                } catch (Exception ex) {
                    m_log.TraceError("TCP client occur error: " + ex.Message);
                    m_mainForm.Invoke((EventHandler) delegate {
                        m_textBox.BackColor = Color.Red;
                        m_textBox.ForeColor = Color.White;
                        m_textBox.Text      = "TCP client error: " + ex.Message;
                    });
                    return;
                }
                if (bytesRead == 0)
                {
                    break;
                }
                m_log.TraceInfo(">>>>>>>> Start to handle client request. Ver: " + MainFileVersion.AssemblyVersion + " <<<<<<<<");
                strRecv = Encoding.UTF8.GetString(recv, 0, bytesRead);
                IPEndPoint remoteAddress = (IPEndPoint)client.Client.RemoteEndPoint;
                m_log.TraceInfo(string.Format("Received message[{0}], from {1}:{2}", strRecv, remoteAddress.Address, remoteAddress.Port));
                byte[] sendMessage;
                string strVIN = "";
                if (strRecv != null)
                {
                    strVIN = strRecv.Split(',')[0].Trim();
                }
                if (strVIN.Length == 17)
                {
                    sendMessage = Encoding.UTF8.GetBytes("200");
                    m_log.TraceInfo("Received VIN is OK");
                }
                else
                {
                    sendMessage = Encoding.UTF8.GetBytes("400");
                    m_log.TraceError("Received VIN is Illegal");
                    m_mainForm.Invoke((EventHandler) delegate {
                        m_textBox.BackColor = Color.Red;
                        m_textBox.ForeColor = Color.White;
                        m_textBox.Text      = "VIN号长度不为17位";
                    });
                }
                clientStream.Write(sendMessage, 0, sendMessage.Length);
                clientStream.Flush();
                if (strVIN.Length == 17)
                {
                    EmissionInfo ei     = new EmissionInfo();
                    string       errMsg = string.Empty;
                    bool         error  = false;
                    if (m_dynoParam.UseSimData)
                    {
                        ei = m_emiInfoSim;
                        ei.VehicleInfo1.VIN = strVIN;
                        ei.VehicleInfo2.VIN = strVIN;
                    }
                    else
                    {
                        try {
                            m_dbOracle.GetEmissionInfo(strVIN, ei, out errMsg);
                        } catch (Exception ex) {
                            error = true;
                            m_log.TraceError("GetEmissionInfo() error: " + ex.Message);
                            m_mainForm.Invoke((EventHandler) delegate {
                                m_textBox.BackColor = Color.Red;
                                m_textBox.ForeColor = Color.White;
                                m_textBox.Text      = "GetEmissionInfo() error: " + ex.Message;
                            });
                        }
                    }
                    if (!error)
                    {
                        if (errMsg.Length > 0 && errMsg != "null")
                        {
                            m_log.TraceError("USP_GET_ENVIRONMENT_DATA() return error: " + errMsg);
                            m_mainForm.Invoke((EventHandler) delegate {
                                m_textBox.BackColor = Color.Red;
                                m_textBox.ForeColor = Color.White;
                                m_textBox.Text      = errMsg;
                            });
                        }
                        else
                        {
                            m_mainForm.Invoke((EventHandler) delegate {
                                m_textBox.BackColor = Color.LightGreen;
                                m_textBox.ForeColor = Color.Black;
                                m_textBox.Text      = "VIN[" + strVIN + "]测功机参数匹配成功";
                            });
                        }
                    }
                    string JsonFormatted = JsonConvert.SerializeObject(ei, Newtonsoft.Json.Formatting.Indented);
                    m_log.TraceInfo("Send dyno information: " + Environment.NewLine + JsonFormatted);
                    string strSend = JsonConvert.SerializeObject(ei);
                    sendMessage = Encoding.UTF8.GetBytes(strSend);
                    clientStream.Write(sendMessage, 0, sendMessage.Length);
                    clientStream.Flush();
                }
            }
            clientStream.Close();
            client.Close();
        }
Пример #3
0
        public void GetEmissionInfo(string strVIN, EmissionInfo ei, out string errMsg)
        {
            DataTable dtDynoParam = new DataTable("DYNO_PARAM");

            USP_GET_ENVIRONMENT_DATA(strVIN, dtDynoParam, out errMsg);
            if (dtDynoParam.Rows.Count > 0)
            {
                DataRow dr = dtDynoParam.Rows[dtDynoParam.Rows.Count - 1];
                ei.VehicleInfo1.VIN         = strVIN;
                ei.VehicleInfo1.VehicleType = dr["VEHICLE_KIND_S"].ToString();
                ei.VehicleInfo1.ISQZ        = dr["CAR_OR_TRUCK_S"].ToString();
                ei.VehicleInfo1.CLXH        = dr["VEHICLE_MODEL_S"].ToString();
                ei.VehicleInfo1.FDJXH       = dr["FDJXH_S"].ToString();
                ei.VehicleInfo1.HasOBD      = dr["IS_OBD_S"].ToString();
                ei.VehicleInfo1.FuelType    = dr["FUEL_TYPE_S"].ToString();
                ei.VehicleInfo1.Standard    = dr["CLPFJD_S"].ToString();

                ei.VehicleInfo2.VIN           = strVIN;
                ei.VehicleInfo2.VehicleKind   = dr["VEHICLE_KIND_S"].ToString();
                ei.VehicleInfo2.VehicleType   = dr["VEHICLE_TYPE_S"].ToString();
                ei.VehicleInfo2.Model         = dr["FDJSB_S"].ToString();
                ei.VehicleInfo2.GearBoxType   = dr["BSQXSH_S"].ToString();
                ei.VehicleInfo2.AdmissionMode = dr["AIR_INLET_S"].ToString();
                ei.VehicleInfo2.Volume        = dr["FDJPL_S"].ToString();
                ei.VehicleInfo2.FuelType      = dr["FUEL_TYPE_S"].ToString();
                ei.VehicleInfo2.SupplyMode    = dr["RYGJSYS_S"].ToString();
                ei.VehicleInfo2.RatedRev      = dr["EDZHS_S"].ToString();
                ei.VehicleInfo2.RatedPower    = dr["FDJEDGL_S"].ToString();
                ei.VehicleInfo2.DriveMode     = dr["DRIVE_MODE_S"].ToString();
                ei.VehicleInfo2.MaxMass       = dr["MAXSJZZHL_S"].ToString();
                ei.VehicleInfo2.RefMass       = dr["JZHZHL_S"].ToString();
                ei.VehicleInfo2.HasODB        = dr["IS_OBD_S"].ToString();
                ei.VehicleInfo2.HasPurge      = dr["IS_PURGE_S"].ToString();
                ei.VehicleInfo2.IsEFI         = dr["IS_EFI_S"].ToString();
                ei.VehicleInfo2.MaxLoad       = dr["NUM_OR_WEIGHT_S"].ToString();
                ei.VehicleInfo2.CarOrTruck    = dr["CAR_OR_TRUCK_S"].ToString();
                ei.VehicleInfo2.Cylinder      = dr["QGS_S"].ToString();
                ei.VehicleInfo2.IsTransform   = dr["IS_TRANSFORM_S"].ToString();
                ei.VehicleInfo2.StandardID    = dr["CLPFJD_S"].ToString();
                ei.VehicleInfo2.IsAsm         = dr["IS_ASM_S"].ToString();
                ei.VehicleInfo2.QCZZCJ        = dr["SCCMC_S"].ToString();
                ei.VehicleInfo2.FDJZZC        = dr["FDJSCQY_S"].ToString();
                ei.VehicleInfo2.DDJXH         = dr["DDJXH_S"].ToString();
                ei.VehicleInfo2.XNZZXH        = dr["CHNZHZHXH_S"].ToString();
                ei.VehicleInfo2.CHZHQXH       = dr["CHZHHQXH_S"].ToString();
                ei.VehicleInfo2.SCR           = dr["SCR_S"].ToString();
                ei.VehicleInfo2.SCRXH         = dr["SCRXH_S"].ToString();
                ei.VehicleInfo2.DPF           = dr["DPF_S"].ToString();
                ei.VehicleInfo2.DPFXH         = dr["DPFXH_S"].ToString();
                ei.VehicleInfo2.DCRL          = dr["DCHRL_S"].ToString();
                // 处理检测方法字符串
                string strTestMethod = dr["JCFF_S"].ToString();
                if (strTestMethod.Contains("双怠速"))
                {
                    strTestMethod = "双怠速法";
                }
                else if (strTestMethod.Contains("稳态工况"))
                {
                    strTestMethod = "稳态工况";
                }
                else if (strTestMethod.Contains("简易瞬态"))
                {
                    strTestMethod = "简易瞬态";
                }
                else if (strTestMethod.Contains("加载减速"))
                {
                    strTestMethod = "加载减速";
                }
                else if (strTestMethod.Contains("自由加速"))
                {
                    strTestMethod = "自由加速";
                }
                else if (strTestMethod.Contains("林格曼"))
                {
                    strTestMethod = "林格曼黑度";
                }
                else if (strTestMethod.Contains("瞬态工况"))
                {
                    strTestMethod = "瞬态工况";
                }
                else if (strTestMethod.Contains("不透光"))
                {
                    strTestMethod = "不透光法";
                }
                else if (strTestMethod.Contains("滤纸式"))
                {
                    strTestMethod = "滤纸式法";
                }
                ei.VehicleInfo2.JCFF = strTestMethod;
            }
        }