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", "连接成功");