极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10378|回复: 0

下面两段程序有什么不同,第一个可以使用第二个不行

[复制链接]
发表于 2014-4-3 14:21:00 | 显示全部楼层 |阅读模式
在使用YEELINK网站提供的SDK库,编写的程序一直不能正确运行.把程序缩小到获得一条(也就是第一个程序)数据运行正常.请熟悉YEELINK的同学帮忙看一下.

void loop()  //第一个
{
   
        /*读本地传感器的值 */

  tianran=analogRead(THERM_PIN);
  huoyan=digitalRead(THERM2_PIN);
  hongwai=analogRead(THERM1_PIN);
  mengkaiguan=digitalRead(THERM3_PIN);
/***************
  Serial.println("tianran zhi shi:");Serial.println(tianran);
  Serial.println("huoyan zhi shi:");Serial.println(huoyan);
  Serial.println("hongwai zhi shi:");Serial.println(hongwai);
  Serial.println("mengkaiguan zhi shi:");Serial.println(mengkaiguan);
***************/
  //本地分析有无报警内容?依据本地设置域值
  if (tianran>500&&millis()>360000)         //这个数值比较可行,经过了测试,需要热车6分钟后开始检测
  {
   tone(THERM5_PIN,2000,2000);
   Serial.println("tian ran qi xielou!!!");Serial.println(tianran);
   i=5;
  }
  if(huoyan==0)
  { tone(THERM5_PIN,3000,2000);
   Serial.println("you huo qing!!");
   i=6;
  }
  if(hongwai>500&&fangdao==1)  
  {
   Serial.println("you ren zaijia!!!");
   hongwaijl=hongwai;   //记录这个值,免得下次变掉。
   i=7;
  }
  if(mengkaiguan==0)   //门开过,用menkaiguanjl记录,直到上传后归原
  {
   mengkaiguanjl=0;
   if (meng==1)  //夜间开门模式打开时
   {
    tone(THERM5_PIN,4000,2000);
   }
   Serial.println("mengkai!!");
   i=8;
  }

      //以下是读厨房继电器状态
      yl_value_data_point getdp;
    if(therm4.single_get(messenger, getdp))
     {
      chufangkg=getdp.get_value();
      Serial.println("chufangkg de zhi shi:");
      Serial.println(chufangkg);
      if (chufangkg==1)
            {
             digitalWrite(THERM4_PIN,HIGH);
            }
            else
             {
              digitalWrite(THERM4_PIN,LOW);
             }
      
     }
    else
    {
      
     Serial.println("chufangkg get shibai!");
    }
      delay(11000);
      
}


void loop()   //第二个
{
   
        /*读本地传感器的值 */

  tianran=analogRead(THERM_PIN);
  huoyan=digitalRead(THERM2_PIN);
  hongwai=analogRead(THERM1_PIN);
  mengkaiguan=digitalRead(THERM3_PIN);
/***************
  Serial.println("tianran zhi shi:");Serial.println(tianran);
  Serial.println("huoyan zhi shi:");Serial.println(huoyan);
  Serial.println("hongwai zhi shi:");Serial.println(hongwai);
  Serial.println("mengkaiguan zhi shi:");Serial.println(mengkaiguan);
***************/
  //本地分析有无报警内容?依据本地设置域值
  if (tianran>500&&millis()>360000)         //这个数值比较可行,经过了测试,需要热车6分钟后开始检测
  {
   tone(THERM5_PIN,2000,2000);
   Serial.println("tian ran qi xielou!!!");Serial.println(tianran);
   i=5;
  }
  if(huoyan==0)
  { tone(THERM5_PIN,3000,2000);
   Serial.println("you huo qing!!");
   i=6;
  }
  if(hongwai>500&&fangdao==1)  
  {
   Serial.println("you ren zaijia!!!");
   hongwaijl=hongwai;   //记录这个值,免得下次变掉。
   i=7;
  }
  if(mengkaiguan==0)   //门开过,用menkaiguanjl记录,直到上传后归原
  {
   mengkaiguanjl=0;
   if (meng==1)  //夜间开门模式打开时
   {
    tone(THERM5_PIN,4000,2000);
   }
   Serial.println("mengkai!!");
   i=8;
  }

  if (abs(millis()-lasttime)>timejiange*1000)
  {  
   
   //和网站数传部分,目前设计是间隔20或40秒下传或上传一次。设高频切换开关。
   switch (i)
        {
           //下传部分开始
           case 1:
           {
            //以下是读厨房继电器状态
         yl_value_data_point getdp;
    if(therm4.single_get(messenger, getdp))
     {
      chufangkg=getdp.get_value();
      Serial.println("chufangkg de zhi shi:");
      Serial.println(chufangkg);
      if (chufangkg==1)
            {
             digitalWrite(THERM4_PIN,HIGH);
            }
            else
             {
              digitalWrite(THERM4_PIN,LOW);
             }
      
     }
    else
    {
      
     Serial.println("chufangkg get shibai!");
    }
         
         break;
           }
           
           case 2:
           {
             //以下是读频度开关
         yl_value_data_point getdp2;
         if(therm5.single_get(messenger, getdp2))
          {
           if (getdp2.get_value()==0)
            {timejiange=40;}
        else
         {timejiange=20;}
        Serial.println("timejiange get ok!zhi shi:  (s)");
        Serial.println(timejiange);
        
         }
         else
    {
      
     Serial.println("timejiange get shibai!");
    }
    break;
           }
           case 3:
           {
             //以下是读防盗开关
    yl_value_data_point getdp3;    //经验是这些数据 点对象不能重名
         if(therm6.single_get(messenger, getdp3))
         {
          fangdao=getdp3.get_value();
        Serial.println("fangdao get ok!zhishi:");
        Serial.println(fangdao);
        
         }
         else
    {
      
     Serial.println("fangdao get shibai!");
    }
    break;
           }
           case 4:
           {
            //以下是夜间看门
    yl_value_data_point getdp4;
       if(therm7.single_get(messenger, getdp4))
       {
        meng=getdp4.get_value();
        Serial.println("meng get ok!zhi shi:");
        Serial.println(meng);
        
       }
       else
    {
      
     Serial.println("meng get shibai!!");
     }
     break;
           }

            //下面是上传部分
           case 5:
           {
             //天然气值上传
   
          yl_value_data_point dp(tianran);    //生成一个数值型或开关型 的数据点dp,这个数据点是符合YEELINK网站要求的格式集
          if(therm.single_post(messenger, dp)) // 调用single_post函数上传数据点dp
          {
           Serial.println("tianran qi post ok!zhi shi:");
           Serial.println(tianran);
           
          }
          else
     {
      
      Serial.println("tianran post shibai!!");
      }
      break;
           }
           case 6:  //火焰数值上传
           {
             yl_value_data_point dp2(huoyan);    //生成一个数值型或开关型 的数据点dp,这个数据点是符合YEELINK网站要求的格式集
          if(therm2.single_post(messenger, dp2))// 调用single_post函数上传数据点dp
          {
     Serial.println("huoyan post ok!zhi shi:");
           Serial.println(huoyan);
           
          }
          else
     {
      
      Serial.println("huoyan post shibai!!");
      }
      break;
           }
           case 7:
           {
             //轮到红外值上传
         
          yl_value_data_point dp3(hongwaijl);    //生成一个数值型或开关型 的数据点dp,这个数据点是符合YEELINK网站要求的格式集
          if(therm1.single_post(messenger, dp3)) // 调用single_post函数上传数据点dp
          {
           Serial.println("hongwai post ok!zhishi:");
           Serial.println(hongwaijl);
           hongwaijl=0;
           
          }
          else
     {
      
      Serial.println("hongwai post shibai!!");
      }
      break;
           }
           case 8:
           {
          //轮到门开关记录上传
        
          yl_value_data_point dp4(mengkaiguanjl);    //生成一个数值型或开关型 的数据点dp,这个数据点是符合YEELINK网站要求的格式集
          if(therm3.single_post(messenger, dp4)) // 调用single_post函数上传数据点dp
          {
           Serial.println("meng kaiguan post ok!");
           Serial.println(mengkaiguanjl);
           mengkaiguanjl=1;  //归原用于记录的数据
           
          }
          else
     {
      
      Serial.println("mengkaiguanjl post shibai!!");
      }
      break;
      }

      lasttime=millis();
     //下面是一个轮换传输计数器
         if(i==8)
          i=1;   
      else
        i++;
         }
           //传输部分结束
     }
}


回复

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-15 01:54 , Processed in 0.038852 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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