C# 通过C向arduino发送int#

C# 通过C向arduino发送int#,c#,arduino,byte,ascii,C#,Arduino,Byte,Ascii,因此,我试图通过C#程序向arduino发送一个int。我有C#program和arduino的对话。我可以发送单个ASCII字节,让arduino做出反应;但是,当我尝试发送一个更大的值(比如35)时,我可以想出如何让arduino从串行端口获取信息,将其转换为int,以便以后可以将该值用于一些数学函数。有什么提示/代码吗?谢谢大家!:) 这取决于所需的协议。您想要一种紧凑的数据格式,还是更想要一种人类可读写的格式 如果您选择紧凑的数据结构,您应该研究序列化的概念。如果您喜欢易于阅读和手写的格

因此,我试图通过C#程序向arduino发送一个int。我有C#program和arduino的对话。我可以发送单个ASCII字节,让arduino做出反应;但是,当我尝试发送一个更大的值(比如35)时,我可以想出如何让arduino从串行端口获取信息,将其转换为int,以便以后可以将该值用于一些数学函数。有什么提示/代码吗?谢谢大家!:)

这取决于所需的协议。您想要一种紧凑的数据格式,还是更想要一种人类可读写的格式

如果您选择紧凑的数据结构,您应该研究序列化的概念。如果您喜欢易于阅读和手写的格式,则必须自行实现某种协议。 首先,我想我会建议晚一点

从可以将字符流打包成字符串的东西开始,然后将其提供给
atoi
函数


对不起,这里不是预煮的解决方案。

这取决于所需的协议。您想要一种紧凑的数据格式,还是更想要一种人类可读写的格式

如果您选择紧凑的数据结构,您应该研究序列化的概念。如果您喜欢易于阅读和手写的格式,则必须自行实现某种协议。 首先,我想我会建议晚一点

从可以将字符流打包成字符串的东西开始,然后将其提供给
atoi
函数


很抱歉,这里不是预先准备好的解决方案。

这里有点像伪代码,因为您声明micro的通信良好。关于arduino:

    char buffer[5]; // or 6 or 7 or... To store numerical chars
你需要一种方法让arduino知道一个数字即将到来。 假设您的号码包装在一个“包”中,如下所示:

    [I123]
括号表示数据包的开始和结束,I表示一个整数是数据有效负载。因此,在Serial.Read()函数中,您必须测试数据包的开头([),然后测试表示整数(I)的下一个字符,然后剩余的字符应保存在缓冲区中,直到但不包括(])。然后获取value=atoi(缓冲区)的值


这是一种伪代码,因为您声明micro的通信良好。关于arduino:

    char buffer[5]; // or 6 or 7 or... To store numerical chars
你需要一种方法让arduino知道一个数字即将到来。 假设您的号码包装在一个“包”中,如下所示:

    [I123]
括号表示数据包的开始和结束,I表示一个整数是数据有效负载。因此,在Serial.Read()函数中,您必须测试数据包的开头([),然后测试表示整数(I)的下一个字符,然后剩余的字符应保存在缓冲区中,直到但不包括(])。然后获取value=atoi(缓冲区)的值

您可能希望将或作为或使用有限状态机。

您可能希望将或作为或使用有限状态机。

我已经回答了这个问题。你可以用“atoi”。c#的代码非常简单。在我的答案/链接中,您可以找到Arduino的代码。 基本上,这是一个协议。

我已经回答了这个问题。你可以用“atoi”。c#的代码非常简单。在我的答案/链接中,您可以找到Arduino的代码。
基本上,这是一个协议。

另一方面,我对c#很在行。不。哈哈。介意在你的答案中再加上一点代码吗:)似乎是我需要的,我只是不能真正拼凑数据包测试。你是在说if语句还是。?显示您在arduino中读取传入数据的代码,我们可以对此进行扩展…我只需使用Serial.read()读取传入数据,然后使用if语句测试传入的字节。如果匹配-比如97(a)-我打开led。没什么特别的,只是让我知道它在工作。实际代码现在就在我的buddies笔记本电脑上:/Try my edited code,compiled但未经测试。如果存在逻辑错误,您将享受到调试的乐趣:)工作时稍微更改了它,但使用了以下概念:)另一方面,我很擅长c。不。哈哈。介意在你的答案中再加上一点代码吗:)似乎是我需要的,我只是不能真正拼凑数据包测试。你是在说if语句还是。?显示您在arduino中读取传入数据的代码,我们可以对此进行扩展…我只需使用Serial.read()读取传入数据,然后使用if语句测试传入的字节。如果匹配-比如97(a)-我打开led。没什么特别的,只是让我知道它在工作。实际代码现在就在我的buddies笔记本电脑上:/Try my edited code,compiled但未经测试。如果存在逻辑错误,您将享受到调试的乐趣:)工作时对其进行了一些更改,但使用了以下概念:)