极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11204|回复: 7

if(comdata[0]=='+'&&comdata[5]=='0'&&comdata[9]=='K')

[复制链接]
发表于 2015-3-12 15:21:07 | 显示全部楼层 |阅读模式
本帖最后由 マイナス37度 于 2015-11-8 21:16 编辑

发+0K没反应,求助,该怎么改啊

不是真的发+0k,是+????0???k










  1. String comdata = "";

  2. void setup()
  3. {
  4.   Serial.begin(9600);//设置串行通信的波特率
  5.   pinMode(12,OUTPUT);
  6.   pinMode(13,OUTPUT);
  7.   digitalWrite(12,HIGH);
  8.   digitalWrite(13,LOW);
  9. }

  10. void loop()
  11. {
  12.   Serial.flush();
  13.   while (Serial.available() > 0)  
  14.     {
  15.         comdata += char(Serial.read());
  16.         delay(2);
  17.       }
  18.       
  19.   if(comdata[0]=='+'&&comdata[5]=='0'&&comdata[9]=='K')
  20.     {
  21.       
  22.       digitalWrite(13,HIGH);
  23.       
  24.     }
  25.    if(comdata[0]=='+'&&comdata[5]=='0'&&comdata[9]=='G')
  26.     {
  27.       
  28.       digitalWrite(13,LOW);
  29.       
  30.     }
  31.     comdata = "";
  32.     Serial.println("AT+CIPSEND=0,15");
  33.     delay(1000);
  34. }
复制代码






String comdata = "";

void setup()
{
  Serial.begin(9600);//设置串行通信的波特率
  pinMode(12,OUTPUT);
  pinMode(13,OUTPUT);
  digitalWrite(12,HIGH);
  digitalWrite(13,LOW);
}

void loop()
{
  Serial.flush();
  while (Serial.available() > 0)  
    {
        comdata += char(Serial.read());
        delay(2);
      }
      
  if(comdata[0]=='+'&&comdata[5]=='0'&&comdata[9]=='K')
    {
      
      digitalWrite(13,HIGH);
      
    }
   if(comdata[0]=='+'&&comdata[5]=='0'&&comdata[9]=='G')
    {
      
      digitalWrite(13,LOW);
      
    }
    comdata = "";
    Serial.println("AT+CIPSEND=0,15");
    delay(1000);
}
回复

使用道具 举报

发表于 2015-3-12 16:26:20 | 显示全部楼层
运算符多的情况下,尽量加些括号吧。运算符的优先级别我是记不住。
回复 支持 反对

使用道具 举报

发表于 2015-3-12 17:03:28 | 显示全部楼层
if(comdata[0]=='+'&&comdata[5]=='0'&&comdata[9]=='K')


這樣檢測 0,5,9 位的字符, 在發 "+0K" 時, 你想有什麼反應?  就只可以執行最後的幾句.
回复 支持 反对

使用道具 举报

发表于 2015-3-12 17:31:12 | 显示全部楼层
comdata += char(Serial.read());是不是有问题。字条串一般不能添加字符。if(comdata[0]=='+'&&comdata[5]=='0'&&comdata[9]=='K')这个判断问题。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-3-12 18:31:56 | 显示全部楼层
Super169 发表于 2015-3-12 17:03
這樣檢測 0,5,9 位的字符, 在發 "+0K" 時, 你想有什麼反應?  就只可以執行最後的幾句.

不是真的发+0k,是+????0???k
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-3-12 18:42:33 | 显示全部楼层
liha99 发表于 2015-3-12 17:31
comdata += char(Serial.read());是不是有问题。字条串一般不能添加字符。if(comdata[0]=='+'&&comdata[5] ...

+IPD,0,9,K这个算字符串么
回复 支持 反对

使用道具 举报

发表于 2015-3-13 09:47:51 | 显示全部楼层
要 debug 的話, 為何不直接把 comdata 的資料印出來看看, 不就可以知道接收到東西是否有問題了嗎?
在 comdata="" 之前, 加一句 Serial.println(comdata); 就可以看看是那裡出了問題嗎?

你是在接收東西, 為何要先執行一次  Serial.flush(); ?  如果 IDE 是 1.0 之前, 會把 incoming data 都清除了的.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-3-14 19:27:12 | 显示全部楼层
Super169 发表于 2015-3-13 09:47
要 debug 的話, 為何不直接把 comdata 的資料印出來看看, 不就可以知道接收到東西是否有問題了嗎?
在 comd ...

好办法,谢谢
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-5-18 01:25 , Processed in 0.040204 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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