我正在尝试编写一个函数,它将来自不同来源(以太网客户端/串行/等)的文本提取到一行中,然后比较它们并基于它们运行其他函数。简单的..
虽然这可行,但我在尝试从函数 OTHER 而非 loop() 调用简单的 Serial.println() 时遇到问题。
到目前为止,我有大约 140 行代码,但这是导致我出现问题的部分的精简版本:
boolean fileTerm;
setup() {
fileTerm = false;
}
loop() {
char character;
String content="";
while (Serial.available()) {
character = Serial.read();
content.concat(character);
delay(1);
}
if (content != "") {
Serial.println("> " + content);
/** Error from Serial command string.
* 0 = No error
* 1 = Invalid command
*/
int err = testInput(content);
}
int testInput(String content) {
if (content == "term") {
fileTerm = true;
Serial.println("Starting Terminal Mode");
return 0;
}
if (content == "exit" && fileTerm == true) {
fileTerm = false;
Serial.println("Exiting Terminal Mode");
return 0;
}
return 1;
}
(完整来源http://pastebin.com/prEuBaRJ)
所以关键是抓住“term”命令并进入某种文件系统终端模式(最终访问和操作 SD 卡上的文件)。“exit”命令将离开终端模式。
但是,每当我实际编译这些命令并将其与其他人一起输入到串行监视器中时,我都会看到:
> hello
> term
> test for index.html
> exit
> test
> foo
> etc...
我认为该功能正在捕获这些保留条款并实际处理它们,但无论出于何种原因,都没有通过串行总线发送所需的响应。
只是为了语法正确,我还在单独的标头中声明了 testInput() 函数,尽管我怀疑这与是否会发生此特定错误有任何关系。
这有什么可解释的原因吗?
谢谢。
型号:Arduino Uno R3,IDE 版本:1.0.4,虽然这种行为在某些情况下也发生在 v1.0.5 上。