2017-01-16 9 views
0

, поэтому я использую пример Evothings для сканирования eddystone и по какой-то причине через некоторое время приложение больше не будет сканировать.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()); 
     } 
)}; 

After ~ 10 минут я вижу это в моей консоли:

  • LOG: Startscan называется evoMon 16 января 2017 15:47:45 GMT + 0100 (CET)
  • LO G: Ошибка сканирования Eddystone: «Сканирование уже выполняется!» Пн Янв 16 2017 15:47:45 GMT + 0100 (CET)
  • LOG: Ошибка сканирования Eddystone: «Сканирование уже выполняется!» Пн 16 января 2017 15:47:45 GMT + 0100 (CET)

приложение просто перестает вызова startScan(), так что, конечно, мое приложение не будет найти маяки больше.

ответ

0

Я думаю, проблема заключается в «Функция вызова startScan каждые 500 мс». Таким образом вы начинаете много сканов одновременно.

Вы должны называть его только один раз. Функция 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"); 
     } 
     } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^