IPhone till Arduino med Bluetooth 4.0-- (6 / 7 steg)
Steg 6: kod
Lägg till under Importera UIKit,
importera CoreBluetooth
Detta laddar BLE ramen.
Ändra din klassdefinitionen se ut så här,
klass ViewController: UIViewController, CBCentralManagerDelegate, CBPeripheralDelegate
Detta ansluter den vy för att lyssna efter åtgärder som utförs av iPhone BLE och HM-10.
Eftersom vi lagt till CBCentralManagerDelegate vi måste lägga till centralManagerDidUpdateState. Här fungerar klockor den iOS enheten på Bluetooth-enheten. Om man byter stater (t.ex. Bluetooth är avstängd) och sedan denna funktion kommer att köras.
FUNC centralManagerDidUpdateState (central: CBCentralManager?) {
om låt central = centrala {
om central.state == CBCentralManagerState.PoweredOn {
println ("Bluetooth på")
}
annat {
println ("Bluetooth avstängd eller inte initieras")
}
}
}
I grund och botten allt vi gör här skriva ut systemet om BLE fick avstängd. Du kan ändra det för att göra alla möjliga fina saker, men vi kommer att hålla det enkelt.
Nu, här är där det blir kul! Låt oss lägga till en funktion för att ta tag i alla uppgifter kommer från HM-10 och skriva den till navigation bar titeln.
Få datavärden när de uppdateras
FUNC perifera (perifera: CBPeripheral?, didUpdateValueForCharacteristic kännetecken: CBCharacteristic?, fel: NSError!) {
om låt characteristicValue = kännetecken?. värdet {
var datastring = NSString (data: characteristicValue, kodning: NSUTF8StringEncoding)
om låt datastring = datastring {
navigationItem.title = datastring som sträng
}
}
}
Ett par saker av märka här, var datastring = NSString (data: characteristicValue, kodning: NSUTF8StringEncoding) är faktiskt att få data från RX bufferten, konvertera det till en NSString. Om låt datastring = datastring uppackning den valfria, sedan ange navigation bar titeln till RX strängen. Tjusig, eh?
Märk väl, de kunde göra mottagaren av informationen något som tar en sträng. Jag använde helt enkelt navigation bar titeln så vi inte behövde lägga till andra objekt.
Okej, får vi nära slutet. Vad sägs om Skicka text?
Skriva funktion
FUNC writeValue(data: String) {
Låt data = (data som NSString).dataUsingEncoding(NSUTF8StringEncoding)
om låt peripheralDevice = peripheralDevice {
om låt deviceCharacteristics = deviceCharacteristics {
peripheralDevice.writeValue (data, forCharacteristic:
deviceCharacteristics, typ: CBCharacteristicWriteType.WithoutResponse)
}
}
}
Denna funktion är faktiskt en data förberedelse funktion för den verkliga arbetshästen: peripheralDevice.writeValue (data, karakteristiska).
Wrapper funktion jag skapat, writeValue(String), tar en sträng, det konverterar UTF8 dataformat, som är det format som krävs av writeValue (data, karakteristiska). Sedan kontrollerar om det finns en perifer att skriva värdena. Om det finns, anropar det funktionen writeValue med data du passerat den.
Om det verkar förvirrande, vet bara, det tar en sträng och skickar det till den mottagande enheten.
Du kan ringa writeValue funktionen från en knapp, t.ex på "Skicka" knappen vi setup.
FUNC sendButton(sender: AnyObject) {
om låt text = sendTextField {
writeValue(sendTextField.text)
}
}
Detta gör vår knapp till hugg efter vad du skrivit i rutan Text och skicka den till den mottagande enheten, genom fiffiga lilla writeValue(String) funktionen vi gjort.
Okej! Det var allt. (Hoppas jag. Klunk.)
När du har din ViewController koden bör ser något så här,