Skip to content

5. SDK打印内容说明

5.1 输出内容格式

C++ SDK 使用标准输出(std::cout)和标准错误(std::cerr)进行日志输出。

5.2 典型输出内容

启动时的输出

===========================================
PSI Glove SDK - 基础使用示例
===========================================
串口: /dev/ttyACM0
波特率: 115200
===========================================

正在连接到设备...
连接成功!

开始读取数据 (按Ctrl+C退出)...

运行时的数据输出

--- 帧 #0 ---
拇指: 2048, 1856, 2304, 1792, 2176
食指: 1920, 2240, 1664, 2112
中指: 2304, 1856, 2048, 1792
无名指: 1920, 2176, 1664, 2048
小指: 2240, 1856, 2304, 1920

--- 帧 #10 ---
拇指: 2052, 1860, 2308, 1796, 2180
食指: 1924, 2244, 1668, 2116
中指: 2308, 1860, 2052, 1796
无名指: 1924, 2180, 1668, 2052
小指: 2244, 1860, 2308, 1924

错误和警告输出

错误: 无法连接到设备
请检查:
  - 设备是否已连接
  - 串口路径是否正确
  - 是否有权限访问串口 (sudo adduser $USER dialout)

警告: 读取失败,使用缓存数据
(使用上次的有效数据)

退出时的统计信息

^C
正在退出...

===========================================
统计信息:
  总帧数: 1523
  运行时间: 15 秒
  平均帧率: 101.53 Hz
===========================================

已断开连接。

5.3 例程可视化显示

psi_glove_cpp_visualizer OpenCV 窗口

可视化器使用 OpenCV 显示实时柱状图:

┌─────────────────────────────────────────────────────────┐
│  PSI 手套实时数据可视化 (OpenCV)                        │
├─────────────────────────────────────────────────────────┤
│  左手关节位置 (ADC 值: 0-4095)                          │
│                                                         │
│  拇指_0  ████████████████████████████ 2048              │
│  拇指_1  ████████████████████ 1856                      │
│  拇指_2  ████████████████████████████████ 2304          │
│  拇指_3  ███████████████████ 1792                       │
│  拇指_4  ██████████████████████████ 2176                │
│  食指_0  █████████████████████ 1920                     │
│  ...                                                    │
│                                                         │
│  [Q]退出  [S]截图  [R]重置                              │
│  FPS: 101.5 Hz  |  延迟: 9.8 ms                         │
└─────────────────────────────────────────────────────────┘

显示元素说明:

  • 柱状图:每个关节的实时数值
  • 帧率:数据更新频率
  • 延迟:从读取到显示的时间
  • 交互操作
    • Q 键退出
    • S 键保存截图
    • R 键重置显示

5.4 自定义日志输出

cpp
// 自定义日志宏
#define LOG_INFO(msg) std::cout << "[INFO] " << msg << std::endl
#define LOG_WARN(msg) std::cout << "[WARN] " << msg << std::endl
#define LOG_ERROR(msg) std::cerr << "[ERROR] " << msg << std::endl

// 使用示例
LOG_INFO("正在连接到设备...");
LOG_WARN("读取失败,使用缓存数据");
LOG_ERROR("无法连接到设备");
cpp
// 带时间戳的日志
#include <chrono>
#include <iomanip>

void LogWithTimestamp(const std::string& level, const std::string& msg) {
    auto now = std::chrono::system_clock::now();
    auto time_t = std::chrono::system_clock::to_time_t(now);
    std::cout << "[" << std::put_time(std::localtime(&time_t), "%Y-%m-%d %H:%M:%S")
              << "] [" << level << "] " << msg << std::endl;
}

// 使用
LogWithTimestamp("INFO", "连接成功");