板子无法执行setup函数-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4382|回复: 6

板子无法执行setup函数

[复制链接]
发表于 2013-2-28 20:43 | 显示全部楼层 |阅读模式
新人遇到个问题: 在IDE里面写程序时,有时候函数稍微多点,板子无法执行setup函数,另外即使能正常初始化,String变量里面的内容也好像变得少了。(板子是好的,去掉某些函数,就全部正常了)
请问
1.是不是有可以调试的插件什么的,有好用的吗?
2.如果写了个函数,没有其他函数调用,这样的程序下载到板子上,板子运行时,和不写这个函数下载有什么区别吗?
发表于 2013-2-28 20:56 | 显示全部楼层
首先,只要你成功下载了程序,肯定会先运行setup函数,再运行loop函数。没有看到运行效果,可能是你程序编写的问题。写了函数没调用,实际效果和没写一样
 楼主| 发表于 2013-2-28 21:06 | 显示全部楼层
coloz 发表于 2013-2-28 20:56
首先,只要你成功下载了程序,肯定会先运行setup函数,再运行loop函数。没有看到运行效果,可能是你程序编 ...

可是我把那个函数删了 就能运行setup和loop了,加上就什么都不行,而那个函数谁也没调用啊 。反正很奇怪。。
发表于 2013-2-28 21:36 | 显示全部楼层
Cube 发表于 2013-2-28 21:06
可是我把那个函数删了 就能运行setup和loop了,加上就什么都不行,而那个函数谁也没调用啊 。反正很奇怪 ...

代码贴出来看看
 楼主| 发表于 2013-2-28 21:49 | 显示全部楼层
今天出差,手头没有,回去发你
发表于 2013-3-1 10:06 | 显示全部楼层
我也想看看这个代码  
 楼主| 发表于 2013-3-2 22:11 | 显示全部楼层
本帖最后由 Cube 于 2013-3-2 22:15 编辑


#include <SPI.h>
#include <Ethernet.h>
#include <Wire.h>
#include <math.h>

byte mac[] = {
  0x00, 0x1D, 0x72, 0x82, 0x35, 0x9D};
byte ip[]={
  192,168,1,10};
byte gateway[]={
  192,168,1,1};
byte subnet[]={
  255,255,255,0};
EthernetClient client;
char server[] = "www.XXX.com";
String returnValue = "";
void setup() {
  Wire.begin();
  Serial.begin(9600);
  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
  }
  else {
    Ethernet.begin(mac, ip) ;
    Serial.println("Ethernet configuration OK");
  }


}
void getReturn(){
  //  len= client.available();
  //  Serial.println(len);
  while(client.available()) {
    char c = client.read();
    returnValue += c;
    delay(1);
  }
}

void request(){
  if (client.connect(server,80)) {   
    //XXXXXXX
  }else{
    //XXXXX
  }
}
void loop() {

  request();
  delay(500);  
  getReturn();
  delay(3000);  
}

void parseData(void) {
  //XXXXX
}


void post1() {
  if (client.connect(server,80)) {
    //XXXXXXXXXXXXXXX
  }
  else{
    //XXXXX
  }
}

void ignore(void){
  while(client.available()) {
    char c = client.read();
  }
}

void post2( ) {
  if (client.connect(server,80)) {
    //XXXXXXXXXXXXXXXXXXXX
  }
  else{
    //XXXXX
  }
}

代码的功能很简单,就是获取服务器上的开关信息,然后控制本地的开关。
问题就在于最后这两个方法,ignore和post2。不加这两个方法,returnValue 里面的数据是完整的,加上以后数据就不完整了,有时候连setup函数都不执行。




您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-27 23:08 , Processed in 0.074467 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表