public void TestReadCoils() { IModbusMessage request; byte[] sendBytes = _modbusMaster.BuildReadCoilsCommand(slaveId, startAddress, numRegisters, out request); _sr.Write(sendBytes, 0, sendBytes.Length); byte[] readBuffer = new byte[1024]; int num = _sr.Read(readBuffer, 0, readBuffer.Length); byte[] readBytes = new byte[num]; Buffer.BlockCopy(readBuffer, 0, readBytes, 0, num); bool[] response = _modbusMaster.GetReadCoilsResponse(readBytes, numRegisters, request); }
/// <summary> /// 每次返回请求数据命令。 /// </summary> /// <returns></returns> public override IList <IRequestInfo> GetConstantCommand() { IList <ITag> tags = this.DeviceDynamic.DynamicData.GetTags(); if (tags.Count <= 0) { return(null); } IList <IRequestInfo> requestList = new List <IRequestInfo>(); foreach (ITag tag in tags) { IModbusMessage requestMsg = null; byte[] reqeustBytes = null; if (tag.Function == Modbus.Modbus.ReadCoils) { #region reqeustBytes = _modbusTcpMaster.BuildReadCoilsCommand((byte)tag.SlaveId, (ushort)tag.Address, (ushort)tag.Quantity, out requestMsg); #endregion } else if (tag.Function == Modbus.Modbus.ReadInputs) { #region reqeustBytes = _modbusTcpMaster.BuildReadInputsCommand((byte)tag.SlaveId, (ushort)tag.Address, (ushort)tag.Quantity, out requestMsg); #endregion } else if (tag.Function == Modbus.Modbus.ReadHoldingRegisters) { #region reqeustBytes = _modbusTcpMaster.BuildReadHoldingRegistersCommand((byte)tag.SlaveId, (ushort)tag.Address, (ushort)tag.Quantity, out requestMsg); #endregion } else if (tag.Function == Modbus.Modbus.ReadInputRegisters) { #region reqeustBytes = _modbusTcpMaster.BuildReadInputRegistersCommand((byte)tag.SlaveId, (ushort)tag.Address, (ushort)tag.Quantity, out requestMsg); #endregion } if (reqeustBytes != null) { requestList.Add(new RequestInfo(reqeustBytes, new SendObject(requestMsg, tag))); } } return(requestList); }