我研究了一个关于使用 Visual Studio C# 控制机器人的项目。我想控制一个步进电机连接的 arduino 与 Track 位置。但我不会通过串行端口将轨道值作为整数发送到 arduino。我可以发送字符或字符串值。我想将每个轨道值发送到 arduino 以控制步进电机。
问问题
1531 次
1 回答
1
在 C# 方面,您可以使用如下内容:
Byte[] bytes = BitConverter.GetBytes(1234); //1234-sample 32 bit int
注意字节顺序,在这个例子中,bytes[0] 中的字节是最低有效字节,所以最好从末尾开始发送这个数组。
在 Arduino 方面,您可以逐字节获取此数组,并通过左移将其组装回 int,例如:
tmp_long|=getbyte(); //got first byte of int
tmp_long<<=8;
tmp_long|=getbyte(); //got second byte of int
tmp_long<<=8;
tmp_long|=getbyte(); //
tmp_long<<=8;
tmp_long|=getbyte(); //
//请记住,int 在 C# 中是 32 位,在 Arduino Uno 中是 16 位,所以这里需要长类型。
或者你可以键入def union,并逐字节填充它,如下所示:
typedef union _WORD_VAL
{
unsigned long Val;
unsigned char v[4];
} WORD_VAL;
WORD_VAL myData;
myData.v[0]=getbyte(); //got first byte of int
myData.v[1]=getbyte();
myData.v[2]=getbyte();
myData.v[3]=getbyte();
unsigned long data=myData.Val; //got assembled in back
于 2013-10-17T04:15:25.340 回答