49 lines
1.2 KiB
C++
49 lines
1.2 KiB
C++
#ifndef RC_RECEIVER_H
|
|
#define RC_RECEIVER_H
|
|
|
|
#include <ros/ros.h>
|
|
#include <serial/serial.h>
|
|
#include <rc_receiver/rc.h>
|
|
#include <vector>
|
|
#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<uint8_t> &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<uint8_t> 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
|