Ejemplo n.º 1
0
        public void TestReadHoldingRegisters()
        {
            IModbusMessage request;

            byte[] sendBytes = _modbusMaster.BuildReadHoldingRegistersCommand(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);

            ushort[] response = _modbusMaster.GetReadHoldingRegistersResponse(readBytes, request);
        }
Ejemplo n.º 2
0
        /// <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);
        }