From 5a6186d4880820fde80858135ef21bc49f6aa1b3 Mon Sep 17 00:00:00 2001 From: Peter M. Groen Date: Sat, 18 Nov 2023 01:34:00 +0100 Subject: [PATCH] Added RTU Test --- include/request.h | 7 ++++--- src/modbus.cpp | 2 +- src/modbusbase.h | 2 +- src/modbustcp.cpp | 4 ++-- tests/CMakeLists.txt | 2 +- tests/modbusstacktest.cpp | 18 ++++++++++++++++++ 6 files changed, 27 insertions(+), 8 deletions(-) diff --git a/include/request.h b/include/request.h index 538d88e..c34381c 100644 --- a/include/request.h +++ b/include/request.h @@ -49,14 +49,15 @@ public: FC_READ_FILE_RECORD, FC_WRITE_FILE_RECORD, }; - - explicit Request() + + + Request() : m_functionCode(Request::FunctionCode::FC_UNKNOWN) , m_slaveId(0) , m_startAddress(0x00) , m_numberOfRegisters(0x00) {} - + /// Constructor taking all necessary information to create a request. /// /// @param functionCode - The code of the action this request wants to perform. diff --git a/src/modbus.cpp b/src/modbus.cpp index 782d1d1..f9202eb 100644 --- a/src/modbus.cpp +++ b/src/modbus.cpp @@ -34,7 +34,7 @@ bool ModBus::Open(const ConnectionConfig &connection_config) } } - if(m_modbus->getConnected()) + if(m_modbus->isConnected()) { m_modbus->Close(); } diff --git a/src/modbusbase.h b/src/modbusbase.h index 40a68d0..ee7e569 100644 --- a/src/modbusbase.h +++ b/src/modbusbase.h @@ -152,7 +152,7 @@ public: // Getters and Setters. void setConnected(bool connected = false){ m_connected = connected;} - bool getConnected() const { return m_connected; } + bool isConnected() const { return m_connected; } void setMessageId( uint32_t message_id ) { m_msg_id = message_id; } uint32_t getMessageId() const { return m_msg_id; } void setSlaveId(int slave_id){ m_slaveId = slave_id; } diff --git a/src/modbustcp.cpp b/src/modbustcp.cpp index 8ee2bcf..1f278d1 100644 --- a/src/modbustcp.cpp +++ b/src/modbustcp.cpp @@ -65,7 +65,7 @@ bool ModbusTcp::Connect() LOG("Connected"); ModbusBase::setConnected( true ); - return true; + return ModbusBase::isConnected(); } bool ModbusTcp::Close() @@ -73,7 +73,7 @@ bool ModbusTcp::Close() X_CLOSE_SOCKET(m_socket); LOG("Socket Closed"); ModbusBase::setConnected(false); - return ModbusBase::getConnected(); + return ModbusBase::isConnected(); } int ModbusTcp::modbusReceive(uint8_t *buffer) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index ba6cd08..6ffa1eb 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -27,4 +27,4 @@ add_test(NAME modbustest COMMAND modbustest) set_tests_properties(modbustest PROPERTIES WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" -) +) \ No newline at end of file diff --git a/tests/modbusstacktest.cpp b/tests/modbusstacktest.cpp index f355454..794d9ab 100644 --- a/tests/modbusstacktest.cpp +++ b/tests/modbusstacktest.cpp @@ -5,8 +5,11 @@ ****************************************************************/ #include #include +#include #include "connectionconfig.h" +#include "modbus.h" +#include "request.h" using namespace osdev::components::modbus; @@ -23,5 +26,20 @@ TEST(ModbusStackTest, StackConnectRTU) oConfig.setPortName("/dev/ttyUSB0"); // Create the modbus-stack.. + ModBus oModbus; + EXPECT_EQ(oModbus.Open(oConfig), true); + + // Create a request to read the Temperature from a physical device XY-MD02 + Request request(Request::FunctionCode::FC_READ_HOLDING_REGISTERS, + 1, + 0x0001, + 2, + [](Response response) mutable + { + std::cout << "Result: " << response.resultValue << std::endl; + return true; + }); + // Send the request + Response response = oModbus.SendRequest(request); } -- libgit2 0.21.4