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
}
}