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); }
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); }
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))); }