Newer
Older
casic_unitree_dog / src / serial_port_wrapper.hpp
//
// Created by casic on 25-2-25.
//

#ifndef SERIAL_PORT_WRAPPER_HPP
#define SERIAL_PORT_WRAPPER_HPP

#include <boost/asio.hpp>
#include <boost/asio/steady_timer.hpp>

using boost::asio::serial_port_base;
using boost::asio::steady_timer;

class serial_port_wrapper {
public:
    explicit serial_port_wrapper(boost::asio::io_service &io_service, const std::string &port_name, int baud_rate);

    boost::asio::serial_port &get() { return port_; }

    void read_from_port(boost::asio::streambuf &buffer);

    void write_to_port(std::vector<uint8_t> command);

    void start_periodic_send();

private:
    // 查询甲烷的指令
    std::vector<uint8_t> query_methane_command = {0xAA, 0x01, 0x00, 0x95, 0x00, 0x00, 0x96};
    boost::asio::io_service &io_service_;
    boost::asio::serial_port port_;
    steady_timer timer_;

    void handle_data(const std::vector<uint8_t> &buffer);
};

#endif //SERIAL_PORT_WRAPPER_HPP