Paso 6: código de
Importar UIKit agregar,
import CoreBluetooth
Esto carga el marco BLE.
Cambiar su definición de clase para ver como esta,
class ViewController: UIViewController, CBCentralManagerDelegate, CBPeripheralDelegate
Esto conecta la vista principal para escuchar para acciones realizadas por BLE del iPhone y el HM-10.
Ya hemos añadido la CBCentralManagerDelegate se debe agregar la centralManagerDidUpdateState. Esta funciones relojes iOS del dispositivo en dispositivos Bluetooth. Si cambia los Estados (p. ej., Bluetooth está desactivado) luego esta función se ejecute.
func centralManagerDidUpdateState(central: CBCentralManager?) { if let central = central{ if central.state == CBCentralManagerState.PoweredOn { println("Bluetooth ON") } else { println("Bluetooth switched off or not initialized") } } }
Básicamente, lo que estamos haciendo aquí es imprimir al sistema si tiene apagada la BLE. Puede cambiar esto para hacer a todo tipo de cosas de lujo, pero vamos a mantenerlo simple.
Ahora, aquí es donde se pone divertido! Vamos a agregar una función para obtener los datos provenientes de la HM-10 e imprimir en el título de la barra de navegación.
Obtener los valores de datos cuando se actualizan // Get data values when they are updated func peripheral(peripheral: CBPeripheral?, didUpdateValueForCharacteristic characteristic: CBCharacteristic?, error: NSError!) { if let characteristicValue = characteristic?.value{ var datastring = NSString(data: characteristicValue, encoding: NSUTF8StringEncoding) if let datastring = datastring{ navigationItem.title = datastring as String } } }
Algunas cosas de aquí, cuenta var datastring = NSString (datos: characteristicValue, codificación: NSUTF8StringEncoding) en realidad está recibiendo los datos desde el buffer de RX, convirtiéndola en un NSString. El if dejó datastring = datastring es desenvolver la opcional, luego ajuste el título de la barra de navegación a la cadena de RX. ¿¡ Nifty, eh?
Cuenta que la podría hacer el destinatario de los datos que toma una cadena. He utilizado simplemente el título de la barra de navegación por lo que no necesitamos agregar otros elementos.
Bien, estamos cerca del final. ¿Qué sobre el envío de texto?
// Write function func writeValue(data: String){ let data = (data as NSString).dataUsingEncoding(NSUTF8StringEncoding) if let peripheralDevice = peripheralDevice{ if let deviceCharacteristics = deviceCharacteristics{ peripheralDevice.writeValue(data, forCharacteristic: deviceCharacteristics, type: CBCharacteristicWriteType.WithoutResponse) } } }
Esta función es realmente una función de preparación de datos para el caballo de batalla real: peripheralDevice.writeValue (datos, característica).
La función de envoltura he creado, writeValue(String), toma una cadena, lo convierte al formato de datos UTF8, que es el formato necesario writeValue (datos característicos). A continuación, comprueba si hay un periférico para escribir los valores. Si hay, llama a la función writeValue utilizando los datos que pasa.
Si parece confuso, sólo sé, toma una cadena y envía al dispositivo de recepción.
Usted puede llamar esta función writeValue desde un botón como el botón 'Enviar' configuramos.
func sendButton(sender: AnyObject) { if let text = sendTextField{ writeValue(sendTextField.text) } }
Esto hace que nuestro botón agarrar lo que usted escribe en el cuadro de campo de texto y enviarlo al dispositivo receptor, por medio de la función de writeValue(String) poco ingenioso que hicimos.
¡Vale! Eso es todo. (Espero. Trago.)
Cuando termine de código de su ViewController debe buscando algo como esto,