2017-01-16 36 views
0

因此,我在Eddystone扫描上使用Evothings示例,出于某种原因,应用程序在一段时间后将不再扫描。Estimote Eddystone停止扫描 - javascript

调用函数startScan每500毫秒:

function onDeviceReady() { 
    // Start tracking beacons! 
    setInterval(function(){ startScan() }, 500); 
} 

startScan功能:

function startScan() { 
    // console.log("Startscan called"+new Date()); 
    // Called continuously when ranging beacons. 
    evothings.eddystone.startScan(
     function(beacon) 
     { 
       console.log("Startscan called evo"+new Date()); 
       // Insert/update beacon table entry. 
       beacon.timeStamp = Date.now(); 
       beacons[beacon.address] = beacon; 
       domodalandstuff(); // this function opens a bootstrap modal to show some data 
     }, 
     function(error) 
     { 
       console.log('Eddystone Scan error: ' + JSON.stringify(error)+" "+new Date()); 
     } 
)}; 

后约10分钟,我看到这在我的控制台:

  • LOG:Startscan称为evoMon Jan 16 2017 15:47:45 GMT + 0100(CET)
  • LO G:Eddystone扫描错误:“正在扫描!” Mon Jan 16 2017 15:47:45 GMT + 0100(CET)
  • LOG:Eddystone Scan error:“Scanning already in progress!”周一1月16日2017年 格林尼治标准时间15时47分45秒+ 0100(CET)

该应用程序只是停止调用startScan(),所以当然我的应用程序将无法找到标了的。

回答

0

我想问题是“每500毫秒调用函数startScan”。像这样,你一次开始多次扫描。

你应该只调用它一次。您的startScan功能调用evothings.eddystone.startScan,其中开始并继续扫描直至停止。因此,您只需拨打evothings.eddystone.startScan一次,每次检测到信标时它都会调用您的successCallback。

function onDeviceReady() { 
    startScan(); 
} 

注意:您应该在某处拨打evothings.eddystone.stopScan

+0

谢谢,我会尝试这一点,如果它的工作原理,我将其标记为答案:) 。 – TheMaco

0

是啊,很stuipid错误感谢@Dietatko,它的工作,如果你想知道这是我想出了:

 function checkmodalup() { 
     if ($('#myModal').is(':visible')){ 
     evothings.eddystone.stopScan(); 
     isscanning = false; 
     } 
     else { 
     if (isscanning === false) { 
     evothings.eddystone.stopScan(); 
     startScan(); 
      isscanning = true; 
     } 
     else if (isscanning === true) { 
      console.log("is already scanning"); 
     } 
     } 
}