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

API standards et tierces Android Discussion :

[Bluetooth] Découvrir les périphériques


Sujet :

API standards et tierces Android

  1. #21
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2010
    Messages : 66
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par eomer212 Voir le message
    oui, en fait, tu veux te connecter à quel type d'equipement.??
    un peripherique de lecture, de stockage, une oreillette.? un autoradio.?
    tout depend de ce que tu veux, mais l'uuid dans mon cas etait necessaire parceque le type d'appareil (en l'occurence un scanner de code barre) se comporte, si je me souviens bien, ) comme un lecteur sur port serie.
    j'ai essayé pas mal de truc, avant de tomber sur un article qui decrivait le probleme, et la solution.
    utiliser l'uuid

    quand tu cree ton socket, avant de la connecter,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    socket = EASYBT.createRfcommSocketToServiceRecord(MY_UUID);
    il faut que tu affecte à MY_UUID la valeur suivante.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    final UUID MY-UUID=  UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
    EXACTEMENT cette valeur!!

    mais la encore, difference, je me connecte en client .
    mais de toute facon, rien n'a marche tant que je me suis obstiné à tout laisser dans un seul thread.
    il faut les dissocier!
    sinon, ca plante, et finalement, c'est logique.
    on peut pas mettre au meme niveau de priorite, une ouverture de socket et la gestion de l'interface utilisateur.
    Je penses que tu as du rencontrer le même problème que j'ai actuellement. je m'explique :

    Je reçois du data de mon µC :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("counter:%d", counter);
    Au niveau d'Android, je reçois bien les données mais elles ne s'affiche pas très bien dans le textView que j'ai crée.
    Je pensais qu'il me manquait un caractère de fin comme \r\n mais ça ne change rien à mon problème.

    par exemple le compteur atteint 65, il affiche 65. Mais pour 66 il n'affiche que 6, 67 que 7, puis parfois ça re fonctionne 68, 69, etc.

    As tu une idée?

  2. #22
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2010
    Messages : 66
    Points : 26
    Points
    26
    Par défaut
    Je viens de remarquer que quand je limite mon compteur à 1 entier je n'ai pas de soucis. (0-> 9). A ce moment là Android affiche bien l'ensemble et tout se déroule très bien.

    Mais une fois que j'introduit un deuxième caractère, même un espace, il commence à bugger.

  3. #23
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Bonjour,

    Les données envoyé en Bluetooth ne sont pas forcément reçue en même temps des fois les données arrive en plusieurs fois à toi de 'bufferisé' la réception de donnée.

    par exemple en définissant un protocole de communication.

    [HEAD] message [END]
    Avec cela normalement tu devrais récupérer toutes tes données.
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  4. #24
    Membre confirmé
    Profil pro
    Développeur indépendant
    Inscrit en
    Août 2004
    Messages
    373
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur indépendant
    Secteur : Transports

    Informations forums :
    Inscription : Août 2004
    Messages : 373
    Points : 512
    Points
    512
    Par défaut heuu, attends..
    oui, attends voir, si tu balancais le code que tu utilises aujourdhui et qui te pose probleme, ca serait sans doute mieux que d'essayer de jouer au demineur.

    as tu seulement une mise en buffer de tes entrées??
    il semble que non.

    donc, c'est normal que ca finisse en quenouille.
    le bluetooth gére tout ca derriere, il y a juste a se brancher sur le buffer resultat de ton socket.

    fais voir ton code..

  5. #25
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2010
    Messages : 66
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par eomer212 Voir le message
    oui, attends voir, si tu balancais le code que tu utilises aujourdhui et qui te pose probleme, ca serait sans doute mieux que d'essayer de jouer au demineur.

    as tu seulement une mise en buffer de tes entrées??
    il semble que non.

    donc, c'est normal que ca finisse en quenouille.
    le bluetooth gére tout ca derriere, il y a juste a se brancher sur le buffer resultat de ton socket.

    fais voir ton code..
    il est similaire à celui de bluetoothchat, voici mon Thread pour la lecture en continu:

    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
    27
    28
    29
    30
    public void run() {
     
    		if (DEBUG)
    			Log.i(TAG, "<RUN Thread " + this.getName() + ">");
    		byte[] buffer = new byte[1024];
    		int bytes;
    		while (!mExitCmd) {
     
    			try {
     
    				bytes = mInput.read(buffer);
     
    					if (DEBUG)
    						Log.i(TAG, "<DATA ReadingThread bytes : " + bytes + ">");
     
    					mHandler.obtainMessage(4, bytes, -1, buffer).sendToTarget();
    					if (DEBUG)
    						Log.i(TAG, "<ReadingThread mHandler.obtainMessage 4," + bytes +",-1, "+buffer+ ">");
     
     
    			} catch (IOException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
     
    		}
    		if (DEBUG)
    			Log.i(TAG, "<Reading Thread goes die . . .>");
     
    	}
    et au niveau du handler :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    case 4:
    				byte[] readBuf = (byte[]) msg.obj;
    				// construct a string from the valid bytes in the buffer
    				String readMessage = new String(readBuf, 0, msg.arg1);
    				textviewReading.setText(""+ readMessage);
    				if (DEBUG)
    					Log.i(TAG, "<EASYBT = DATA received : "+readMessage+">");
    				break;
    Parfois il indique bien dans qu'il fait la lecture de 2 bytes pourtant.

Discussions similaires

  1. Comment lister les périphériques bluetooth à porté?
    Par xXO--Hades--OXx dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 11/02/2011, 10h56
  2. Réponses: 1
    Dernier message: 31/08/2009, 09h53
  3. Réponses: 5
    Dernier message: 27/04/2007, 14h43
  4. demonter les périphérique USB par la ligne de commande.
    Par Essilife dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 20/01/2006, 11h50
  5. découvrir les erreurs sous Mozilla
    Par rabobsky dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 18/12/2004, 20h51

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