using System; using System.Collections.Generic; using System.Linq; using System.Text; /********************************************************************************************************* * * 说明: * * 统一的数据转换中心,共有3种转换的机制 * 1. 对等转换,字节不需要颠倒,比如三菱PLC,Hsl通信协议 * 2. 颠倒转换,字节需要完全颠倒,比如西门子PLC * 3. 以2字节为单位颠倒转换,比如Modbus协议 * *********************************************************************************************************/ namespace MECF.Framework.RT.Core.IoProviders.Siemens.Transfer { /// /// 支持转换器的基础接口 /// public interface IByteTransform { #region Get Value From Bytes /// /// 从缓存中提取出bool结果 /// /// 缓存数据 /// 位的索引 /// bool对象 bool TransBool( byte[] buffer, int index ); /// /// 从缓存中提取出bool数组结果 /// /// 缓存数据 /// 位的索引 /// bool长度 /// bool数组 bool[] TransBool( byte[] buffer, int index, int length ); /// /// 从缓存中提取byte结果 /// /// 缓存数据 /// 索引位置 /// byte对象 byte TransByte( byte[] buffer, int index ); /// /// 从缓存中提取byte数组结果 /// /// 缓存数据 /// 索引位置 /// 读取的数组长度 /// byte[] TransByte( byte[] buffer, int index, int length ); /// /// 从缓存中提取short结果 /// /// 缓存数据 /// 索引位置 /// short对象 short TransInt16( byte[] buffer, int index ); /// /// 从缓存中提取short数组结果 /// /// 缓存数据 /// 索引位置 /// 读取的数组长度 /// short数组对象 short[] TransInt16( byte[] buffer, int index, int length ); /// /// 从缓存中提取ushort结果 /// /// 缓存数据 /// 索引位置 /// ushort对象 ushort TransUInt16( byte[] buffer, int index ); /// /// 从缓存中提取ushort数组结果 /// /// 缓存数据 /// 索引位置 /// 读取的数组长度 /// ushort数组对象 ushort[] TransUInt16( byte[] buffer, int index, int length ); /// /// 从缓存中提取int结果 /// /// 缓存数据 /// 索引位置 /// int对象 int TransInt32( byte[] buffer, int index ); /// /// 从缓存中提取int数组结果 /// /// 缓存数据 /// 索引位置 /// 读取的数组长度 /// int数组对象 int[] TransInt32( byte[] buffer, int index, int length ); /// /// 从缓存中提取uint结果 /// /// 缓存数据 /// 索引位置 /// uint对象 uint TransUInt32( byte[] buffer, int index ); /// /// 从缓存中提取uint数组结果 /// /// 缓存数据 /// 索引位置 /// 读取的数组长度 /// uint数组对象 uint[] TransUInt32( byte[] buffer, int index, int length ); /// /// 从缓存中提取long结果 /// /// 缓存数据 /// 索引位置 /// long对象 long TransInt64( byte[] buffer, int index ); /// /// 从缓存中提取long数组结果 /// /// 缓存数据 /// 索引位置 /// 读取的数组长度 /// long数组对象 long[] TransInt64( byte[] buffer, int index, int length ); /// /// 从缓存中提取ulong结果 /// /// 缓存数据 /// 索引位置 /// ulong对象 ulong TransUInt64( byte[] buffer, int index ); /// /// 从缓存中提取ulong数组结果 /// /// 缓存数据 /// 索引位置 /// 读取的数组长度 /// ulong数组对象 ulong[] TransUInt64( byte[] buffer, int index, int length ); /// /// 从缓存中提取float结果 /// /// 缓存对象 /// 索引位置 /// float对象 float TransSingle( byte[] buffer, int index ); /// /// 从缓存中提取float数组结果 /// /// 缓存数据 /// 索引位置 /// 读取的数组长度 /// float[] TransSingle( byte[] buffer, int index, int length ); /// /// 从缓存中提取double结果 /// /// 缓存对象 /// 索引位置 /// double对象 double TransDouble( byte[] buffer, int index ); /// /// 从缓存中提取double数组结果 /// /// 缓存对象 /// 索引位置 /// 读取的数组长度 /// double[] TransDouble( byte[] buffer, int index, int length ); /// /// 从缓存中提取string结果,使用指定的编码 /// /// 缓存对象 /// 索引位置 /// byte数组长度 /// 字符串的编码 /// string对象 string TransString( byte[] buffer, int index, int length, Encoding encoding ); #endregion #region Get Bytes From Value /// /// bool变量转化缓存数据 /// /// 等待转化的数据 /// buffer数据 byte[] TransByte( bool value ); /// /// bool数组变量转化缓存数据 /// /// 等待转化的数组 /// buffer数据 byte[] TransByte( bool[] values ); /// /// byte变量转化缓存数据 /// /// 等待转化的数据 /// buffer数据 byte[] TransByte( byte value ); /// /// short变量转化缓存数据 /// /// 等待转化的数据 /// buffer数据 byte[] TransByte( short value ); /// /// short数组变量转化缓存数据 /// /// 等待转化的数组 /// buffer数据 byte[] TransByte( short[] values ); /// /// ushort变量转化缓存数据 /// /// 等待转化的数据 /// buffer数据 byte[] TransByte( ushort value ); /// /// ushort数组变量转化缓存数据 /// /// 等待转化的数组 /// buffer数据 byte[] TransByte( ushort[] values ); /// /// int变量转化缓存数据 /// /// 等待转化的数据 /// buffer数据 byte[] TransByte( int value ); /// /// int数组变量转化缓存数据 /// /// 等待转化的数组 /// buffer数据 byte[] TransByte( int[] values ); /// /// uint变量转化缓存数据 /// /// 等待转化的数据 /// buffer数据 byte[] TransByte( uint value ); /// /// uint数组变量转化缓存数据 /// /// 等待转化的数组 /// buffer数据 byte[] TransByte( uint[] values ); /// /// long变量转化缓存数据 /// /// 等待转化的数据 /// buffer数据 byte[] TransByte( long value ); /// /// long数组变量转化缓存数据 /// /// 等待转化的数组 /// buffer数据 byte[] TransByte( long[] values ); /// /// ulong变量转化缓存数据 /// /// 等待转化的数据 /// buffer数据 byte[] TransByte( ulong value ); /// /// ulong数组变量转化缓存数据 /// /// 等待转化的数组 /// buffer数据 byte[] TransByte( ulong[] values ); /// /// float变量转化缓存数据 /// /// 等待转化的数据 /// buffer数据 byte[] TransByte( float value ); /// /// float数组变量转化缓存数据 /// /// 等待转化的数组 /// buffer数据 byte[] TransByte( float[] values ); /// /// double变量转化缓存数据 /// /// 等待转化的数据 /// buffer数据 byte[] TransByte( double value ); /// /// double数组变量转化缓存数据 /// /// 等待转化的数组 /// buffer数据 byte[] TransByte( double[] values ); /// /// 使用指定的编码字符串转化缓存数据 /// /// 等待转化的数据 /// 字符串的编码方式 /// buffer数据 byte[] TransByte( string value, Encoding encoding ); #endregion #region Public Properties /// /// 获取或设置数据解析的格式,默认ABCD,可选BADC,CDAB,DCBA格式 /// DataFormat DataFormat { get; set; } #endregion } }