我最近买了一台带液晶屏的Arduino。我想将信息从我的电脑推送到Arduino。我发现了一篇很棒的文章, How to make a physical Gmail notifier 。根据我的理解,我必须使用Serial发送信息并在Arduino上的C / C ++代码中读取它。这很好,但我想向设备发送不同的信息。
假设我希望LCD屏幕的一部分显示外部温度,而下一部分总线即将显示屏幕的另一部分。有没有办法“标记”我使用Serial发送的信息,或者所有内容最终都在同一个“频道”中?
如果是这种情况,是否有一种逻辑,简单的方法来分离这些信息,因此它不会将总线信息误认为温度,反之亦然?
答案 0 :(得分: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
每行包含一种信息。
假设通信线路可靠(并且只要您的线路不是几十英尺,它应该是),您不需要更多。如果通信不可靠,你需要某种“开始”和“结束”标记(或开始和长度),校验和以及某种处理“它出错”的方法。您还需要使用超时读取,这样当您没有获得足够的数据时,系统将重新开始使用下一位信息。
答案 1 :(得分:1)
有没有办法“标记”我用Serial
发送的信息
当然。如果您可以控制通过计算机上串行端口传递的信息,则决定如何发送信息。
还是一切都在同一个“频道”中?
嗯,串口是我猜的一种通道,因为您希望发送给Arduino的所有信息都通过端口传输。
是否有一种逻辑,简单的方法来分离这些信息,因此它不会将总线信息误认为温度,反之亦然。
是。假设您要发送温度数据。例如,以这种方式创建一个字节数组:{T23.4} =温度数据
括号“{”向arduino中的接收代码发出信号,表明信息正在下载一些数据。字母T表示温度。字母“T”到“}”之后的所有内容都是数据。 (23.4)
总线信息可以是{Bxxx},其中xxx是数据。