如何将负数发送到 SerialDevice DataWriter 对象
How to send negative number to SerialDevice DataWriter Object
我无法弄清楚如何通过 C# UWP SerialDevice DataWriter 对象发送负数
我正在使用 Windows 10 IOT Core 和 Raspberry PI 2 B。我正在尝试使用打包串行 https://www.dimensionengineering.com/datasheets/Sabertooth2x25.pdf 来控制 Sabertooth 2x25 电机驱动器。该文档将通信描述为:
Sabertooth 的数据包格式包括一个地址字节、一个命令字节、一个数据字节
和一个七位校验和。地址字节的值大于 128,所有后续字节
值为 127 或更低。这允许多种类型的设备共享同一条串行线。
还有一个例子:
数据包
地址:130
命令:0
数据:64
校验和:66
数据字节可以是 -127 到 127。描述表明数据字节是一个字节,但是当我尝试在 C# 中将负数转换为字节时,由于符号位(我思考)。
手册中提供的伪代码
Void DriveForward(char address, char speed)
{
Putc(address);
Putc(0);
Putc(speed);
Putc((address + 0 + speed) & 0b01111111);
}
考虑到负数,将数据写入 SerialDevice 的 DataWriter 对象的最佳方法是什么。我也愿意使用 DataWriter 以外的其他方法来完成任务。
我问了一个愚蠢的问题。根据一些制造商的示例代码,我得到了 -127 到 127,用于他们的驱动程序(我不能使用,因为它不兼容 UWP)。我刚刚意识到他们的驱动程序可能正在做的是,如果您调用他们的驱动程序功能之一 Drive(address, speed) 它使用负数的反向命令(删除符号并以该速度反向)和正向命令数字。 –
我无法弄清楚如何通过 C# UWP SerialDevice DataWriter 对象发送负数
我正在使用 Windows 10 IOT Core 和 Raspberry PI 2 B。我正在尝试使用打包串行 https://www.dimensionengineering.com/datasheets/Sabertooth2x25.pdf 来控制 Sabertooth 2x25 电机驱动器。该文档将通信描述为: Sabertooth 的数据包格式包括一个地址字节、一个命令字节、一个数据字节 和一个七位校验和。地址字节的值大于 128,所有后续字节 值为 127 或更低。这允许多种类型的设备共享同一条串行线。 还有一个例子:
数据包
地址:130
命令:0
数据:64
校验和:66
数据字节可以是 -127 到 127。描述表明数据字节是一个字节,但是当我尝试在 C# 中将负数转换为字节时,由于符号位(我思考)。
手册中提供的伪代码
Void DriveForward(char address, char speed)
{
Putc(address);
Putc(0);
Putc(speed);
Putc((address + 0 + speed) & 0b01111111);
}
考虑到负数,将数据写入 SerialDevice 的 DataWriter 对象的最佳方法是什么。我也愿意使用 DataWriter 以外的其他方法来完成任务。
我问了一个愚蠢的问题。根据一些制造商的示例代码,我得到了 -127 到 127,用于他们的驱动程序(我不能使用,因为它不兼容 UWP)。我刚刚意识到他们的驱动程序可能正在做的是,如果您调用他们的驱动程序功能之一 Drive(address, speed) 它使用负数的反向命令(删除符号并以该速度反向)和正向命令数字。 –