BLE Характеристика не читает всю строку сразу - PullRequest
0 голосов
/ 04 сентября 2018

Я отправляю данные с ползунка и кнопок на Arduino через Hm10, но проблема в том, что моя строка читается в двух частях, она разделяется от второй последней характеристики до новой строки строки.

 func writeValue(data: String){
    let valueString = (data as NSString).data(using: String.Encoding.utf8.rawValue)
    print("data string is" , data)

    //change the "data" to valueString
    if let blePeripheral = blePeripheral{
        if let txCharacteristic = txCharacteristic {
            blePeripheral.writeValue(valueString!, for: txCharacteristic, type: CBCharacteristicWriteType.withResponse)
            print(valueString!)
        }
    }
}

@IBAction func switchAction(_ sender: Any) {
    if switchUI.isOn {
        print("On ")
       // writeCharacteristic(val: 1)
        writeValue(data:"tp1z  ")
    }

func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?) {
    print("characterstic value is" , characteristic.value!)
    if characteristic == rxCharacteristic {
        if let ASCIIstring = NSString(data: characteristic.value!, encoding: String.Encoding.utf8.rawValue) {
            characteristicASCIIValue = ASCIIstring
            print("Value Recieved: \((characteristicASCIIValue as String))")

            NotificationCenter.default.post(name:NSNotification.Name(rawValue: "Notify"), object: nil)

        }
    }
}


 func updateIncomingData () {

    NotificationCenter.default.addObserver(forName: NSNotification.Name(rawValue: "Notify"), object: nil , queue: nil){
        notification in
        let appendString = "\n"
        let myFont = UIFont(name: "Helvetica Neue", size: 15.0)
        let myAttributes2 = [NSAttributedStringKey.font: myFont!, NSAttributedStringKey.foregroundColor: UIColor.red]
       let attribString = NSAttributedString(string: "[Incoming]: " + (characteristicASCIIValue as String) + appendString, attributes: myAttributes2)

        let newAsciiText = NSMutableAttributedString(attributedString: self.consoleAsciiText!)
        self.baseTextView.attributedText = NSAttributedString(string: characteristicASCIIValue as String , attributes: myAttributes2)

        newAsciiText.append(attribString)

        self.consoleAsciiText = newAsciiText
        self.baseTextView.attributedText = self.consoleAsciiText
        print("incoming")

    }
}

Я не могу понять, почему он разрывает мою строку со второго последнего символа.

1 Ответ

0 голосов
/ 24 сентября 2018

Итак, в конце я использовал пустые символы, поскольку они ломали мою строку со второго последнего символа, как показано ниже: -

writeValue(data:"tp1z  ")

Это сработало для меня.

...