跳过'中的Arduino代码;而';陈述
我正试图为我的朋友建立一个。我正在使用调试我的代码。下面是我在跳过'中的Arduino代码;而';陈述,arduino,Arduino,我正试图为我的朋友建立一个。我正在使用调试我的代码。下面是我在loop()函数中遇到问题的地方: void loop() { while (!ConnectServer()); while (client.connected()) { int i = 0; char c = 'o'; while (client.available()) { c = client.read(); if(
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;
}
}
我如何解决这个问题
你知道这个问题吗
您的代码看起来很干净,如果您不确信它是干净的,您仍然可以复制您用C编写的代码,通过创建一些模拟客户端
,串行
等行为的模型类,您可以在计算机上编译和调试这些代码。。(这是Arduino模拟器肯定会做的事情)
我发现的大多数Arduino模拟器都不是真正的模拟器(不像真正的操作系统的qemu
甚至vmware
),它们只是解析代码并硬编码Arduino库的一些功能。这就是为什么他们通常不支持高级的东西,或者甚至不支持完整的C语言,甚至最糟糕的(看起来是你的情况)也会引入bug
因此,正如我所评论的,您最好使用真正的Arduino,并使用debug printout语句或AVR调试器来调试代码
你知道这个问题吗
您的代码看起来很干净,如果您不确信它是干净的,您仍然可以复制您用C编写的代码,通过创建一些模拟客户端
,串行
等行为的模型类,您可以在计算机上编译和调试这些代码。。(这是Arduino模拟器肯定会做的事情)
我发现的大多数Arduino模拟器都不是真正的模拟器(不像真正的操作系统的qemu
甚至vmware
),它们只是解析代码并硬编码Arduino库的一些功能。这就是为什么他们通常不支持高级的东西,或者甚至不支持完整的C语言,甚至最糟糕的(看起来是你的情况)也会引入bug
因此,正如我所评论的,您最好使用真正的Arduino,并使用debug printout语句或AVR调试器来调试代码。是什么让您认为这两行代码被跳过了?我只是单步执行代码。这很奇怪。您是否尝试过代码的干净构建(即从头开始)?干净构建?我使用的是模拟器而不是设备…问题似乎是模拟器?是什么让你认为这两行代码被跳过了?我是单步执行代码的。这很奇怪。您是否尝试过代码的干净构建(即从头开始)?干净构建?我使用的是模拟器而不是设备…问题似乎是模拟器?