This commit is contained in:
cheng
2026-06-08 17:52:48 +08:00
commit 7a15bd8e14
189 changed files with 192687 additions and 0 deletions
@@ -0,0 +1,71 @@
# Changingtek 伺服步进控制器 C++ SDK
基于 Modbus RTU 协议的伺服步进电机控制 SDK (C++ 版本)。
本 SDK 采用跨平台设计,一套代码可同时支持 **Windows****Linux (x86/ARM)** 系统。
## 目录结构
- `Changingtek_p_rtu_Servo.h`: SDK 头文件 (核心接口)
- `Changingtek_p_rtu_Servo.cpp`: SDK 实现文件 (Modbus RTU 通信逻辑)
- `main.cpp`: 主程序 (包含 5 次循环控制演示)
- `compile_and_run.bat`: Windows 编译运行脚本 (MSVC)
- `Makefile`: Linux 编译脚本
## 编译与运行指南
### 1. Windows 环境
**前提条件**: 安装 Visual Studio (支持 C++ 开发)。
**操作步骤**:
1. 确保 USB 转串口模块已插入,并确认端口号 (例如 `COM3`)。
2. 如需修改端口,编辑 `main.cpp` 中的 `port` 变量。
3. 双击运行 `compile_and_run.bat`,或在命令行中执行:
```cmd
compile_and_run.bat
```
---
### 2. Linux 环境 (Ubuntu / ARM 架构)
**前提条件**: 系统已安装 `g++` 和 `make` 工具。
**操作步骤**:
1. **编译**:
打开终端进入项目目录,执行 `make` 命令:
```bash
cd /path/to/changingtek_p_rtu_Servo_cpp_version
make
```
编译成功后会生成可执行文件 `example_servo`。
2. **配置权限与端口**:
* 确认设备端口:通常为 `/dev/ttyUSB0` (USB转串口) 或 `/dev/ttyTHS1` (嵌入式板载串口)。
* 如果端口不是默认的 `/dev/ttyUSB0`,请修改 `main.cpp` 第 20 行:
```cpp
port = "/dev/ttyTHS1"; // 示例:修改为实际端口
```
修改后需要重新运行 `make`。
* 授予串口读写权限 (如遇到 Permission denied 错误)
```bash
sudo chmod 666 /dev/ttyUSB0
```
3. **运行**:
```bash
./example_servo
```
4. **清理**:
删除编译生成的文件:
```bash
make clean
```
## 功能特性
- **跨平台兼容**: 自动识别操作系统 (`_WIN32` 宏),底层分别调用 Windows API 和 Linux 系统调用 (termios),无需修改代码即可移植。
- **通信优化**: 针对伺服控制优化,使用 Modbus 0x10 功能码实现多寄存器同步写入 (位置/速度/力矩/加减速),显著降低通信延迟。
- **线程安全**: 内部集成互斥锁 (`std::mutex`),支持在主线程控制运动的同时,后台线程实时读取电机状态。