在阅读时连续搜索某些单词?

时间:2015-10-25 12:29:05

标签: arduino

有时读取连续输入数据太大而无法保存,但我们无论如何都需要在里面搜索某些单词。

现在我们累积所有数据,然后才查找特定单词。 我想这样做while reading, without saving the data,所以要改进这个:

   boolean waitFor(char  *target, long timeout)
        {

                unsigned long tm=millis();
                  while( 1 )
                  {
                    if( millis() - tm >= timeout ) 
                      return 0;

                    char wifiContent[50]={0};
                    int readWifiIndex=0;

                    while( wifiSerial.available()  ) 
                    {  

                        if(readWifiIndex<50)
                        {                 
                             wifiContent[readWifiIndex]=(char)wifiSerial.read();
                             readWifiIndex++;
                             delay(1);  
                        } 


                    }


                //**check of specific words 
                    if( strstr(wifiContent,target) )
                       return 1;


                  }

        }

1 个答案:

答案 0 :(得分:-1)

对于任何需要它的人来说,这是一个更优雅的解决方案,它不那么沉重,节省了大量资源。

此函数搜索给定的单词,并且也有超时。效果很好。

boolean waitFor(char  *target, long timeout)
    {

            unsigned long tm=millis();
              while( 1 )
              {
                if( millis() - tm >= timeout ) 
                  return 0;


                int readWifiIndex=0;

                while( Serial.available()  ) 
                {  


                         char cr=(char)Serial.read();
                         delay(1);  

                         if(target[readWifiIndex] ==cr)
                         {
                          readWifiIndex++;
                          if(  strlen(target) ==readWifiIndex )
                          return 1;
                         }
                         else
                         readWifiIndex=0;




                }