autolabor::pm1::shutdown

声明于头文件 pm1_sdk.h


autolabor::pm1::result<void>
autolabor::pm1::shutdown();

关闭与机器人底盘的串口连接。

参数

(无)

返回值

若关闭失败,result.error_info 保存错误信息。

注意

为了保证资源的安全性,initializeshutdown 通过互斥锁保护,多线程调用时将阻塞,按获得锁的顺序依次执行。这两个函数执行期间,对其他任何引发机器人动作或查询机器人状态的 SDK 函数的调用将直接失败并立即返回。

示例

下面一段代码先调用 initialize() 连接到机器人底盘,1 秒后调用 shutdown() 释放连接。另有一个分离的线程间隔 0.1s 打印左轮控制器的状态,建立连接前及断开连接后,打印 0,表示状态未知;连接时打印 1(正常) 或 255(锁定):

#include <iostream>
#include <thread>
#include "pm1_sdk.h"

int main() {
    using namespace autolabor::pm1;

    std::thread([] {
        while (true) {
            std::cout << static_cast<int>(check_state()) << std::endl;
            delay(0.1);
        }
    }).detach();

    if (!initialize()) return 1;
    delay(1);
    shutdown();
    delay(1);
}