2017-10-18 23 views
0

Donc, je suis plutôt bloqué avec un périphérique BLE et ses données. Lors de la lecture à partir du périphérique BLE, les données sont stockées dans un objet de données. Maintenant, pour cet exemple, je vais prendre le temps de l'époque comme cela (devrait) être facile à vérifier. Donc, le pod Bluejay enregistre les données, et lors de l'impression des données comme suit debugPrint("Epoch Time: \(data as NSData)") le résultat est ce "Epoch Time: <869c0200>". Jusqu'ici tout va bien j'ai pensé. Lorsque je copie la valeur 869c0200 et le mettre dans la calculatrice Mac (mode programmeur), faire un byte flip, et le vérifier avec le site Web epochtimeconverter Je reçois une date plausible en 1970. Parce qu'il remet toujours après une batterie morte à 1970. Maintenant, quand Je fixe un point d'arrêt et regarde les valeurs que je vois un couple de chose.
_bytes UnsafeMutableRawPointer? (_rawValue = 0x00000001c04364b0)
_rawValue Builtin.RawPointer 0x1c04364b0 chacun d'eux me donne un temps différent. Y a-t-il quelqu'un qui pourrait m'aider, étape par étape, comment je dois interpréter ces données et travailler de manière correcte? En bref: "Comment lire/manipuler correctement l'epochtime de mon périphérique BLE?"Explication iOS Données BLE et octets swift 3

Merci d'avance pour l'heure de lecture.

Répondre

1

Vous ne pouvez pas imprimer NSData comme vous le souhaitez. Vous devez le convertir en chaîne (tableau d'octets).

Ex:

let yourDataByte = [UInt8](advertiseData as! NSData) 

let yourString = String(NSString(format:"%02X", Int(yourDataByte[0])))