Я отправляю слова от 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)
}
}