北の国から

忘れたことを思い出す為の記録

cppでdepthaiのxLinkやSPIOutを試す

ruru-log.hatenablog.com

上記のcpp版です。

#include <vector>
#include "depthai/depthai.hpp"
int main(int argc, char *argv[]){

    dai::Pipeline pipeline = createPipeline();
    dai::Device device(pipeline);

    std::shared_ptr<dai::DataInputQueue> xInQueue = device.getInputQueue("communication");
    std::shared_ptr<dai::DataOutputQueue> xOutQueue = device.getOutputQueue("communication",5,false);
    
    uint16_t angle = 0;
    uint16_t reachTime = 0;
    while(true){
        dai::Buffer srv;
        std::vector<uint8_t> data{
            0x55,
            0x55,
            0x01,
            0x07,
            0x01,
            0x00FF & angle,
            0x00FF & angle>>8,
            0x00FF & reachTime,
            0x00FF & reachTime>>8,
            };
        data.push_back(~std::accumulate(data.begin(),data.end(),0));
        srv.setData(data);
        xInQueue->send(srv);
        auto get_data = xOutQueue->tryGet();
        if(get_data != nullptr){
            std::for_each(get_data->getRaw()->data.begin(),get_data->getRaw()->data.end(),
            [](const int& n){std::cout<<n<<";";});
            std::cout<<std::endl;
        }
    }
    return 0;
}

角度とかは0固定にしてるけど。

rosから動かすのも問題なく書けそうです。
c++もっと使って勉強しないとなぁ。

dataの宣言のとこ、もっと賢くできるんじゃないかなぁと思っている。

depthai周りはこのリポジトリで作業します。

github.com

ruru