// 文件名: src/modbus/modbus_master_poller.h #ifndef MODBUS_MASTER_POLLER_H #define MODBUS_MASTER_POLLER_H #include "protocol/iprotocol_adapter.h" // For UnifiedData and ReportDataCallback #include "modbus_common.h" #include #include #include #include class ModbusMasterPoller : public std::enable_shared_from_this { public: // <<< MODIFIED: 构造函数接收新的配置结构体 ModbusMasterPoller(boost::asio::io_context& io_context, ModbusTcpDeviceConfig config, ReportDataCallback report_cb); void start(); private: void do_connect(); void do_poll(); void do_write(); void do_read_header(); void do_read_pdu(std::size_t pdu_length, uint16_t poll_start_addr); // <<< MODIFIED: 需要知道轮询的起始地址 void on_error(const std::string& stage); boost::asio::io_context& m_io_context; boost::asio::ip::tcp::socket m_socket; boost::asio::steady_timer m_timer; // <<< MODIFIED: 成员变量使用新的配置结构体 ModbusTcpDeviceConfig m_config; ReportDataCallback m_report_callback; std::vector m_write_buffer; std::array m_read_buffer; uint16_t m_transaction_id = 0; }; #endif // MODBUS_MASTER_POLLER_H