#pragma once #include #include #include #include #include #include #include #include using namespace std; // 结构体定义 IMU 数据 struct IMUData { cv::Point3f vAcc; cv::Point3f vGyro; double timestamp; }; class IMUReader { public: // 构造函数 IMUReader(std::string ComNumber); // 构造函数 IMUReader(); // 析构函数 ~IMUReader(); // 初始化 IMU void IMUInit(std::string ComNumber); // 获取 IMU 数据状态 int ReadData(IMUData& data); int IMUReadData(); std::vector imubuffer; IMUData getdata() const{ std::unique_lock lock(dataMutex); return data; }; private: boost::asio::io_service io; boost::asio::serial_port* serial; // boost::asio::serial_port serial(io, "/dev/ttyUSB0"); // 替换成你的串口设备路径 bool isRunning; // 控制是否退出循环的标志变量 std::thread dataThread; // 数据读取线程 IMUData data; mutable std::mutex dataMutex; // 读取 IMU 数据的循环 void IMUReadDataThread(void); };