点击或拖拽改变大小

SerialDeviceBaseReadCustomerAsyncT 方法 (String, T)

读取自定义的数据类型,需要继承自IDataTransfer接口,传入一个实例,对这个实例进行赋值,并返回该实例的对象。
To read a custom data type, you need to inherit from the IDataTransfer interface, pass in an instance, assign a value to this instance, and return the object of the instance.

命名空间:  HslCommunication.Serial
程序集:  HslCommunication (在 HslCommunication.dll 中) 版本:11.8.2.0 (11.8.2.0)
语法
public Task<OperateResult<T>> ReadCustomerAsync<T>(
	string address,
	T obj
)
where T : new(), IDataTransfer

参数

address
类型:SystemString
起始地址
obj
类型:T
实例

类型参数

T
自定义的类型

返回值

类型:TaskOperateResultT
带有成功标识的自定义类型数据

实现

IReadWriteNetReadCustomerAsyncT(String, T)
备注
需要是定义一个类,选择好相对于的ByteTransform实例,才能调用该方法。
示例
此处演示三菱的读取示例,先定义一个类,实现IDataTransfer接口
DataMy示例
public class DataMy : IDataTransfer
{
    // 根据对应的设备选择对应的实例化
    // 三菱 RegularByteTransform
    // 西门子 ReverseBytesTransform
    // Modbus及欧姆龙 ReverseWordTransform
    private IByteTransform byteTransform = new RegularByteTransform( );

    public ushort ReadCount => 5;


    public short temperature = 0;  // 温度
    public float press = 0f;       // 压力
    public int others = 0;         // 自定义的其他信息



    public void ParseSource( byte[] Content )
    {
        temperature = byteTransform.TransInt16( Content, 0 );
        press = byteTransform.TransSingle( Content, 2 );
        others = byteTransform.TransInt32( Content, 6 );
    }

    public byte[] ToSource( )
    {
        byte[] buffer = new byte[10];
        byteTransform.TransByte( temperature ).CopyTo( buffer, 0 );
        byteTransform.TransByte( press ).CopyTo( buffer, 2 );
        byteTransform.TransByte( others ).CopyTo( buffer, 6 );
        return buffer;
    }
}
接下来就可以实现数据的读取了
ReadCustomerAsync示例
MelsecMcNet melsec = new MelsecMcNet( "192.168.0.100", 6000 );
DataMy dataMy = new DataMy( );
OperateResult<DataMy> read = await melsec.ReadCustomerAsync<DataMy>( "M100", dataMy );
if (read.IsSuccess)
{
    // success
    Console.WriteLine( dataMy.temperature.ToString( ) );
}
else
{
    // failed
    Console.WriteLine( "读取失败:" + read.Message );
}
参见