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;
}