dotNet工控上位机 发表于 2022-3-7 17:24:46

给大家分享一个我经常使用的类「含源码」

前言

今天跟大家分享一个我自己封装,而且经常使用的类,话不多说,直接看源码。
源码

    ///   /// 字节集合类    ///   public class ByteArray    {      ///         /// 初始化一个List集合对象      ///         private List list = new List();      ///         /// 通过索引获取值      ///         /// 索引      /// 返回字节      public byte this      {            get => list;            set => list = value;      }      ///         /// 返回长度      ///         public int Length => list.Count;      ///         /// 通过属性返回字节数组      ///         public byte[] array      {            get { return list.ToArray(); }      }      ///         /// 清空字节数组      ///         public void Clear()      {            list.Clear();      }      ///         /// 添加一个字节      ///         /// 字节      public void Add(byte item)      {            list.Add(item);      }      ///         /// 添加一个字节数组      ///         /// 字节数组      public void Add(byte[] items)      {            list.AddRange(items);      }      ///         /// 添加二个字节      ///         /// 字节      public void Add(byte item1, byte item2)      {            Add(new byte[] { item1, item2 });      }      ///         /// 添加三个字节      ///         /// 字节      public void Add(byte item1, byte item2, byte item3)      {            Add(new byte[] { item1, item2, item3 });      }      ///         /// 添加四个字节      ///         /// 字节      public void Add(byte item1, byte item2, byte item3, byte item4)      {            Add(new byte[] { item1, item2, item3, item4 });      }      ///         /// 添加五个字节      ///         /// 字节      public void Add(byte item1, byte item2, byte item3, byte item4, byte item5)      {            Add(new byte[] { item1, item2, item3, item4, item5 });      }      ///         /// 添加一个ByteArray对象      ///         /// ByteArray对象      public void Add(ByteArray byteArray)      {            list.AddRange(byteArray.array);      }      public void Insert(int index, byte item)      {            list.Insert(index,item);      }      public void Insert(int index, byte[] item)      {            for (int i = 0; i < item.Length; i++)            {                list.Insert(index + i, item);            }      }      ///         /// 添加一个ushort类型数值      ///         /// ushort类型数值      /// 字节序      public void Add(ushort value,DataFormat dataFormat)      {            byte[] data = BitConverter.GetBytes(value);            byte[] result = new byte;            switch (dataFormat)            {                case DataFormat.ABCD:                case DataFormat.CDAB:                  result = data;                  result = data;                  break;                case DataFormat.BADC:                case DataFormat.DCBA:                  result = data;                  result = data;                  break;                default:                  break;            }            Add(result);      }      ///         /// 添加一个short类型数值      ///         /// short类型数值      /// 字节序      public void Add(short value, DataFormat dataFormat)      {            byte[] data = BitConverter.GetBytes(value);            byte[] result = new byte;            switch (dataFormat)            {                case DataFormat.ABCD:                case DataFormat.CDAB:                  result = data;                  result = data;                  break;                case DataFormat.BADC:                case DataFormat.DCBA:                  result = data;                  result = data;                  break;                default:                  break;            }            Add(result);      }      ///         /// 添加一个ushort类型数值      ///         /// ushort类型数值      /// 字节序      public void Insert(int index, ushort value, DataFormat dataFormat)      {            byte[] data = BitConverter.GetBytes(value);            byte[] result = new byte;            switch (dataFormat)            {                case DataFormat.ABCD:                case DataFormat.CDAB:                  result = data;                  result = data;                  break;                case DataFormat.BADC:                case DataFormat.DCBA:                  result = data;                  result = data;                  break;                default:                  break;            }            Insert(index, result);      }      ///         /// 添加一个short类型数值      ///         /// short类型数值      /// 字节序      public void Insert(int index, short value, DataFormat dataFormat)      {            byte[] data = BitConverter.GetBytes(value);            byte[] result = new byte;            switch (dataFormat)            {                case DataFormat.ABCD:                case DataFormat.CDAB:                  result = data;                  result = data;                  break;                case DataFormat.BADC:                case DataFormat.DCBA:                  result = data;                  result = data;                  break;                default:                  break;            }            Insert(index, result);      }    }分析

这个类其实是对List集合的二次封装,但是会比集合增加了更多的功能,实际使用的时候代码也会比集合要简洁一些。
具体好不好用,用了就知道!
给大家看一个实际应用场景。
      ///         /// 根据起始地址及长度,确定读取协议帧      ///         /// 起始地址      /// 长度      /// 协议帧数据      publicvirtual OperateResult BuildReadMessageFrame(string address, ushort length)      {            var result = MelsecHelper.MelsecAddressAnalysis(address, IsFx5U);            if (!result.IsSuccess) return OperateResult.CreateFailResult(result);            //创建ByteArray对象            ByteArray sendCommand = new ByteArray();            // 副头部            sendCommand.Add(0x50, 0x00);            // 网络编号            sendCommand.Add(NetworkNo);            // 可编程控制器编号            sendCommand.Add(0xFF);            // 哀求目标模块I/O编号            sendCommand.Add(0xFF, 0x03);            // 哀求目标模块站号            sendCommand.Add(DstModuleNo);            // 哀求数据长度            sendCommand.Add(0x0C, 0x00);            // CPU监视定时器            sendCommand.Add(0x0A, 0x00);            // 指令            sendCommand.Add(0x01, 0x04);            // 子指令            sendCommand.Add(result.Content1.AreaType, 0x00);            // 起始软元件            byte[] startAddress = BitConverter.GetBytes(result.Content2);            sendCommand.Add(startAddress, startAddress, startAddress);            // 软元件代码            sendCommand.Add(result.Content1.AreaBinaryCode);            // 软元件点数            sendCommand.Add((byte)(length % 256), (byte)(length / 256));            return OperateResult.CreateSuccessResult(sendCommand.array);      }我是新阁上位机付老师,用我的专业,成就你的空想!

天马行空枕上书 发表于 2022-3-7 18:30:47

转发了

天马行空枕上书 发表于 2022-3-7 18:31:42

js还是c#呀

ywwj521 发表于 2022-3-7 23:51:01

转发了

Jonathan999 发表于 2022-3-8 07:48:59

转发了

2oI8知足常乐吧 发表于 2022-3-8 07:57:50

转发了

子口 发表于 2022-3-8 08:09:04

转发了

与风相随913 发表于 2022-3-8 17:04:43

转发了
页: [1]
查看完整版本: 给大家分享一个我经常使用的类「含源码」