我研究了一个关于使用visual studio C#控制机器人的项目。我想控制一个步进电机连接arduino与轨道位置。但我不会通过串口将跟踪值作为整数发送到arduino。我可以发送字符或字符串值。我想将每个音轨值发送到arduino以控制步进电机。
答案 0 :(得分:1)
在C#方面,您可以使用以下内容:
Byte[] bytes = BitConverter.GetBytes(1234); //1234-sample 32 bit int
注意字节序,在这个例子中,字节[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位,所以你需要长类型。
或者你可以输入dede 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