#ifndef RC_RECEIVER_H #define RC_RECEIVER_H #include #include #include #include #include "sensor_msgs/BatteryState.h" class RCReceiver { public: RCReceiver(); void run(); private: ros::Subscriber battery_state_sub_; std::string input_battery_state_topic_; void readSerialData(); void parseFrameData(); bool parseModbusProtocol(const std::vector &frame); void battery_status_callback(const sensor_msgs::BatteryState::ConstPtr &msg); void checkTimeout(const ros::TimerEvent& event); ros::NodeHandle nh_; ros::NodeHandle private_nh_; serial::Serial ser_; ros::Publisher control_pub_; ros::Timer timeoutTimer_; std::vector serial_buffer_; ros::Time lastReceivedTime_; ros::Time lastReconnectAttempt_; // 记录上一次尝试重连的时间 const uint8_t AUTO_DRIVING; const uint8_t REMOTE_CONTROL; size_t frames_received_; size_t frames_discarded_; bool debug_; // 新增:串口配置参数(用于重连) std::string port_; // 串口设备路径 int baudrate_; // 波特率 }; #endif // RC_RECEIVER_H