示例#1
0
        public List <T> sendReadMessage <T>(ModbusTCPReadMessage <T> message)
        {
            List <T> returnVal = new List <T>();

            switch (message.functionCode)
            {
            case ModbusTCPReadMessage <T> .FunctionCode.ReadCoils:
                log("Read coils from " + message.startReg + ", register count " + message.length);
                returnVal = _connector.ReadCoils(message.startReg, message.length).Cast <T>().ToList();
                break;

            case ModbusTCPReadMessage <T> .FunctionCode.ReadDiscreteInputs:
                log("Read discrete inputs from " + message.startReg + ", register count " + message.length);
                returnVal = _connector.ReadDiscreteInputs(message.startReg, message.length).Cast <T>().ToList();
                break;

            case ModbusTCPReadMessage <T> .FunctionCode.ReadHoldingRegisters:
                log("Read holding registers from " + message.startReg + ", register count " + message.length);
                returnVal = _connector.ReadHoldingRegisters(message.startReg, message.length).Cast <T>().ToList();
                break;

            case ModbusTCPReadMessage <T> .FunctionCode.ReadInputRegisters:
                log("Read input registers from " + message.startReg + ", register count " + message.length);
                returnVal = _connector.ReadInputRegisters(message.startReg, message.length).Cast <T>().ToList();
                break;

            default:
                throw new Exception("Unknown read function code: " + message.functionCode.ToString());
                log("Unknown read function code: " + message.functionCode.ToString());
            }
            log("Message response " + returnVal.ToString());
            return(returnVal);
        }
示例#2
0
        public void sendReadMessage_Coils_readCoil()
        {
            var slaveConnector = new Moq.Mock <ITCPSlaveConnector>();

            slave = new TCPSlave(slaveConnector.Object);
            ModbusTCPReadMessage <bool> message = new ModbusTCPReadMessage <bool>()
            {
                functionCode = ModbusTCPReadMessage <bool> .FunctionCode.ReadCoils,
                startReg     = 30,
                length       = 40,
            };

            slave.sendReadMessage <bool>(message);

            //verify the correct send Message is called
            slaveConnector.Verify(s => s.ReadCoils(message.startReg, (message.length)), Moq.Times.Once);
        }
示例#3
0
        public void sendReadMessage_InputRegisters_readInputRegisters()
        {
            var slaveConnector = new Moq.Mock <ITCPSlaveConnector>();

            slave = new TCPSlave(slaveConnector.Object);
            ModbusTCPReadMessage <int> message = new ModbusTCPReadMessage <int>()
            {
                functionCode = ModbusTCPReadMessage <int> .FunctionCode.ReadInputRegisters,
                startReg     = 30,
                length       = 40,
            };

            slave.sendReadMessage <int>(message);

            //verify the correct send Message is called
            slaveConnector.Verify(s => s.ReadInputRegisters(message.startReg, (message.length)));
        }