1

看起来Zaber 设备的串行协议实现起来非常简单,但是有没有可用的 C++ 示例代码?

4

2 回答 2

1

小心使用 Zaber 协议的陷阱:如果微控制器与 Zaber 电机失去同步,它可能会卡住读取一个数据包的后半部分和下一个数据包的前半部分(您应该使用计时器来检测数据包间计时重置协议状态机的间隙)

于 2015-02-19T18:07:21.437 回答
0

如果您正在编写托管 C++,则可以像在 C# 或 Visual Basic 项目中一样使用我们的 .NET 库 DLL。您可以通过Zaber 控制台源代码找到更多信息。这些示例都在 C# 或 Visual Basic 中,但您可以在托管 C++ 中执行相同的操作。

如果您不编写托管 C++,则必须直接写入串行端口。我们有一些示例 C 代码将向您展示如何将命令转换为字节流。此代码段准备六个字节以写入串行端口。

txBuffer[0] = deviceNum;
txBuffer[1] = command;
// Position 2 is LSB; Position 5 is MSB
txBuffer[2] = ( data        & 0x000000FF);
txBuffer[3] = ((data >>  8) & 0x000000FF);
txBuffer[4] = ((data >> 16) & 0x000000FF);
txBuffer[5] = ((data >> 24) & 0x000000FF);

此代码段处理从串行端口接收到的六个字节。

deviceNum = rxBuffer[0];
command = rxBuffer[1];
// Position 2 is LSB; Position 5 is MSB
data = ( rxBuffer[2]        & 0x000000FF)
     + ((rxBuffer[3] <<  8) & 0x0000FF00)
     + ((rxBuffer[4] << 16) & 0x00FF0000)
     + ((rxBuffer[5] << 24) & 0xFF000000);

您连接到串行端口的方式可能与我们的示例不同,但 C++ 编译器文档应该能够帮助您。下载示例代码以查看更多详细信息,例如在协议不同步时重置协议的计时器。

有关串行通信协议的更多说明,请参见用户手册

您也可以使用 C++ 编写Zaber 控制台脚本,尽管我们尚未创建 C++ 脚本模板。

于 2012-05-16T17:15:09.123 回答