SUITE DU TUTO — AJOUTER LE BOUTON APPEL ROBOT


Objectif

Quand on appuie sur le bouton :

  • l’application envoie la position du téléphone au serveur
  • le serveur reçoit :
{"x":48.1762,"y":-2.7520}

Adresse utilisée :

https://sti2d.latelier22.fr/fiber/api/call-robot

1) Dans Designer, ajouter les composants

A. Ajouter le bouton

Dans User Interface :

  • ajoute un Button
  • nom : BtnAppel

Mettre :

  • Text = APPEL ROBOT

B. Ajouter un Notifier

Dans User Interface :

  • ajoute un Notifier
  • nom : Notifier1

C. Ajouter un Web

Dans Connectivity :

  • ajoute un Web
  • nom : Web1

2) Vérifier les variables globales

Dans Blocks, il faut avoir au minimum :

initialize global lat to 0
initialize global lon to 0
initialize global hasFix to false

Si elles n’existent pas, crée-les.


3) Modifier le bloc GPS

Dans ton bloc :

when LocationSensor1.PositionChanged

ajoute ces 3 lignes si elles n’y sont pas déjà :

set global lat to get Latitude
set global lon to get Longitude
set global hasFix to true

Résultat attendu du bloc GPS

Ton bloc doit contenir au moins :

when LocationSensor1.PositionChanged
    Latitude Longitude Altitude speed
do
    set global lat to get Latitude
    set global lon to get Longitude
    set global hasFix to true

    set Marker1.Latitude to get Latitude
    set Marker1.Longitude to get Longitude

4) Créer le bloc du clic sur le bouton

Ajoute ce bloc :

when BtnAppel.Click
do

5) Dans BtnAppel.Click, tester si le GPS est prêt

Dans ce bloc, mets :

if not get global hasFix
then
    call Notifier1.ShowAlert
        notice "GPS pas prêt"
else
    call Notifier1.ShowChooseDialog
        message join
            "Appeler le robot ?"
            "\nlat = "
            get global lat
            "\nlon = "
            get global lon
        title "CONFIRMATION"
        button1Text "OUI"
        button2Text "NON"
        cancelable true

6) Créer le bloc après la boîte de dialogue

Ajoute ce bloc :

when Notifier1.AfterChoosing
    choice
do

7) Dans Notifier1.AfterChoosing, tester si on a cliqué sur OUI

Mets :

if get choice = "OUI"
then

8) Dans le then, mettre l’adresse du serveur

Ajoute :

set Web1.Url to "https://sti2d.latelier22.fr/fiber/api/call-robot"

9) Ajouter les headers

Ajoute ensuite :

set Web1.RequestHeaders to make a list
    make a list "Content-Type" "application/json"
    make a list "Connection" "Keep-Alive"

10) Envoyer les coordonnées

Méthode simple à faire comme sur ton image

Ajoute :

call Web1.PostText
    text make a dictionary
        key "x" value get global lat
        key "y" value get global lon

11) Bloc complet Notifier1.AfterChoosing

Au final, ton bloc doit être :

when Notifier1.AfterChoosing
    choice
do
    if get choice = "OUI"
    then
        set Web1.Url to "https://sti2d.latelier22.fr/fiber/api/call-robot"

        set Web1.RequestHeaders to make a list
            make a list "Content-Type" "application/json"
            make a list "Connection" "Keep-Alive"

        call Web1.PostText
            text make a dictionary
                key "x" value get global lat
                key "y" value get global lon

12) Créer le bloc de réponse du serveur

Ajoute ce bloc :

when Web1.GotText
    url responseCode responseType responseContent
do

13) Dans Web1.GotText, afficher la réponse

Mets :

set LabelPos.Text to join
    "Réponse serveur : "
    responseCode
    "\n"
    responseContent

14) Résultat attendu

Quand on clique sur APPEL ROBOT :

  1. l’application vérifie si le GPS est prêt
  2. une boîte de confirmation s’ouvre
  3. si on clique sur OUI
  4. l’application envoie :
{"x": latitude, "y": longitude}
  1. la réponse du serveur s’affiche dans LabelPos

15) Ordre exact des blocs à ajouter

Fais-les dans cet ordre :

  1. ajouter BtnAppel
  2. ajouter Notifier1
  3. ajouter Web1
  4. vérifier les variables globales lat, lon, hasFix
  5. modifier LocationSensor1.PositionChanged
  6. créer when BtnAppel.Click
  7. créer when Notifier1.AfterChoosing
  8. créer when Web1.GotText

16) Si rien ne se passe

Vérifier

  • que BtnAppel existe bien
  • que Notifier1 existe bien
  • que Web1 existe bien
  • que global hasFix passe à true
  • que global lat et global lon sont bien mis à jour

17) Si tu veux le texte exact à mettre dans ton document

Bloc 7 : ajouter un bouton d’appel du robot

On souhaite maintenant ajouter un bouton permettant d’envoyer la position du téléphone au serveur.

Composants à ajouter

Dans le Designer, ajouter :

  • un bouton BtnAppel
  • un composant Notifier1
  • un composant Web1

Fonctionnement

Quand on clique sur le bouton :

  • l’application vérifie que le GPS est prêt,
  • elle demande une confirmation,
  • si l’utilisateur clique sur OUI,
  • elle envoie la position du téléphone à l’adresse :
https://sti2d.latelier22.fr/fiber/api/call-robot

Les coordonnées envoyées sont :

  • x pour la latitude
  • y pour la longitude

Réponse attendue

La réponse du serveur est affichée dans le label de position.