0
3パケットで分割されたパックド構造体のブルートゥースデータを受信しています。各パケットの最初のバイトはこのパケットの番号で残りはデータです。私は、アセンブリにstuctを次のコードを使用しています:memcpyと構造体へのスウィフト
func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?) {
guard let value = characteristic.value as NSData? else { return }
var packetNumber = UInt8()
let maxPacketSize = 17
value.getBytes(&packetNumber, length: 1)
memcpy(&settings + maxPacketSize * (Int(packetNumber) - 1), value.bytes + 1, value.length - 1)
}
それはそれはゼロで埋めたまま、最初のパケットでうまく動作しますが、第二と第三のパケットが構造体にコピーされません。 objcの同じアプローチはすべての3つのパケットでうまく動作します。なにが問題ですか?
ありがとうございます!