2016-05-06 18 views
0

Ich benutze ein Raspberry Pi mit einem Bluetooth-Dongle, um ein Leuchtfeuer zu simulieren. Ich möchte die Zeit messen, die eine mobile App benötigt, um die UUID eines Beacons zu erkennen, wenn ich sie in der Himbeere ändere. Mit diesem Code fand ich den Server durch das Smartphone verwendet, aus dem ZiegelSynchronisieren Sie die Zeit zwischen einer Android-App und einem Server

final Resources res = this.getResources(); 
     final int id = Resources.getSystem().getIdentifier(
       "config_ntpServer", "string","android"); 
     final String defaultServer = res.getString(id); 

zu synchronisieren, als ich mit

sudo ntpdate -u 2.android.pool.ntp.org 

die Zeit, in der Raspberry Pi synchronisiert Bevor ich die ID des Beacon-I Druck ändern die Zeit

timestamp() { 
    date +"%T,%3N" 
} 


timestamp # print timestamp 

sudo hcitool -i hci0 cmd 0x08 0x0008 1e 02 01 1..... 

Dann vergleiche ich die Zeit, als ich die UUID und die Zeit, in der logcat geändert, wenn die UUID zum ersten Mal, und das Ergebnis zu sehen war ist Alwayse negativ UUID wurde um 15: 33: 03,276 geändert und um 15: 33: 02.301 erkannt.

Ist das ein Synchronisierungsproblem? Gibt es einen besseren Weg, dies zu tun?

Antwort

1

Ein paar Gedanken:

  • Sowohl die Android-Gerät und die Pi standardmäßig ihre Zeit auf einen NTP-Server automatisch synchronisieren, wenn sie eine Netzwerkverbindung verfügen. Du solltest nichts tun müssen.

  • Der NTP-Daemon ändert nicht immer sofort die Uhr - er passt ihn langsam im Laufe der Zeit an, um Linux-Prozesse nicht durch einen sofortigen Sprung zu stören. Da der Raspberry Pi keine Echtzeituhr hat, hat er immer eine falsche Zeit beim Booten. Möglicherweise müssen Sie nach dem Start einige Minuten warten, bevor es mit dem Android-Gerät synchronisiert wird.

  • NTP ist nicht perfekt. Erwarten Sie nicht, dass Ihre Uhren bei Verwendung von Internet-Zeitservern auf mehr als einige 10 Millisekunden synchronisiert werden. Da die Bluetooth-Erkennungszeiten sehr schnell sein können (auch im Bereich von 10 Millisekunden), können die Erkennungszeiten von -100 ms innerhalb der Grenzen dieser Konfiguration liegen.

Was Sie zeigen, ist eine Erkennungszeit von etwa -1,0 Sekunden. Dies deutet darauf hin, dass die Zeit nicht gut synchronisiert ist. Ich würde vermuten, dass der Pi das Problem und die Problembehebung dort ist. Es kann hilfreich sein, die Zeit bis zur Millisekunde auf beiden Geräten nebeneinander anzuzeigen, um Fehler zu beheben.