我有一些插入我的巨型传感器。它们可通过Serial和Serial2等访问。
我的电路板每X分钟读取一次传感器,然后向我的服务器提交POST请求。 delay(X * 60 * 1000)
用于轮询等待期。
这就是我的getPH()方法:
void getPH() {
//<1>
char inchar;
while (Serial3.available()) {
inchar = (char)Serial3.read();
if (inchar != '\r') {
phSensorString += inchar;
}
}
//<2>
}
现在从表演的角度来看,我建议在&lt; 1&gt;处插入Serial3.begin()
。和Serial3.end()
at&lt; 2&gt;我在其他人的代码中看到了这种模式。我的董事会会有什么影响呢?
答案 0 :(得分:1)
调用end()的唯一原因是你有一些方法可以将这些IO引脚用于其他任务。因此,如果在getPH()函数之外,您可以将这两个IO引脚用于其他目的,那么您显示的模式是有意义的。否则,一次又一次地“一次又一次”地“分配”和“解除分配”串口是没有意义的......
虽然模式会起作用,但我建议在该模式中使用begin()和end()主要是有害的:
串行的好模式是在设置中调用begin()一次,从不调用end()。
对于桌面环境,人们了解到分配和释放资源是一种良好的行为。部分原因是因为它允许与系统上的其他进程共享。 对于嵌入式系统,没有其他进程可以共享 - 您的程序就是一切。一个强大的模式与桌面相对:分配你将在启动时使用的所有内容。