IReadWriteNetReadStructAsyncT 方法 |
命名空间: HslCommunication.Core
Task<OperateResult<T>> ReadStructAsync<T>( string address, ushort length ) where T : class, new()
// 假设你要读取连续地址数据的情况,我们把需要读取的数据解析成一个个不同的数据类型,则可以使用本方法。 // 我们假设,我们要读取的PLC是西门子PLC,地址数据的假设如下 // 我们假设 设备是否启动是 M0.0 // 产量是 M10 开始的2个地址数据 // 温度信息是 M12开始的4个地址数据 // 报警的IO信息是 M20 开始,5个字节,共计40个IO点信息 // 那么我们可以做如下的定义 public class StructExample { /// <summary> /// 设备是否启动 /// </summary> [HslStruct( 0 )] public bool Enable { get; set; } /// <summary> /// 产量信息 /// </summary> [HslStruct( 10 )] public short Production { get; set; } /// <summary> /// 温度信息 /// </summary> [HslStruct( 12 )] public float Temperature { get; set; } /// <summary> /// 连续的位报警信息 /// </summary> [HslStruct( 20 * 8, 40 )] public bool[] AlarmStatus { get; set; } }
SiemensS7Net plc = new SiemensS7Net( SiemensPLCS.S1200, "192.168.0.100" ); // 此处需要注意的是,凡是带有 HslStruct 特性的属性都会被读取出来 OperateResult<StructExample> read = plc.ReadStruct<StructExample>( "M0", 30 ); if (read.IsSuccess) { // success StructExample data = read.Content; } else { // failed Console.WriteLine( "读取失败:" + read.Message ); }