Comuniquem dos dispositius mòbils via bluetooth - Programem els rols
Programem el rol de servidor
Per poder iniciar la comunicació, el dispositiu que faci de servidor s’haurà de posar a l’escolta. Per fer-ho haurà comprovar que el Bluetooth està activat:
Un cop tinguem el dispositiu Bluetooth actiu, caldrà posar-se a l’espera per acceptar la connexió del dispositiu que actuarà de client:
Tan bon punt l’altre dispositiu s’hagi connectat amb el nostre, mostrarem el vertical arrangement VAServidor, ocultarem el VAInicial i informarem a l’usuari que s'ha establert la connexió:
Ara tan sols ens queda escoltar el canal de comunicació periòdicament per veure si hem rebut informació de l’altre dispositiu. Per fer-ho utilitzarem l’objecte ClockServidor, que cada cert temps consultarà si hi ha informació pendent de llegir en el canal de comunicació. En cas que hi hagi dades pendents de llegir, les llegirem i les mostrarem a través del label LRebutServidor.
Hem configurat la propietat Timer de l'objecte Clock a 1 segon (1000 ms) en la finestra de disseny, però aquest temps es pot modificar en funció de les necessitats de l’aplicació.
Quan l'usuari faci click en el botó Enviar, si la connexió segueix activa i l'usuari ha escrit alguna cosa en el camp adient, enviarem la informació que hi hagi introduït.
Dissenyem el rol de client
La part corresponent al client serà molt semblant tot i que l’establiment de la connexió serà una mica diferent.
Per establir la comunicació actualitzarem el listPicker LPClient que ens permetrà escollir amb quin dispositiu prèviament aparellat ens volem connectar.
Un cop escollit un element del llistat, demanarem de connectar-nos-hi cridant la funció BluetoothClient1.Connect. Aquesta crida ens retornarà un valor booleà que utilitzarem per adequar la interfície al funcionament en mode client si el resultat és positiu. En cas que s'hagi pogut establir la comunicació ens retornarà el valor cert i aleshores modificarem la interfície mostrant l'objecte VAClient i ocultant VAInicial i enviarem un missatge via Bluetooth per avisar l'altre usuari que ja s'ha establert la comunicació. En cas que no s'hagi pogut establir la comunicació mostrarem un missatge d'error.
Per gestionar la recepció de dades usarem una crida a l’esdeveniment ClockClient.Timer (un clock diferent del que usem en cas de funcionar com a servidor) amb una estructura idèntica però cridant a l'objecte BluetoothClient enlloc de BluetoothServer.
L’enviament de dades actuant com a client també serà molt semblant a com ho fem des del rol servidor. Tan sols difereix en l'objecte utilitzat, BluetoothClient enlloc de BluetoothServer.
I per concloure l'app, programarem el botó Desconnecta per tancar la connexió establerta amb l'altre dispositiu. Aquest botó està fora dels vertical arrangements ja que es comú per tots dos modes de funcionament. En funció del vertical arrangement visible, desconnecta l’objecte BluetoothClient o el BluetoothServidor segons convingui, desactiva els clocks i reconfigura la pantalla de l'app.