2

我最近买了一个带 LCD 屏幕的 Arduino。我想将信息从我的计算机推送到 Arduino。我看到了一篇很棒的文章,如何制作物理 Gmail 通知器。据我了解,我必须使用串行发送信息并在 Arduino 上的 C/C++ 代码中读取它。这很好,但我想向设备发送不同的信息。

假设我想让 LCD 屏幕的一部分显示外面的温度,而另一部分屏幕显示下一辆公共汽车来时的温度。有什么方法可以“标记”我使用 Serial 发送的信息,还是所有内容最终都在同一个“频道”中?

如果是这种情况,是否有一种合乎逻辑、简单的方法来分离这些信息,这样它就不会将总线信息误认为是温度,反之亦然?

4

2 回答 2

2

您需要一个用于通过串行线路发送信息的协议,以便可以以有意义的方式在另一端收集数据。一个简单的协议可能是:

 T:16.0 09.34      // Temperature, 16.0°C measured at 09.34
 B:11b 11.46       // Bus, route 11b, arrives at 11.46 at your bus-stop. 
 M:mats@example.com 11kb 10.23    // Mail from mats@example.com, it's 11KB and arrived at 10.23

每行包含一种类型的信息。

假设通信线路是可靠的(只要你的电线不是几十英尺,它应该是),你不需要更多。如果通信不可靠,则需要某种“开始”和“结束”标记(或开始和长度)、校验和以及某种处理“出错”的方法。您还需要超时读取,以便当您没有获得足够的数据时,系统会使用下一点信息重新开始。

于 2013-04-30T22:20:29.337 回答
1

有什么方法可以“标记”我用 Serial 发送的信息

确实。如果您可以控制通过计算机串行端口传递的信息,您可以决定如何发送信息。

还是一切都在同一个“渠道”中结束?

好吧,我猜串行端口是一种通道,因为您希望发送到 Arduino 的所有信息都通过该端口。

是否有一种合乎逻辑、简单的方法来分离这些信息,这样它就不会将总线信息误认为温度,反之亦然。

是的。假设您要发送温度数据。例如以这种方式创建一个字节数组: {T23.4} = 温度数据

括号“{”向 arduino 中的接收代码发出信号,表明信息正在与一些数据一起出现。字母 T 表示温度。从字母“T”到“}”的所有内容都是数据。(23.4)

总线信息可以是 {Bxxx},其中 xxx 是数据。

于 2013-04-30T22:21:21.170 回答