/** * 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; }
/// <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"; } }
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口"); } }