Esempio n. 1
0
        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 = "***************";
        }
Esempio n. 2
0
        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");
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        //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 = "***************";
        }