如何将负数发送到SerialDevice DataWriter对象

时间:2019-08-21 00:43:49

标签: c# uwp uart windows-iot-core-10 datawriter

我无法弄清楚如何通过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以外的其他方法来完成任务。

1 个答案:

答案 0 :(得分:0)

我问了一个愚蠢的问题。根据一些制造商提供的与驱动程序一起使用的示例代码,我得到了-127到127(我不能使用,因为它不兼容UWP)。我刚刚意识到他们的驱动程序可能在做什么,如果您调用其驱动程序功能之一Drive(address,speed),它将对负数使用反向命令(删除符号并以该速度反向运行),对正数使用正向命令数字。 –