Невозможно отправить данные из Raspberry pi 3 через BLE, если они меньше 8 букв - PullRequest
0 голосов
/ 27 марта 2019

Я отправляю слова от raspberry pi на мой iPhone.Я использую gatttools, чтобы отправить его.Когда я получаю слово, оно сохраняется внутри kCBAdvDataManufacturerData.Поэтому я читаю прямо оттуда.

Я могу безопасно послать слово, содержащее более 8 букв.Для слов, которые содержат менее 8 букв, я не вижу их внутри kCBAdvDataManufacturerData.То, что видно, это данные из предыдущих 8 букв.

def constructBLEData(data):
    asciiArray = [c.encode("hex") for c in data]
    hciCommand = "sudo hcitool -i hci0 cmd 0x08 0x0008 "
    hciCommand += str(len(data)+1)
    hciCommand += " 02 01 1a " + '{0:02x}'.format(len(data)+3) + " ff 18 01 "
    for c in asciiArray:
        hciCommand += c + " "
    print(asciiArray)
    return hciCommand

вот как я строю свои данные

и так я посылаю команду

    a = ["sudo hciconfig hci0 reset", "sudo invoke-rc.d bluetooth restart","sudo hciconfig hci0 up","hciconfig"]
    b = [hciCommand, "sudo hciconfig hci0 leadv 0"]

Iя посылаю его через python, используя os.system

Сначала я отправляю "Hello World" и получаю "Hello World", затем я отправляю "Hello" и получаю "Hello World", если я отправляю "Hello aaaaaa", яget "Hello aaaaaa"

Может кто-нибудь сказать мне, что не так, если я отправляю менее 8 писем?или что я должен сделать, чтобы я мог отправить слово, которое содержит менее 8 букв?

edit: читать объявленные данные в iOS

            if let data = advertisementData["kCBAdvDataManufacturerData"]  as? Data {

                let dataStr = String(data: data, encoding: .utf8)

                if let range = dataStr!.range(of: "\u{01}") {
                    let userData = dataStr![range.upperBound...]
                    print(userData)
                    beaconFlag = true
                    raspPiLabel.text = "Mode: " + userData
                    raspPiLabel.isHidden = false
                    notificationCenter.post(name: .sameUser, object: nil)

                }
            }
...