Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arduino 阅读时连续搜索某些单词?_Arduino - Fatal编程技术网

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

Arduino 阅读时连续搜索某些单词?,arduino,Arduino,当读取串行数据时,有时输入数据太大而无法保存,但我们还是需要在其中搜索特定的单词 现在我们积累所有数据,然后再寻找特定的单词。 我希望在阅读时这样做,而不保存数据,因此要改进此操作: boolean waitFor(char *target, long timeout) { unsigned long tm=millis(); while( 1 ) {

当读取串行数据时,有时输入数据太大而无法保存,但我们还是需要在其中搜索特定的单词

现在我们积累所有数据,然后再寻找特定的单词。 我希望在阅读时这样做,而不保存数据,因此要改进此操作:

   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;


                  }

        }

对于任何需要它的人,这里有一个更优雅的解决方案,它的重量要轻得多,并且节省了大量资源

此函数用于搜索给定的单词,并且还有一个超时。效果很好

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;




                }