在'中删除Arduino代码。声明

时间:2013-06-30 06:53:42

标签: arduino

我正在尝试使用sketch Arduino Uno为我的Ethernet构建shield。我正在使用Arduino simulator来调试我的代码。这是我在loop()函数中遇到问题的地方:

void loop() {
    while (!ConnectServer());
    while (client.connected()) {
        int i = 0;
        char c = 'o';
        while (client.available()) {
            c = client.read();
            if(c == ';')break;
            commandBuff[i++] = c;
        }
        commandBuff[i] = '\0';          //Skip this line
        ParseCommand(commandBuff);      //And this line
    }
    if (!client.connected()) {
        client.stop();
    }
}

问题是,当它从输入中获得;时。它不仅突破了内部循环,而且还跳过了内部while循环之外的两个代码行。然后回到外部while循环的条件语句....

我不认为这与ConnectServer()有什么关系,但我仍然在为它粘贴代码:

bool ConnectServer() {
    char response;
    if (client.connect(server, 80)) {
        client.println("EHLO");
        response = client.read();
        if (response == 'e') {
            return true;
        }
    } 
    else {
         return false;
    }
}

如何解决问题?

1 个答案:

答案 0 :(得分:1)

  

关于这个问题的任何想法?

您的代码看起来很干净,如果您不相信它,您仍然可以复制您在C中编写的可以在计算机上编译和调试的内容,方法是创建一些模拟{{1的行为的模拟类},client等。(这是Arduino模拟器当然会做的事情)。

我发现的大多数Arduino模拟器都不是真正的模拟器(不像Serial甚至qemu用于实际操作系统),它们只是解析代码并硬编码一些Arduino库的功能。这就是为什么他们经常不支持高级的东西,甚至不支持完整的C语言甚至最差(看起来像你的情况)引入错误。

因此,正如我所说,你应该更好地使用真正的Arduino,并使用调试打印输出语句或使用AVR调试器来调试代码。