IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windev Mobile Discussion :

Communication BlueTooth avec un robot


Sujet :

Windev Mobile

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 105
    Points : 58
    Points
    58
    Par défaut Communication BlueTooth avec un robot
    Bonjour,
    Je souhaite faire communiquer un appareil Android avec des robots en BlueTooth (Lego NXT, Aspirateur Roomba et cartes Arduino). La connexion se fait (notamment récupération de l'adresse mac) mais pas moyen d'envoyer ou de lire qqc.
    Je suis partis de l'exemple system Android (juste la partie BlueTooth) et dans la partie "Sélection d'une ligne ZR périphérique" j'ai rajouté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RésultatConnexion=SocketConnecteBluetooth(SocketEnCours,"SerialPortServiceClass_UUID",ATT_MAC)
    Qui semble marcher (retourne 1)
    J'ai ensuite tenté d'envoyer un télégramme en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    TélégrammeBuffer est un Buffer
    EnTêteBuffer[[1]]=5 // nombre d'octet à transmettre lsb page 4 doc NXT
    EnTêteBuffer[[2]]=0// nombre d'octet à transmettre msbpage 4 doc NXT
     
    TélégrammeBuffer[[1]]=0x80 // Commande directe sans attente de réponse
    TélégrammeBuffer[[2]]=0x05 // SetInputMode
    TélégrammeBuffer[[3]]=0x00 // Port 0 (=1)
    TélégrammeBuffer[[4]]=0x05 // Allumer la lumière
    TélégrammeBuffer[[5]]=0x00 // Sensor mode
     
    Résultat=SocketEcrit(SocketEnCours,TélégrammeBuffer)
    Mais rien ne se passe.
    Je n'ai pas bien compris la différence entre les fonctions SocketCréeBluetooth et SocketConnecteBluetooth.
    SocketCréeBluetooth me renvoie systématiquement l'erreur "not able to register SDP record for".
    Par contre la fonction SocketConnecteBluetooth semble marcher sauf qu’ensuite ni SocketLit ni SocketEcrit ne fond rien.
    Il est dit que "La connexion est établie au premier succès de la fonction SocketLit sur le serveur" J'ai donc rajouté une fonction SocketLit mais elle ne renvoie jamais rien.
    Mes écritures (avec SocketEcrit) ont l'air de marcher (coté Android) mais rien ne se passe en face (coté NXT).

    Les fonctions de BlueTooth marchent elles dans WM ? Ca fait plus d'une semaine que j'essaye sans succés.

    J'apprécierais vraiment un peu d'aide.

    Merci.
    Knarf44

  2. #2
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations forums :
    Inscription : Janvier 2012
    Messages : 14
    Points : 15
    Points
    15
    Par défaut
    Bonjour,
    Dans le principe, je suis sur quelques choses de similaire.
    Mais je n'arrive même pas à me connecter à mon module Bluetooth.
    Je dois vraiment louper quelques choses.
    knarf44, est ce que tu pourrais me transmettre la partie de ton code qui te permet de te connecter ?
    Cdlt
    JP

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 105
    Points : 58
    Points
    58
    Par défaut
    Citation Envoyé par bricopin Voir le message
    Bonjour,
    Dans le principe, je suis sur quelques choses de similaire.
    Mais je n'arrive même pas à me connecter à mon module Bluetooth.
    Je dois vraiment louper quelques choses.
    knarf44, est ce que tu pourrais me transmettre la partie de ton code qui te permet de te connecter ?
    Cdlt
    JP
    Voilà. A mettre dans l'exemple android system. Je peux aussi t'envoyer le projet qui n'est qu'un essais de communication.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    RésultatConnexion est un booléen
    RetourExiste est un booléen
     
    SI ATT_Nom<>SocketEnCours ALORS
    	SI SocketExiste(SocketEnCours)=Vrai ALORS
    		SocketFerme(SocketEnCours)
    		SocketEnCours=""
    		LIB_Info_connexion="Pas de connexion en cours"
    	FIN
    //	// Création de la socket Bluetooth en spécifiant un nom de service
    //	SI SocketCréeBluetooth(ATT_Nom, "SerialPortServiceClass_UUID") = Faux ALORS
    //		Erreur("Impossible de créer la socket Bluetooth", ErreurInfo(errComplet))
    //		LIB_GrandTexte= ErreurInfo(errComplet)
    //		RETOUR
    //	FIN
    	RésultatConnexion=SocketConnecteBluetooth(ATT_Nom,"SerialPortServiceClass_UUID",ATT_MAC) //"00001101-0000-1000-8000-00805F9B34FB"
    	Sérialise
    	SI RésultatConnexion ALORS
    		SocketEnCours =ATT_Nom
    		ConnexionChoisis=ATT_Nom
    		MacDispositif =ATT_MAC
    		RetourExiste=SocketExiste(SocketEnCours)
    		LIB_Info_connexion="Connexion établit avec : " + SocketEnCours + RC+ "Adresse MAC : " +MacDispositif+RC+"SocketExiste : "+RetourExiste
     
    	FIN
    FIN

  4. #4
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations forums :
    Inscription : Janvier 2012
    Messages : 14
    Points : 15
    Points
    15
    Par défaut
    Je peux aussi t'envoyer le projet qui n'est qu'un essais de communication
    OK, avec plaisir, ça va surement m'aider
    JP

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 105
    Points : 58
    Points
    58
    Par défaut
    Voir MP.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations forums :
    Inscription : Janvier 2012
    Messages : 14
    Points : 15
    Points
    15
    Par défaut
    Bonjour,
    knarf44, pour une partie, mon appli, fait la même chose que la tienne a savoir :
    - A partir du Smartphone Android, je transmet des ordres,
    - La carte Arduino, me retourne des informations
    - tout ceci au travers d'une connexion Bluetooth (module BT japanbox)
    J'ai donc testé ton appli sans rien modifier.
    1° - j'ai une erreur avec le fonction "Serialise" -> je l'ai donc supprimé.
    2° - Une fois l'Apk chargé, je teste la partie lecture et celle ci fonctionne, je récupère bien les bonnes infos de l'Arduino.
    3° - j'ai simplifié à l’extrême la partie écriture et ça fonctionne également, je commande bien mes fonctions sur l'Arduino
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Résultat est un booléen
    TélégrammeBuffer est une chaîne
    TélégrammeBuffer = "b"
    Résultat=SocketEcrit(SocketEnCours,TélégrammeBuffer)
    JP

  7. #7
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 105
    Points : 58
    Points
    58
    Par défaut
    Sérialise, c'étati mon dernier essais en court et j'ai oublié de faire le ménage.

    Si ça marche avec l'arduino c'est que ma commande buffer ne marche pas. Arrives-tu à envoyer des caractères non imprimables. Le Lego commence par 0x80 ou 0x00.

  8. #8
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2013
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Bonjour mon projet est plus ou moins le même, je doit communiqué avec un Roomba. J'arrive a actualisé les périphériques Bluetooth mais pas a me connecter j'ai lu des aides comme celle-ci mais visiblement il me manque des procédures et je ne comprend pas tout. J'aimerais savoir si je pourrais obtenir votre programme de connexion pour m'en inspiré.

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par bricopin Voir le message
    OK, avec plaisir, ça va surement m'aider
    JP
    Moi aussi, je plante...

    Si vous voulez-bien !

    Merci

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2014
    Messages : 7
    Points : 9
    Points
    9
    Par défaut
    Bonjour,

    De voir que quelqu'un a réussi à faire une application Android qui communique avec un module Bluetooth sous Windev Mobile me motive à persévérer.
    J'ai réussi à envoyer des octets mais la réception me pose problème.
    J’exécute SocketLit dans un thread et obtient en retour "" tant que le module BT n'envoi rien.
    Jusque là, c'est normal.
    Mais lorsque le module BT envoi un octet, SocketLit se bloque

    Avez-vous rencontrer le même probléme avant d'arriver à recevoir des données de l'Arduino ?

    Cordialement

    Xavier

    Citation Envoyé par bricopin Voir le message
    Bonjour,
    knarf44, pour une partie, mon appli, fait la même chose que la tienne a savoir :
    - A partir du Smartphone Android, je transmet des ordres,
    - La carte Arduino, me retourne des informations
    - tout ceci au travers d'une connexion Bluetooth (module BT japanbox)
    J'ai donc testé ton appli sans rien modifier.
    1° - j'ai une erreur avec le fonction "Serialise" -> je l'ai donc supprimé.
    2° - Une fois l'Apk chargé, je teste la partie lecture et celle ci fonctionne, je récupère bien les bonnes infos de l'Arduino.
    3° - j'ai simplifié à l’extrême la partie écriture et ça fonctionne également, je commande bien mes fonctions sur l'Arduino
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Résultat est un booléen
    TélégrammeBuffer est une chaîne
    TélégrammeBuffer = "b"
    Résultat=SocketEcrit(SocketEnCours,TélégrammeBuffer)
    JP

  11. #11
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 105
    Points : 58
    Points
    58
    Par défaut
    Bonjour,
    J'ai eu des problèmes sur l'ensemble des utilisations de socketlit mais les mêmes qu'avec processing ou appinventor. Je n'ai pas retouché au bluetooth mais en wifi j'ai résolu le pb en ne mettant pas le socketlit dans un thread mais en bouclant régulièrement à l'aide d'un timer (25/seconde) ce qui reproduit un peu le mode de fonctionnement de processing. Je n'ai pas de carte bluetooth avec moi aujourd'hui mais je vais m'y remettre d'ici une semaine je pense.

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2014
    Messages : 7
    Points : 9
    Points
    9
    Par défaut
    Merci pour cette réponse,

    J'avais pour idée de remplacer le thread par un timer.
    Je vais donc voir si ça permet de faire fonctionner la réception

    Cordialement

    Xavier

    Citation Envoyé par knarf44 Voir le message
    Bonjour,
    J'ai eu des problèmes sur l'ensemble des utilisations de socketlit mais les mêmes qu'avec processing ou appinventor. Je n'ai pas retouché au bluetooth mais en wifi j'ai résolu le pb en ne mettant pas le socketlit dans un thread mais en bouclant régulièrement à l'aide d'un timer (25/seconde) ce qui reproduit un peu le mode de fonctionnement de processing. Je n'ai pas de carte bluetooth avec moi aujourd'hui mais je vais m'y remettre d'ici une semaine je pense.

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2014
    Messages : 7
    Points : 9
    Points
    9
    Par défaut
    Pour info, j'avais suivi le didacticiel suivant :
    http://fr.scribd.com/doc/178855566/D...-Windev-Mobile

    Cordialement

    Xavier

    Citation Envoyé par xberger Voir le message
    Merci pour cette réponse,

    J'avais pour idée de remplacer le thread par un timer.
    Je vais donc voir si ça permet de faire fonctionner la réception

    Cordialement

    Xavier

  14. #14
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2014
    Messages : 7
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par knarf44 Voir le message
    Bonjour,
    J'ai eu des problèmes sur l'ensemble des utilisations de socketlit mais les mêmes qu'avec processing ou appinventor. Je n'ai pas retouché au bluetooth mais en wifi j'ai résolu le pb en ne mettant pas le socketlit dans un thread mais en bouclant régulièrement à l'aide d'un timer (25/seconde) ce qui reproduit un peu le mode de fonctionnement de processing. Je n'ai pas de carte bluetooth avec moi aujourd'hui mais je vais m'y remettre d'ici une semaine je pense.
    En exécutant SocketKit périodiquement avec un timer (toutes les secondes).
    L'application se plante complètement.

    Cordialement

    Xavier

  15. #15
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2014
    Messages : 7
    Points : 9
    Points
    9
    Par défaut
    Pour éviter un blocage du thread de lecture de la socket, il faut utiliser la fonction SocketChangeModeTransmission avec l'option <Type de Transmission> = SocketSansMarqueurFin.
    Sinon par défaut windev rajouter la longueur avant les données lors de l'exécution de SocketEcrit.
    Mais attend aussi cette longueur dans les données reçues avec Socketlit.

  16. #16
    Candidat au Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2016
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Socketlit en windev mobile
    Bonjour,

    Je reprends le fil de la conversation ayant les mêmes problèmes....
    J'arrive bien à envoyer des messages à la carte Arduino, mais je ne récupère rien en lecture.

    Avez vous trouvé la solution depuis votre post ? Je galère et je ne trouve rien : La lecture du socket ne plante pas, mais ne récupère rien.
    Côté Arduino j'ai ce code et les serial.print ne ramène rien :

    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    const int relai = 4;  //pin pour relai
    void setup()
    {
      pinMode(relai, OUTPUT);    
      Serial.begin(9600); //Initialize serial 
      digitalWrite(relai, HIGH); // on éteint le relai au redemarrage
    }
     
    void loop()
    {
      while (Serial.available() == 0); //on reste a cette ligne tant que on a pas recu de data
       char c = Serial.read();
       if(c =='1') {
         digitalWrite(relai, HIGH);   // set the LED off
         Serial.print ("Led Off");
                   }
     
       if(c == '0'){
         digitalWrite(relai, LOW);  // set the LED on
         Serial.print ("Led On");
                  }
     
       delay(5);
    }


    Coté Windev mobile j'ai ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    PROCEDURE Liresocket()
    trame_reception est une chaîne
    BOUCLE	//boucle sans fin ne pose pas de probleme car dans un thread
    	SI SocketExiste("Socket") = Vrai ALORS
    		trame_reception = AnsiVersUnicode( SocketLit("Socket",Faux,50))	
    		SI trame_reception <> "" ALORS
    			Commarea=trame_reception
    			ExécuteThreadPrincipal("AfficherResultat",trame_reception)
    			trame_reception = ""				
    		FIN		
    	FIN		
    A FAIRE TANTQUE sansfin = 1

    Avez vous une solution ?

  17. #17
    Membre éprouvé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Février 2010
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2010
    Messages : 553
    Points : 1 075
    Points
    1 075
    Par défaut
    Avec Android, quand "rien ne marche", souvent c'est un pb sur le Manifest de l'application dont les autorisations ne sont pas bien configurées, souvent quand on ajoute du code natif sans passer par les fonctions WM. Je ne sais pas si c'est le problème ici, mais il faudrait vérifier que l'application est autorisée à recevoir des data en Bluetooth ...

  18. #18
    Candidat au Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2016
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Merci de votre réponse, mais dans mon cas je suis Full Windev mobile. Les autorisations Bluetooth sont bien activé avant la compilation. L'écriture ne pose aucun problème, mon montage Arduino répond bien (Mon relai claque) mais dès que je tente de lire l'état qui m'est renvoyé ça ne répond plus, même en refermant et en ré-ouvrant le socket....

    Une piste ?

  19. #19
    Membre régulier
    Profil pro
    Inscrit en
    Février 2006
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 144
    Points : 75
    Points
    75
    Par défaut
    Bonjour,
    Je souhaiterais aussi dans un premier temps envoyer des commandes en Bluetooth à partir de Windev Mobile à une carte Arduino.
    La première étape est de trouver l'adresse MAC de la carte Arduino :
    Le code de l'exemple WD Bluetooth permet d'établir la liste des périphériques.

    Jusque là tout va bien. La carte Arduino est visible et je dispose de son adresse MAC.
    Ensuite une tentative de connexion avec le code suivant :

    Code Windev : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    e est un booléen
    SocketEnCours ="so01"
    MacDispositif ="00:08:09:03:20:b2"
     
    e =SocketConnecteBluetooth(SocketEnCours,"SerialPortServiceClass_UUID",MacDispositif) 
     
    SI e ALORS
    		RetourExiste=SocketExiste(SocketEnCours)
    		LIB_01="Connexion établie avec : " + SocketEnCours + RC+ "Adresse MAC : " +MacDispositif+RC+"SocketExiste : "+RetourExiste
    SINON
    	    LIB_01="Connexion impossible " 
    FIN

    Je reçois le message d'erreur "Connexion impossible"
    Je n'ai pas trouvé d'exemple sur la méthode à utiliser pour établir une connexion Bluetooth avec Windev. L'exemple WD bluetooth permet de voir les périphériques et leurs services mais pas de s'y connecter.

    Quelqu'un pourrait-il me donner une piste à suivre ?
    Merci pour votre temps.

Discussions similaires

  1. Communication Bluetooth avec un stéthoscope électronique
    Par danielpereira dans le forum Général Java
    Réponses: 0
    Dernier message: 24/09/2010, 17h20
  2. communication bluetooth avec java
    Par subzero01 dans le forum Multimédia
    Réponses: 0
    Dernier message: 15/01/2009, 16h22
  3. Communication bluetooth avec un PC
    Par amel666 dans le forum Java ME
    Réponses: 2
    Dernier message: 04/05/2007, 11h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo