点击或拖拽改变大小

IDataTransfer 接口

用于PLC通讯及ModBus自定义数据类型的读写操作

命名空间:  HslCommunication
程序集:  HslCommunication (在 HslCommunication.dll 中) 版本:12.1.2.0 (12.1.2.0)
语法
public interface IDataTransfer

IDataTransfer 类型公开以下成员。

属性
  名称说明
公共属性ReadCount
读取的数据长度,对于西门子,等同于字节数,对于三菱和Modbus为字节数的一半
Top
方法
  名称说明
公共方法ParseSource
从字节数组进行解析实际的对象
公共方法ToSource
将对象生成字符源,写入PLC中
Top
备注
主要应用于设备实现设备类的自定义的数据类型读写,以此达到简化代码的操作,但是有一个前提,该数据处于连续的数据区块
示例
此处举例读取三菱的自定义的数据,先实现接口,然后再读写操作
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;
    }
}
接下来就可以实现数据的读取了
ReadCustomer示例
MelsecMcNet melsec = new MelsecMcNet( "192.168.0.100", 6000 );
OperateResult<DataMy> read = melsec.ReadCustomer<DataMy>( "M100" );
if (read.IsSuccess)
{
    // success
    DataMy data = read.Content;
}
else
{
    // failed
    Console.WriteLine( "读取失败:" + read.Message );
}
参见