如何从Visual Studio C#将整数值发送到arduino

本文关键字:arduino 整数 Visual Studio | 更新日期: 2023-09-27 18:35:45

我研究一个关于用Visual Studio C#控制机器人的项目。我想控制一个步进电机连接 arduino 与轨道位置。但我不会通过串行端口将曲目值作为整数发送到 arduino。我可以发送字符或字符串值。我想将每个轨道值发送到 arduino 以控制步进电机。

如何从Visual Studio C#将整数值发送到arduino

在 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 位,所以这里需要长类型。

或者你可以 typedef 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