点击或拖拽改变大小

IReadWriteNetWriteAsyncT 方法 (T)

异步写入支持Hsl特性的数据,返回是否写入成功,该特性为HslDeviceAddressAttribute,详细参考api文档说明
Asynchronously write data that supports the Hsl attribute, and return whether the write was successful. The attribute is HslDeviceAddressAttribute, please refer to the api documentation for details.

命名空间:  HslCommunication.Core
程序集:  HslCommunication (在 HslCommunication.dll 中) 版本:12.1.2.0 (12.1.2.0)
语法
Task<OperateResult> WriteAsync<T>(
	T data
)
where T : class, new()

参数

data
类型:T

[缺少 "M:HslCommunication.Core.IReadWriteNet.WriteAsync``1(``0)" 的 <param name="data"/> 文档]

类型参数

T
自定义的数据类型对象

返回值

类型:TaskOperateResult
包含是否成功的结果对象
异常
异常条件
ArgumentNullException
示例
此处演示西门子的读取示例,先定义一个类,重点是将需要读取的数据,写入到属性的特性中去。
特性实现示例
// 假设你要读取几个数据的情况,我们把需要读取的数据定义成一个个的数量,本示例既适合单个读取,也适合批量读取,以下就是混搭的情况。
// 我们假设,我们要读取的PLC是西门子PLC,地址数据的假设如下
// 我们假设 设备是否启动是 M0.0
// 产量是 M10 开始的2个地址数据
// 温度信息是 DB1.0开始的4个地址数据
// 报警的IO信息是 M200 开始,5个字节,共计40个IO点信息
// 那么我们可以做如下的定义

public class DataExample
{
    /// <summary>
    /// 设备是否启动
    /// </summary>
    [HslDeviceAddress( "M0.0" )]
    public bool Enable { get; set; }

    /// <summary>
    /// 产量信息
    /// </summary>
    [HslDeviceAddress( "M10" )]
    public short Production { get; set; }

    /// <summary>
    /// 温度信息
    /// </summary>
    [HslDeviceAddress( "DB1.0" )]
    public float Temperature { get; set; }

    /// <summary>
    /// 连续的位报警信息
    /// </summary>
    [HslDeviceAddress( "M200", 5 )]
    public byte[] AlarmStatus { get; set; }
}
接下来就可以实现数据的写入了
WriteObjectAsync示例
SiemensS7Net plc = new SiemensS7Net( SiemensPLCS.S1200, "192.168.0.100" );

// 此处需要注意的是,凡是带有 HslDeviceAddress 特性的属性都会被写入进去
DataExample data = new DataExample( )
{
    Enable = true,
    Production = 123,
    Temperature = 123.4f,
    AlarmStatus = new byte[] { 0x01, 0x02, 0x03, 0x04, 0x05 }
};

OperateResult write = await plc.WriteAsync( data );
if (write.IsSuccess)
{
    // success
    Console.WriteLine( "写入成功!" );
}
else
{
    // failed
    Console.WriteLine( "写入失败:" + write.Message );
}
参见