Skip to content

核心概念

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 提供的容器类替代原生数组:

容器用法
VectorDoublenew 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++ 文档可直接作为参考: