Exemplo n.º 1
0
        /**
         * add DB to Class
         **/
        private void button1_Click_1(object sender, EventArgs e)
        {
            OpenFileDialog filename = new OpenFileDialog();

            //初始路径,这里设置的是程序的起始位置,可自由设置
            filename.InitialDirectory = Application.StartupPath;
            filename.Filter           = "All files(*.*)|*.*|dbc files(*.dbc)|*.dbc";
            //文件类型的显示顺序(上一行.txt设为第二位)
            filename.FilterIndex      = 2;
            filename.RestoreDirectory = true; //对话框记忆之前打开的目录
            //List<Message> database = new List<Message>();
            Message m = new Message();

            if (filename.ShowDialog() == DialogResult.OK)
            {
                //获得完整路径在textBox1中显示
                textBox1.Text = filename.FileName.ToString();
                StreamReader sr = new StreamReader(filename.FileName, Encoding.Default);
                string       outtemp = null, intemp = null;
                outtemp = sr.ReadLine();
                int iM = 1, iS = 1;//counter
                while (outtemp != null)
                {
                    if (outtemp.Contains("BO_"))
                    {
                        iS = 1;//redefine
                        m.getMessage(outtemp);
                        textBox2.AppendText("\r\n");
                        textBox2.AppendText(iM.ToString() + " MessageId:" + m.messageId + " MessageName:" + m.messageName + " MessagFromECU:" + m.nodeNameECU + "\r\n");
                        iM++;
                        m.signals = new List <string>();
                        intemp    = sr.ReadLine();
                        while (intemp != null && intemp.Contains("SG_"))
                        {
                            textBox2.AppendText("  " + iS.ToString() + " " + intemp + "\r\n");
                            //将signal add到message中
                            m.signals.Add(intemp);
                            iS++;
                            //getSignal(intemp);
                            intemp = sr.ReadLine();
                        }
                    }
                    database.Add(m);
                    m       = new Message();
                    outtemp = intemp;
                }

                Message_DataBase.set_Message(database);
                Calculate cal = new Calculate();
                cal.loadData(database);

                sr.Close();
            }
            flagLoaded  = true;
            flagUpdated = true;
        }
Exemplo n.º 2
0
        /// <summary>
        /// 绑定message数据
        /// </summary>
        void bind_cbx_message()
        {
            List <Cantool.Message> database = Message_DataBase.get_all_Message();

            if (database != null && database.Count() > 0)
            {
                this.cbx_message.DataSource    = database;//绑定数据
                this.cbx_message.ValueMember   = "messageId";
                this.cbx_message.DisplayMember = "messageName";
            }
        }
Exemplo n.º 3
0
        private void Com_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            SerialPort comDevice = Com.get_com();

            if (comDevice != null)
            {
                byte[] ReDatas = new byte[comDevice.BytesToRead];
                comDevice.Read(ReDatas, 0, ReDatas.Length);

                String sdata = new ASCIIEncoding().GetString(ReDatas);
                if (sdata == null || sdata.Trim() == "")
                {
                    String current_data = Message_DataBase.get_current_data();
                    if (current_data != null)
                    {
                        sdata = current_data;
                    }
                    else
                    {
                        return;
                    }
                }
                Message_DataBase.set_current_data(sdata);
                Dictionary <string, string> dic = new Dictionary <string, string>();
                Calculate cal = new Calculate();
                dic = cal.Decode(sdata);


                if (this.IsHandleCreated)
                {
                    this.BeginInvoke(new MethodInvoker(delegate
                    {
                        //for (int i = 0; i < 10; i++)
                        //{

                        //}
                        //aGauge2.Value = count;
                        //count = count + 10;
                        Signal selected_signal = (Signal)this.cbx_signal.SelectedItem;
                        foreach (KeyValuePair <string, string> kv in dic)
                        {
                            if (kv.Key == selected_signal.signalName)
                            {
                                if (this.chart1.Series.Count > 0)
                                {
                                    this.chart1.Series[0].Points.Clear();
                                }
                                dataQueue.Enqueue(Convert.ToDouble(kv.Value));
                                for (int i = 0; i < dataQueue.Count; i++)
                                {
                                    this.chart1.Series[0].Points.AddXY((i + 1), dataQueue.ElementAt(i));
                                }


                                break;
                            }
                        }
                    }));
                }
            }
            else
            {
                MessageBox.Show("请设置COM口");
            }
        }