Files
test/sdk/changingtek_p_rtu_Servo_cpp_version/main.cpp
T
2026-06-08 17:52:48 +08:00

72 lines
2.3 KiB
C++

#include "Changingtek_p_rtu_Servo.h"
#include <iostream>
#include <thread>
#include <chrono>
#ifdef _WIN32
#include <windows.h>
#endif
int main() {
#ifdef _WIN32
// 设置控制台代码页为 UTF-8,解决中文乱码问题
SetConsoleOutputCP(65001);
#endif
std::string port;
#ifdef _WIN32
port = "COM3"; // Windows 默认端口
#else
port = "/dev/ttyUSB0"; // Linux 默认端口
#endif
int slave_id = 1;
std::cout << "正在初始化伺服步进控制器 SDK (端口: " << port << ", ID: " << slave_id << ")..." << std::endl;
try {
Changingtek_p_rtu_Servo sdk(port, slave_id);
if (!sdk.connect()) {
std::cerr << "连接失败!" << std::endl;
return 1;
}
std::cout << "连接成功!" << std::endl;
// 启动实时监控
sdk.start_monitoring(0.5);
// 循环控制:5次往复运动
// 假设 9000 为闭合位置,0 为张开位置
// 最后一次循环结束后,确保处于张开位置 (0)
for (int i = 0; i < 5; ++i) {
std::cout << "\n--- 第 " << (i + 1) << "/5 次循环 ---" << std::endl;
// 阶段1: 运动到位置 9000 (闭合?)
std::cout << "执行阶段 1: 移动到位置 9000..." << std::endl;
sdk.temp_move(9000, 50, 25, 60, 60, true);
std::this_thread::sleep_for(std::chrono::seconds(3)); // 等待运动完成
// 阶段2: 运动到位置 0 (张开?)
std::cout << "执行阶段 2: 移动到位置 0..." << std::endl;
sdk.temp_move(0, 50, 25, 60, 60, true);
std::this_thread::sleep_for(std::chrono::seconds(3)); // 等待运动完成
}
std::cout << "\n循环结束,确认最终状态为张开 (位置 0)..." << std::endl;
// 再次发送指令确保最终状态为 0 (虽然循环最后一步已经是 0,但这保证了"最后要张开"的要求)
sdk.temp_move(0, 50, 25, 60, 60, true);
std::this_thread::sleep_for(std::chrono::seconds(1));
// 停止监控
sdk.stop_monitoring();
std::cout << "程序已完成。" << std::endl;
} catch (const std::exception& e) {
std::cerr << "发生异常: " << e.what() << std::endl;
return 1;
}
return 0;
}