Skip to content

3. 例程编译和调用方法

3.1 例程列表

SDK 提供三个示例程序,位于 examples/ 目录:

例程名称文件功能说明
基础用法basic_usage.cpp演示连接、读取数据、断开连接
高级用法advanced_usage.cpp错误处理、统计信息、性能测试
实时可视化psi_glove_cpp_visualizer/OpenCV 实时柱状图显示

3.2 编译例程

方法 1: 使用 CMake 批量编译(推荐)

bash
cd psi-glove-SDK/cpp_sdk
mkdir build && cd build

# 配置并启用示例
cmake -DBUILD_EXAMPLES=ON ..

# 编译所有示例
make -j$(nproc)

# 示例可执行文件位于 build/examples/ 目录
ls -lh examples/
# 输出:
# basic_usage
# advanced_usage
# psi_glove_cpp_visualizer/psi_glove_cpp_visualizer

方法 2: 手动编译单个示例

bash
# 先安装 SDK(如果尚未安装)
cd psi-glove-SDK/cpp_sdk
mkdir build && cd build
cmake ..
make -j$(nproc)
sudo make install
sudo ldconfig

# 编译 basic_usage
cd ../examples
g++ -std=c++17 basic_usage.cpp -lpsi_glove_sdk -o basic_usage

# 编译 advanced_usage
g++ -std=c++17 advanced_usage.cpp -lpsi_glove_sdk -o advanced_usage

# 编译可视化器(需要 OpenCV)
cd psi_glove_cpp_visualizer
mkdir build && cd build
cmake ..
make

方法 3: 使用 pkg-config(如果支持)

bash
# 编译示例
g++ -std=c++17 basic_usage.cpp \
    $(pkg-config --cflags --libs psi_glove_sdk) \
    -o basic_usage

3.3 运行例程

3.3.1 基础用法示例

bash
cd psi-glove-SDK/cpp_sdk/build/examples

# 使用默认波特率(115200)
./basic_usage /dev/ttyACM0

# 自定义波特率
./basic_usage /dev/ttyACM0 500000

# Windows 系统
basic_usage.exe COM31

输出示例:

===========================================
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
...

^C
正在退出...

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

已断开连接。

3.3.2 高级用法示例

bash
# 运行高级示例(包含性能统计)
./advanced_usage /dev/ttyACM0

# 自定义波特率
./advanced_usage /dev/ttyACM0 500000

额外功能:

  • 实时帧率计算
  • 丢包率统计
  • 延迟测量
  • 错误计数
  • 数据完整性检查

3.3.3 实时可视化示例

bash
# 先安装 OpenCV(如果尚未安装)
# Ubuntu/Debian
sudo apt-get install libopencv-dev

# 编译可视化器
cd psi-glove-SDK/cpp_sdk/examples/psi_glove_cpp_visualizer
mkdir build && cd build
cmake ..
make

# 运行可视化器 - 左手
./psi_glove_cpp_visualizer --left /dev/ttyACM0

# 运行可视化器 - 双手
./psi_glove_cpp_visualizer \
    --left /dev/ttyACM0 \
    --right /dev/ttyACM1

# 自定义参数
./psi_glove_cpp_visualizer \
    --left /dev/ttyACM0 \
    --baudrate 500000 \
    --rate 100

可视化窗口:

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

3.4 例程可配置参数

basic_usage 参数

bash
./basic_usage <串口路> [波特率]

# 示例
./basic_usage /dev/ttyACM0           # 默认波特率 115200
./basic_usage /dev/ttyACM0 500000    # 波特率 500000

advanced_usage 参数

bash
./advanced_usage <串口路> [波特率]

# 示例
./advanced_usage /dev/ttyACM0 115200

psi_glove_cpp_visualizer 参数

bash
./psi_glove_cpp_visualizer [选项]

选项:
  --left <>        左手串口路径(例: /dev/ttyACM0)
  --right <>       右手串口路径(例: /dev/ttyACM1)
  --baudrate <波特>  通信波特率(默认: 115200)
  --rate <>        数据采集频率(默认: 100 Hz)
  --timeout <>     超时时间(默认: 6 ms)
  --window-size <> 平滑窗口大小(默认: 10)

# 示例
./psi_glove_cpp_visualizer \
    --left /dev/ttyACM0 \
    --baudrate 500000 \
    --rate 150 \
    --window-size 5