Как быстро отсканировать сигнал iBeacon с помощью hm10? - PullRequest
0 голосов
/ 28 января 2020

Я делаю локационную систему с сигналом iBeacon. Таким образом, я хочу получить iBeacon Singnal с коротким периодом. Я пробовал это с hm10 и Arduino. И попробовал с этим похвалить "AT+DISI?". Я использовал этот код

#include <SoftwareSerial.h>
SoftwareSerial BTSerial(2,3);

char disi_result[500];
int top=0;
int d1=0;
int i=0;
struct devices {
  unsigned int major=0;
  unsigned int minor=0;
  unsigned int power=0;
  int rssi=0;

};
devices device[4];

void setup()
{

  Serial.begin(9600);
  BTSerial.begin(9600); 
  start_at();
}
void loop(){ 
  if(d1==0)
  {
    Serial.println("Scanning started");
    BTSerial.write("AT+DISI?");
    d1=1;   

  }
  if(d1==1){

    if (BTSerial.available() ){
      while(BTSerial.available()){
        disi_result[i]=char(BTSerial.read());

        i++;
      }

    }

    int j;
    String str="";
    for(j=i-8;j<=i;j++)
    {
      str=str+disi_result[j];
    }
    if(str=="OK+DISCE" ){

      d1=2;

    }

  }
  if(d1==2)
  {
    int j=0;
      for(j=0;j<=i;j++)
      {
       Serial.print(disi_result[j]);
      }
  i=0;
d1=0;


  }

}

void start_at(){
  String c="";
  do{
    BTSerial.print("AT");
    delay(50);
    if (BTSerial.available())
    {
      while(BTSerial.available())
      {
        c=c+char(BTSerial.read());
      }

    }
  }while(c!="OK");
}

Я могу получить ответ хорошо. но период сканирования слишком медленный. Я хочу быстро получить изменение значения rssi. Как я могу это сделать?

...