McHelperReadRandomAsync 方法 (IReadWriteMc, String, UInt16) |
命名空间: HslCommunication.Profinet.Melsec.Helper
public static Task<OperateResult<byte[]>> ReadRandomAsync( IReadWriteMc mc, string[] address, ushort[] length )
// 随机读取的示例,所谓的随机读取,就是跨地址读取数据 // 下面我们举个例子,我们读取D100-D104的值,D200-D209的值,M32-M47的值,W100-W104的值,如何一次就读取出来呢? MelsecMcNet melsec_net = new MelsecMcNet( "192.168.0.100", 6000 ); OperateResult<byte[]> read = melsec_net.ReadRandom( new string[] { "D100", "D200", "M32", "W100" }, new ushort[] { 5, 10, 1, 5 } ); if (read.IsSuccess) { short d100 = melsec_net.ByteTransform.TransInt16( read.Content, 0 ); short d101 = melsec_net.ByteTransform.TransInt16( read.Content, 2 ); short d102 = melsec_net.ByteTransform.TransInt16( read.Content, 4 ); short d103 = melsec_net.ByteTransform.TransInt16( read.Content, 6 ); short d104 = melsec_net.ByteTransform.TransInt16( read.Content, 8 ); short d200 = melsec_net.ByteTransform.TransInt16( read.Content, 10 ); short d201 = melsec_net.ByteTransform.TransInt16( read.Content, 12 ); // 等等 short w100 = melsec_net.ByteTransform.TransInt16( read.Content, 32 ); short w101 = melsec_net.ByteTransform.TransInt16( read.Content, 34 ); short w102 = melsec_net.ByteTransform.TransInt16( read.Content, 36 ); short w103 = melsec_net.ByteTransform.TransInt16( read.Content, 38 ); short w104 = melsec_net.ByteTransform.TransInt16( read.Content, 40 ); // M是位地址,提取稍微麻烦一点点 bool[] array = HslCommunication.BasicFramework.SoftBasic.ByteToBoolArray( melsec_net.ByteTransform.TransByte( read.Content, 30, 2 ) ); bool m32 = array[0]; bool m33 = array[1]; bool m34 = array[2]; bool m35 = array[3]; // 等等,按照规律操作就可以 // do something } else { // failed }