【问题标题】:Separate information sent via Serial通过串行发送的单独信息
【发布时间】:2013-04-30 21:57:33
【问题描述】:

我最近买了一个带 LCD 屏幕的 Arduino。我想将信息从我的计算机推送到 Arduino。我发现了一篇很棒的文章,How to make a physical Gmail notifier。据我了解,我必须使用串行发送信息并在 Arduino 上的 C/C++ 代码中读取它。没关系,但我想向设备发送不同的信息。

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

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

【问题讨论】:

  • 你必须发明一个communications protocol 来处理不同的事件。它实际上并不像看起来那么难。

标签: java c++ python serial-port arduino


【解决方案1】:

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

 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

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

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

【讨论】:

  • 感谢您的出色回答!从表面上看,Arduino 实际上有这个默认的分离串行通信的精确解决方案。太棒了,非常感谢。
【解决方案2】:

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

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

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

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2011-06-04
    • 1970-01-01
    • 1970-01-01
    • 2015-04-12
    • 1970-01-01
    • 2017-01-07
    • 2017-10-31
    • 2013-09-27
    • 1970-01-01
    相关资源
    最近更新 更多