public ReadDataModbusInputStruct(byte belongAddress, string startAddress, ushort getCount, AddressTranslator addressTranslator) { BelongAddress = belongAddress; KeyValuePair<int, int> translateAddress = addressTranslator.AddressTranslate(startAddress, true); FunctionCode = (byte)translateAddress.Value; StartAddress = (ushort)translateAddress.Key; GetCount = getCount; }
/// <summary> /// 构造函数 /// </summary> /// <param name="slaveAddress">从站号</param> /// <param name="startAddress">开始地址</param> /// <param name="writeValue">写入的数据</param> /// <param name="addressTranslator">地址翻译器</param> /// <param name="endian">端格式</param> public WriteDataModbusInputStruct(byte slaveAddress, string startAddress, object[] writeValue, AddressTranslator addressTranslator, Endian endian) { SlaveAddress = slaveAddress; var translateAddress = addressTranslator.AddressTranslate(startAddress, false); FunctionCode = (byte)translateAddress.Area; StartAddress = (ushort)translateAddress.Address; var writeByteValue = ValueHelper.GetInstance(endian).ObjectArrayToByteArray(writeValue); WriteCount = (ushort)(writeByteValue.Length / addressTranslator.GetAreaByteLength(translateAddress.AreaString)); WriteByteCount = (byte)writeByteValue.Length; WriteValue = writeByteValue; }
/// <summary> /// 构造函数 /// </summary> /// <param name="slaveAddress">从站号</param> /// <param name="masterAddress">主站号</param> /// <param name="pduRef">报文索引</param> /// <param name="getType">获取数据类型</param> /// <param name="startAddress">开始地址</param> /// <param name="getCount">获取个数</param> /// <param name="addressTranslator">地址转换器</param> public ReadRequestSiemensInputStruct(byte slaveAddress, byte masterAddress, ushort pduRef, SiemensTypeCode getType, string startAddress, ushort getCount, AddressTranslator addressTranslator) { SlaveAddress = slaveAddress; MasterAddress = masterAddress; PduRef = pduRef; TypeCode = (byte)getType; var address = addressTranslator.AddressTranslate(startAddress, true); Offset = address.Address; var area = address.Area; Area = (byte)(area % 256); DbBlock = Area == 0x84 ? (ushort)(area / 256) : (ushort)0; NumberOfElements = getCount; }
public WriteDataModbusInputStruct(byte belongAddress, string startAddress, object[] writeValue, AddressTranslator addressTranslator) { BelongAddress = belongAddress; KeyValuePair<int, int> translateAddress = addressTranslator.AddressTranslate(startAddress, false); FunctionCode = (byte)translateAddress.Value; StartAddress = (ushort)translateAddress.Key; WriteCount = (ushort)writeValue.Length; WriteByteCount = 0; WriteValue = writeValue; }
public WriteRequestSimenseInputStruct(ushort pduRef, string startAddress, object[] writeValue, AddressTranslator addressTranslator) { PduRef = pduRef; var address = addressTranslator.AddressTranslate(startAddress, true); Offset = address.Key; int area = address.Value; Area = (byte)(area % 256); DbBlock = Area == 0x84 ? (ushort)(area / 256) : (ushort)0; WriteValue = writeValue; }
public ReadRequestSimenseInputStruct(ushort pduRef, SimenseTypeCode getType, string startAddress, ushort getCount, AddressTranslator addressTranslator) { PduRef = pduRef; TypeCode = (byte) getType; var address = addressTranslator.AddressTranslate(startAddress, true); Offset = address.Key; int area = address.Value; Area = (byte)(area%256); DbBlock = Area == 0x84 ? (ushort)(area/256) : (ushort)0; NumberOfElements = getCount; }