c#学习心得(4)

近期准备做一个上位机采集传感器的数据 使用串口进行通信

翻看vs的说明文档 看到有关serialport的部分 特此记录

后续仍有不懂的地方 再行记录

此处放上关于串口中关于数据接受事件的例子 https://docs.microsoft.com/en-us/dotnet/api/system.io.ports.serialport.datareceived?view=dotnet-plat-ext-3.1

有关事件的使用,还是不太明白 翻看了一个帖子

https://www.cnblogs.com/gq0324/p/8177799.html

前段时间做了一个处理数据的小程序 处理坐标的偏差 记录一下

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Text.RegularExpressions;


namespace 读取文本并处理数据
{
    class Program
    {
        static void Main(string[] args)
        {
        
            //声明全局变量
            string path = @"C:UsersAdministratorDesktop1.txt";
            string[] lines = ReadTxt(path);
            int lenth = lines.Length;
            double[] doubleArr = new double[99];
            double[] doubleArr1 = new double[99];
            double[] doubleArr2 = new double[99];


            Console.WriteLine(lenth);
            Console.WriteLine(lines[2]);
            //按空格分割字符串
            string[] arr = Regex.Split(lines[0], "\s+", RegexOptions.IgnoreCase);
            Console.WriteLine(arr[1]);

            //for循环分割所有行
            for (int i = 0; i < 34; i++)
            {

                string[] splitarr = StringSplit(lines[i]);

                //Console.WriteLine (splitarr [0]+"    "+ splitarr [1]+"    "+splitarr [2]);
                //添加字符串进数组
                string[] arr3 = new string[3] { splitarr[0], splitarr[1], splitarr[2] };
                double value1 = TransStrToDb(splitarr[0]);
                double value2 = TransStrToDb(splitarr[1]);
                double value3 = TransStrToDb(splitarr[2]);

                //将元素添加进数组
                doubleArr[i] = value1;
                doubleArr1[i] = value2;
                doubleArr2[i] = value3;

                /*
               //遍历数组
                foreach (var item in doubleArr)
                    Console.WriteLine(item);
               */
                //打印数组
                Console.Write("第{0}行   ", i);
                Console.WriteLine(doubleArr[i] + "     " + doubleArr1[i] + "    " + doubleArr2[i]);




            }

            double avr1 = Average(doubleArr);
            double avr11 = Average1(doubleArr);
            double avr12 = Average2(doubleArr);

            double avr2 = Average(doubleArr1);
            double avr3 = Average(doubleArr2);

            Console.WriteLine("平均数" + avr1);
            Console.WriteLine("平均数" + avr2);
            Console.WriteLine("平均数" + avr3);

            //求偏差
            double p1 = Calculate(avr1, avr2, avr3, doubleArr[0], doubleArr1[0], doubleArr2[0]);
            Console.WriteLine("偏差 " + p1);
          //后续太懒就只测试一个就行了
        }
    

            
            

           
 
     
        //方法 读取文本 返回字符串数组
        private static string[] ReadTxt(string path)
        {
            string[] lines = File.ReadAllLines(path);

            return lines;

        }
         
        //方法 将字符串转换成double
        private static double TransStrToDb(string s)
        { 
            double value = double .Parse (s );
            return value;
        }
        
        //方法 将行字符串分割
        private static string[] StringSplit(string s)
        {
            string[] splitarr = Regex.Split(s, "\s+", RegexOptions.IgnoreCase);
            return splitarr;
        }
        //计算公式
        private static double Calculate(double avgX,
            double avgY,
            double avgZ,
            double xi,
            double yi,
            double zi)
        {
            //p= √((x-x1)²+(z-z1)²+(y-y1)²)
            double p =  Math .Sqrt (Math.Pow ((avgX -xi ),2)+Math .Pow ((avgY -yi),2)+Math .Pow ((avgZ -zi ),2));
            return p;

        }
        private static double Average(double [] d)
        {
            double avr = 0;
            double sum = d[3];
            int i = 3;
            while (i < 28 )
            {

                sum = sum + d[i + 3];
                i = i + 3;


            }
            avr = sum / 10;
                return avr;
        }
        private static double Average1(double[] d)
        {
            double avr = 0;
            double sum = d[4];
            int i = 4;
            while (i < 29)
            {

                sum = sum + d[i + 3];
                i = i + 3;


            }
            avr = sum / 10;
            return avr;

        }
        private static double Average2(double[] d)
        {
            double avr = 0;
            double sum = d[5];
            int i = 5;
            while (i < 30)
            {

                sum = sum + d[i + 3];
                i = i + 3;


            }
            avr = sum / 10;
            return avr;

        }
    }
}

  

原文地址:https://www.cnblogs.com/ttplearning/p/12961128.html