public void flushMesslist(List <string> Cangets, int flushtype) { #region //CanMesslistView.Clear(); //CanMesslistView.Items.Clear(); //string Canget = "t8561122334455667788\r"; /*foreach (string Canget in Cangets) //此处疑似有重复 * { * ListViewItem listv = new ListViewItem(); * listv.Text = Canget; * CanMesslistView.Items.Add(listv); * }*/ #endregion Analysis ay = new Analysis(); foreach (string Canget in Cangets) { if (string.Equals("t", Canget.Substring(0, 1)) || string.Equals("T", Canget.Substring(0, 1))) { foreach (string CanData in ay.canReceiptAnalysis(Canget)) { string[] Data = CanData.Split(','); //Console.WriteLine(Data[0] + "----------" + Data[1]); ListViewItem listv = new ListViewItem(); listv.Text = Data[0]; //第一列 listv.SubItems.Add(Data[1]); //没有报错提示 CanMesslistView.Items.Add(listv); } } else { ListViewItem listv = new ListViewItem(); listv.Text = Canget; CanMesslistView.Items.Add(listv); } } textBox1.Text = "***************"; }
public void flushf3test(List <string> Cangets, int flushtype, Form3 f3) //flushtype无效 { Analysis ay = new Analysis(); List <string> AnalysisOK; foreach (string Canget in Cangets) { if (string.Equals("t", Canget.Substring(0, 1)) || string.Equals("T", Canget.Substring(0, 1))) { AnalysisOK = ay.canReceiptAnalysis(Canget); foreach (string CanData in AnalysisOK) { string[] Data = CanData.Split(','); //Console.WriteLine(Data[0] + "----------" + Data[1]); ListViewItem listv = new ListViewItem(); listv.Text = Data[0]; //第一列 listv.SubItems.Add(Data[1]); //没有报错提示 //Data[1]是数值 CanMesslistView.Items.Add(listv); //给出选择的器件序号 //找出器件的值 //刷新LED //ay.getCanAllInfoFromDatabase(); //f3.changeLED("10,000"); } List <string> retCanIDandlocal = f3.retCanIDandlocal; string anaresultID = Canget; int IDlen = 3; if (string.Equals(anaresultID.Substring(0, 1), "t")) //标准帧 { IDlen = 3; } else if (string.Equals(anaresultID.Substring(0, 1), "T")) //扩展帧 { IDlen = 8; } anaresultID = Canget.Substring(1, IDlen); anaresultID = (Int32.Parse(anaresultID, System.Globalization.NumberStyles.HexNumber)).ToString(); //16转10进制 //判断是否在选中的ID中 foreach (string Canselected in retCanIDandlocal) { string[] Canblock = Canselected.Split(' '); if (string.Equals(Canblock[0], anaresultID.ToString())) { //Data[1]; string[] select = Canselected.Split(' '); int num = Convert.ToInt32(select[1]); string[] LED = AnalysisOK[num].Split(','); string Canvalue = string.Format("{0:00.000}", Convert.ToDouble(LED[1])); f3.changearcScale(Convert.ToSingle(LED[2]), Convert.ToSingle(LED[3]), Convert.ToSingle(LED[1])); //f3.changearcScale(0F,100F,50F); f3.changeLED(Canvalue); } } } else { ListViewItem listv = new ListViewItem(); listv.Text = Canget; CanMesslistView.Items.Add(listv); } } //f3.changeLED("10,000"); }
public List <string> canReceiptAnalysis(string CanSignal)//解析接收的Can信号 { int i, j; string anaresult = CanSignal; anaresult = CanSignal.Substring(0, 1); List <string> CanDatas = new List <string>(); //现在扩展帧,标准帧分别默认为3位和8位十进制数,后期按相应16进制进行解析 //暂时不写扩展帧的解析 int IDlen = 3; if (string.Equals(anaresult, "t")) //标准帧 { IDlen = 3; } else if (string.Equals(anaresult, "T")) //扩展帧 { IDlen = 8; } anaresult = CanSignal.Substring(1, IDlen); anaresult = (Int32.Parse(anaresult, System.Globalization.NumberStyles.HexNumber)).ToString(); //16转10进制 FileStream fs = new FileStream("data.txt", FileMode.Open, FileAccess.Read); StreamReader sr = new StreamReader(fs); string s; while ((s = sr.ReadLine()) != null) { string[] arr = s.Split(' '); if (s.Length > 5 && string.Equals(arr[1], anaresult)) //查找ID数 { Console.WriteLine(arr[1]); anaresult = CanSignal.Substring(2 + IDlen, 16); //默认长度8位, string binarycandata = tobinaryCanData(anaresult); //转化为二进制 s = sr.ReadLine(); Console.WriteLine(s); int Canline = Convert.ToInt32(s); //读入对应ID的Can信息行数 s = sr.ReadLine(); //跳过空行 int start, len; for (i = 0; i < Canline; i++) { s = sr.ReadLine(); //跳到有效行 string[] arr1 = s.Split(' '); //将每一行每一部分的有效信息放入arr1数组 //arr1[1] arr[2]分别表示起始编号 长度 start = Convert.ToInt32(arr1[1]); len = Convert.ToInt32(arr1[2]); int substart; string caninfo; //加入格式判断 if (string.Equals(arr1[3], "0")) { substart = start / 8 * 8 - start % 8 + 7; caninfo = binarycandata.Substring(substart, len); } else { substart = start; string inteltype = ""; string intelout = ""; for (i = 0; i < 8; i++) { inteltype = binarycandata.Substring(i * 8, 8); char[] strChar = inteltype.ToCharArray(); Array.Reverse(strChar); intelout += new string(strChar); } //经过一次reverse caninfo = binarycandata.Substring(substart, len); } /*int substart = start / 8 * 8 - start % 8 + 7; //解析can信号,start+8-start%8-1 即在二进制字符中的真实起始位置 * //int subend = substart + len-1; * //Console.WriteLine("start:"+substart+"len:"+len); //显示在二进制的起始位和长度 * //string caninfo = binarycandata.Substring(substart, len); //选取指定位置的can信息 * //Console.WriteLine("binarycandata:"+caninfo); //显示二进制can信息*/ int x = Convert.ToInt32(caninfo, 2); //Console.WriteLine("x的值"+x); //显示x的数值 double Phy = phyCalculate(x, Convert.ToDouble(arr1[4]), Convert.ToDouble(arr1[5])); //计算用户能看懂的物理值 //Console.WriteLine(arr1[0]+":"+Phy); //顺序显示CanMessage数值!!! CanDatas.Add(arr1[0] + ',' + Phy + ',' + arr1[6] + ',' + arr1[7]); } foreach (string CanData in CanDatas) { string[] Data = CanData.Split(','); //Console.WriteLine(Data[0] + "----------" + Data[1]); } break; //Console.WriteLine(s); } } return(CanDatas); }
//private void ShowMessbutton_Click(object sender, EventArgs e) //{ // #region // /*for (int i = 0; i < 10; i++) //添加10行数据 // { // ListViewItem lvi = new ListViewItem(); // //lvi.ImageIndex = i; //通过与imageList绑定,显示imageList中第i项图标 // lvi.Text = "subitem" + i; //第一列 // lvi.SubItems.Add("第2列,第" + i + "行"); // lvi.SubItems.Add("第3列,第" + i + "行"); // CanMesslistView.Items.Add(lvi); // }*/ // #endregion // Analysis ay = new Analysis(); // List<string> Cangets = new List<string>(); // Cangets.Add("t8561122334455667788"); // flushMesslist(Cangets,0); // textBox1.Text = "tttttttt"; //} public void flushMesslist(List <string> Cangets, int flushtype) { #region //CanMesslistView.Clear(); //CanMesslistView.Items.Clear(); //string Canget = "t8561122334455667788\r"; /*foreach (string Canget in Cangets) //此处疑似有重复 * { * ListViewItem listv = new ListViewItem(); * listv.Text = Canget; * CanMesslistView.Items.Add(listv); * }*/ #endregion Analysis ay = new Analysis(); foreach (string Canget in Cangets) { if (string.Equals("t", Canget.Substring(0, 1)) || string.Equals("T", Canget.Substring(0, 1))) { //ArrayList pList = new ArrayList(); //string idnumber= ay.get16IDNumber(Canget); TreeCanInfo Tcinfo = new TreeCanInfo(); string thisid = ay.convert16to10(ay.get16IDNumber(Canget)); Tcinfo.ID = thisid; Tcinfo.Name = ay.getCanMessName(thisid); Tcinfo.DLC = ay.getDLC(Canget); Tcinfo.Data = ay.getData(Canget); foreach (string CanData in ay.canReceiptAnalysis(Canget)) { string[] Data = CanData.Split(','); //Console.WriteLine(Data[0] + "----------" + Data[1]); ListViewItem listv = new ListViewItem(); listv.Text = Data[0]; //第一列 listv.SubItems.Add(Data[1]); //没有报错提示 CanMesslistView.Items.Add(listv); Tcinfo.block.Add(Data[0] + " " + Data[1]); //textBox1.Text = Data[0]; #region //增加ID Name Dir DLC Data /*ListTree2 rottree1 = new ListTree2(); * rottree1.ParentID = idnumber; * rottree1.GetID = ay.get16IDNumber(Canget); * rottree1.GetName = "stand"; * rottree1.DLC = ay.getDLC(Canget); * rottree1.GetData = ay.getData(Canget); * pList.Add(rottree1);*/ /*int i = 0, t = 0; * ArrayList pList = new ArrayList(); * List<string> CanAllInfos = ay.getCanAllInfoFromDatabase(); * foreach (string CanAllInfo in CanAllInfos) * { * string[] canblock = CanAllInfo.Split(' '); * ListTree2 p = new ListTree2(); * p.GetID = i; * t = i; * i++; * p.GetName = canblock[0] + canblock[1]; * pList.Add(p); * for (int j = 2; j < canblock.Length; j++) * { * ListTree2 q = new ListTree2(); * q.ParentID = t; * q.GetID = i; * i++; * q.GetName = canblock[j]; * pList.Add(q); * } * } * this.treeList1.DataSource = pList; * this.treeList1.RefreshDataSource(); */ #endregion } #region //ArrayList pList = new ArrayList(); /*ListTree2 rottree = new ListTree2(); * rottree.GetID = ay.get16IDNumber(Canget); * rottree.GetName = "stand"; * rottree.DLC = ay.getDLC(Canget); * rottree.GetData = ay.getData(Canget); * pList.Add(rottree); * this.treeList2.DataSource = pList; * this.treeList2.RefreshDataSource(); * pList.Clear();*/ #endregion if (hshTable.Contains(thisid)) { hshTable.Remove(thisid); //删除旧数据 } hshTable.Add(thisid, Tcinfo); //在hashtable中放入ID DLC Data 器件name phy } else { ListViewItem listv = new ListViewItem(); listv.Text = Canget; CanMesslistView.Items.Add(listv); } } //textBox1.Text = "***************"; }