using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace MECF.Framework.RT.Core.IoProviders.Siemens.Net { /// /// 所有的和设备或是交互类统一读写标准 /// /// /// Modbus类,PLC类均实现了本接口,可以基于本接口实现统一所有的不同种类的设备的数据交互 /// /// /// 此处举例实现modbus,三菱,西门子三种设备的统一的数据交互 /// /// public interface IReadWriteNet { #region Read Support /// /// 批量读取底层的数据信息,需要指定地址和长度,具体的结果取决于实现 /// /// 数据地址 /// 数据长度 /// 带有成功标识的byte[]数组 OperateResult Read( string address, ushort length ); /// /// 读取16位的有符号整型 /// /// 起始地址 /// 带有成功标识的short数据 OperateResult ReadInt16( string address ); /// /// 读取16位的有符号整型数组 /// /// 起始地址 /// 读取的数组长度 /// 带有成功标识的short数组 OperateResult ReadInt16( string address, ushort length ); /// /// 读取16位的无符号整型 /// /// 起始地址 /// 带有成功标识的ushort数据 OperateResult ReadUInt16( string address ); /// /// 读取16位的无符号整型数组 /// /// 起始地址 /// 读取的数组长度 /// 带有成功标识的ushort数组 OperateResult ReadUInt16( string address, ushort length ); /// /// 读取32位的有符号整型 /// /// 起始地址 /// 带有成功标识的int数据 OperateResult ReadInt32( string address ); /// /// 读取32位有符号整型的数组 /// /// 起始地址 /// 数组长度 /// 带成功标志的结果数据对象 OperateResult ReadInt32( string address, ushort length ); /// /// 读取32位的无符号整型 /// /// 起始地址 /// 带有成功标识的uint数据 OperateResult ReadUInt32( string address ); /// /// 读取设备的uint类型的数组 /// /// 起始地址 /// 数组长度 /// 带成功标志的结果数据对象 OperateResult ReadUInt32( string address, ushort length ); /// /// 读取64位的有符号整型 /// /// 起始地址 /// 带有成功标识的long数据 OperateResult ReadInt64( string address ); /// /// 读取64位的有符号整型数组 /// /// 起始地址 /// 数组长度 /// 带成功标志的结果数据对象 OperateResult ReadInt64( string address, ushort length ); /// /// 读取64位的无符号整型 /// /// 起始地址 /// 带有成功标识的ulong数据 OperateResult ReadUInt64( string address ); /// /// 读取64位的无符号整型的数组 /// /// 起始地址 /// 数组长度 /// 带成功标志的结果数据对象 OperateResult ReadUInt64( string address, ushort length ); /// /// 读取单浮点精度的数据 /// /// 起始地址 /// 带有成功标识的float数据 OperateResult ReadFloat( string address ); /// /// 读取单浮点精度的数组 /// /// 起始地址 /// 数组长度 /// 带成功标志的结果数据对象 OperateResult ReadFloat( string address, ushort length ); /// /// 读取双浮点精度的数据 /// /// 起始地址 /// 带有成功标识的double数据 OperateResult ReadDouble( string address ); /// /// 读取双浮点精度的数据的数组 /// /// 起始地址 /// 数组长度 /// 带成功标志的结果数据对象 OperateResult ReadDouble( string address, ushort length ); /// /// 读取字符串数据, /// /// 起始地址 /// 数据长度 /// 带有成功标识的string数据 OperateResult ReadString( string address, ushort length ); /// /// 读取自定义的数据类型,需要继承自IDataTransfer接口 /// /// 自定义的类型 /// 起始地址 /// 带有成功标识的自定义类型数据 OperateResult ReadCustomer( string address ) where T : IDataTransfer, new(); #endregion #region Write Support /// /// 写入byte数组数据 /// /// 起始地址 /// 写入值 /// 带有成功标识的结果类对象 OperateResult Write( string address, byte[] value ); /// /// 写入short数据 /// /// 起始地址 /// 写入值 /// 带有成功标识的结果类对象 OperateResult Write( string address, short value ); /// /// 写入short数据 /// /// 起始地址 /// 写入值 /// 带有成功标识的结果类对象 OperateResult Write( string address, short[] values ); /// /// 写入int数据 /// /// 起始地址 /// 写入值 /// 带有成功标识的结果类对象 OperateResult Write( string address, int value ); /// /// 写入int[]数组 /// /// 起始地址 /// 写入值 /// 带有成功标识的结果类对象 OperateResult Write( string address, int[] values ); /// /// 写入long数据 /// /// 起始地址 /// 写入值 /// 带有成功标识的结果类对象 OperateResult Write( string address, long value ); /// /// 写入long数组 /// /// 起始地址 /// 写入值 /// 带有成功标识的结果类对象 OperateResult Write( string address, long[] values ); /// /// 写入float数据 /// /// 起始地址 /// 写入值 /// 带有成功标识的结果类对象 OperateResult Write( string address, float value ); /// /// 写入float数组 /// /// 起始地址 /// 写入值 /// 带有成功标识的结果类对象 OperateResult Write( string address, float[] values ); /// /// 写入double数据 /// /// 起始地址 /// 写入值 /// 带有成功标识的结果类对象 OperateResult Write( string address, double value ); /// /// 写入double数组 /// /// 起始地址 /// 写入值 /// 带有成功标识的结果类对象 OperateResult Write( string address, double[] values ); /// /// 写入字符串信息,编码为ASCII /// /// 起始地址 /// 写入值 /// 带有成功标识的结果类对象 OperateResult Write( string address, string value ); /// /// 写入指定长度的字符串信息,编码为ASCII /// /// 起始地址 /// 写入值 /// 字符串的长度 /// 带有成功标识的结果类对象 OperateResult Write( string address, string value, int length ); /// /// 写入自定义类型的数据,该类型必须继承自IDataTransfer接口 /// /// 类型对象 /// 起始地址 /// 写入值 /// 带有成功标识的结果类对象 OperateResult WriteCustomer( string address, T value ) where T : IDataTransfer, new(); #endregion } }