核心概念
C# SDK 与 C++ SDK 接口一致,核心概念参见 C++ 核心概念。以下仅列出 C# 特有差异。
静态方法调用
所有接口为 nrc_interface 的静态方法:
csharp
int fd = nrc_interface.connect_robot("192.168.1.15", "6001");
int result = nrc_interface.get_servo_state(fd, ref status);容器类型
使用 Csharp_api 提供的容器类替代原生数组:
| 容器 | 用法 |
|---|---|
VectorDouble | new VectorDouble(7) 或 new VectorDouble(new double[]{1,2,3}) |
VectorVectorDouble | 二维数组 |
VectorInt | 整数数组 |
异步回调
C# 回调接口通过委托/事件注册,与 C++ 回调语义一致:
csharp
// 注册消息接收回调(对应 C++ recv_message)
nrc_interface.recv_message(fd, (messageID, msg) =>
{
Console.WriteLine($"收到消息 ID={messageID}: {msg}");
});回调在 SDK 内部线程触发,回调内不应执行阻塞或耗时操作(与 C++ 一致)。
错误处理
- 返回值语义与 C++ 一致:
SUCCESS(0)表示成功,负数表示通信/执行错误 - 异步接口返回值仅表示"指令已接收",实际结果通过回调或状态查询获取
- 伺服报警后需调用
clear_error清错,清错后重新下电再上电
线程安全
- 不同 socketFd 之间线程安全
- 同一 socketFd 的并发调用需自行加锁(C# 可使用
lock语句) - 回调函数内不应执行阻塞或耗时操作
C++ 文档对照
C# SDK 与 C++ 接口同名同参,以下 C++ 文档可直接作为参考: