|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : juin 2008 Messages : 50 ![]() |
Bonjour,
Je dois réaliser une connexion Bluetooth entre un smartphone androïde et une carte électronique embarquée piloté par un pic (microcontroleur) via un module Bluetooth RN-42 de roving networks voici le lien pour ceux que cela intéresse : http://www.rovingnetworks.com/products/RN_42 j'ai d'abord fait une petite application avec windev mobile pour connecter deux androide entre eux (smartphone htc incredible s et tablette asus transformer prime) pour cela: - j'ai configuer la tablette en serveur en créent un socket Bluetooth - configurer le smartphone en client en me connectant au socket créer sur la tablette. 1er question : on créer le socket du coté serveur et le client s'y connecte est ce bien la bonne terminologie ou est ce l'inverse ? 2em question : le serveur est bien le slave et le client le master ? je pose ces questions parce que pour le module on ne parle plus de socket mais de service, on ne parle plus non plus de serveur et client mais de master et slave. je préféré donc bien comprendre avant de tout faire à l'envers. merci de votre aide. Vincent. |
|
|
00
|
|
|
#2 |
|
Candidat au titre de Membre du Club
![]() JP Inscription : janvier 2012 Messages : 14 ![]() |
Bonjour vinowan,
Je suis un peu dans la même situation (prog développé avec WinDev mobile 17) Je dois faire dialoguer un PPC avec un module bluetooth (sur une carte arduino). Pour le moment, je le fait manuellement et cela fonctionne. Coté PPC, j'allume mon bluetooth (a la main), je lance mon programme sur le PPC, il me propose une connexion avec le module bluetooth concerné, je fais OK, et c'est bon. Voila, maintenant, il faudrait que j'automatise tout ceci, et la, c'est le grand vide. En fait, je ne sais même pas par quoi commencer. Entre les fonctions socket et les fonctions bluetooth, je nage. Aussi, comme je vois que tu as un peu plus avancé que moi, pourrais tu me faire profiter du bout de code que tu as écrit et qui gère tout ça ? Si, sur le forum quelqu’un as des éléments concrets à me fournir, je suis naturellement preneur (ce sont des exemples qui me manquent le plus) Merci à tous JP |
|
|
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Inscription : juillet 2011 Messages : 37 ![]() |
Je suis preneur si quelqu'un trouve comment faire.
|
|
|
00
|
|
|
#4 | ||||||
|
Candidat au titre de Membre du Club
![]() Inscription : juin 2008 Messages : 50 ![]() |
bonjour,
j'ai pas trop mal avancer et ma connexion fonctionne bien entre mon smartphone htc ou tablette et le module Bluetooth RN42 voici en résumer les étapes a suivre pour communiquer avec un module Bluetooth. (enfin la maniéré que moi j'utilise). 1) le module BT doit être visible et le code d'appairage connu (0000 ou 1234 pour débuter). 2) faire une recherche manuelle avec le smart pour voir les périphérique BT à portée, et appairé celui-ci avec le smart. j'ai préférer faire cela en dehors de l'appli androïde car quand cela est fait une fois c'est bon. 3) au démarrage de l'appli androïde je démarre le Bluetooth si il n'est pas encore activer: 4) création d'un socket pour la communication Code :
Je change le mode de transmission mais c'est juste une question de sécurité et de faciliter dans le traitement de la trame reçue ensuite par un pic connecter au module BT. De mémoire je pense que cette action est bloquante, donc moi, j'ai placer cette fonction dans un tread pour pouvoir faire tourner un sablier en attendant que la connexion soit faite. 5) pour envoyer une trame: Code :
unicodeversansi() pour envoyer les 2 byte Hd_1 et Cmd_1 et pas 4 byte REM: il faut faire suppert attention au format ansi, unicode, decimale on s'y perd très vite. 6) réception d'une trame. Code :
REM: les trame reçues s'empile sur une pile et à chaque procédure de lecture on ne lit que la première trame recue, il faut donc refaire la fonction socketlit jusqu’à ce que cette pile soit vide. Perso, j'ai fait un tread lancé au démarrage qui test constamment l’existence du socket, qui test l'arrivée d'une nouvelle trame et qui stock les donnée reçue. end) j'ai passé pas mal de temps a chercher dans tous les coins, je ne sais pas si c'est la solution mais ca fonctionne et même pas mal du tout. j’espère que cela vous aideras car c'est vrai que l'aide en ligne n'est pas encore très fournie sur les socket Bluetooth mais ta touche F1 est devenue mon amie lol. |
||||||
|
|
00
|
|
|
#5 |
|
Candidat au titre de Membre du Club
![]() Inscription : juillet 2011 Messages : 37 ![]() |
Merci super réponse et bien expliqué. IL me semble que j'ai tout fait pareil mais ça ne marche pas. Je vérifie tout dés que j'ai un moment.
|
|
|
00
|
|
|
#6 | |
|
Candidat au titre de Membre du Club
![]() JP Inscription : janvier 2012 Messages : 14 ![]() |
Bonjour,
vinowan, je galère apparemment plus que toi et knarf44 (même si j'ai un peu avancé avec l'aide de knarf44). Pourrais tu, comme l'a fait knarf44 me faire passer le listing de toute ta partie connexion (en MP si tu veux), afin que j’essaie de comprendre la manière dont ça fonctionne. Mon problème se situe surtout dans la réception des infos en provenance de la carte Arduino. Cette partie m'intéresse beaucoup Citation:
En te remerciant, toi ainsi que knarf44 JP |
|
|
|
00
|
|
|
#7 | ||||
|
Candidat au titre de Membre du Club
![]() Inscription : juin 2008 Messages : 50 ![]() |
j'ai créer une coolection de procedure globale et j'ai placer la procedure suivante dedans
Code :
Code :
ThreadExécute("thread_reception_data_socket",threadNormal,Thread_reception_data_socket)
Code :
Code :
SocketChangeModeTransmission("Socket"+Table_de_machine.Mac_adresse,SocketTailleDébut)
- nbr de byte à recevoir codé en ascii (attention si 10 byte recus sera codé sur 2 bytes et si 100 byte recus sera codé sur 3 byte) - 13 (dec) - 10 (dec) - byte 0 - byte 1 - byte ... - byte n donc si on utilise un port uart d'un pic par exemple pour envoyer les byte 1,2,3 decimale il faut envoyer cette trame complete : - 51,13,10,1,2,3 (tout en decimale) ou 51 = 3 en ascii ou 13,10 = carred return et ou 1,2,3 sont les 3 byte recus dans la variable trame_reception et la par contre je bloque encore sur le fait que si un bug par exemple dans le pic ou un parasite (on ne sait jamais) fait qu'il manque un byte de la trame en emmision du pic et bien la procedure socketlit reste plantée indefiniment et independament du time out definit dans les parametre de cette fonction. j'espere avoir été clair dans mes explications, je ne prétend pas que ceci est la bonne solution mais je n'ai pas trouver autre chose si quelqu'un fait autrement et que cela fonctionne je suis preneur aussi. |
||||
|
|
00
|
|
|
#8 |
|
Candidat au titre de Membre du Club
![]() Inscription : juillet 2011 Messages : 37 ![]() |
Bonjour Vinowan,
Comme Bricopin, je n'y arrive pas. J'ai essayé de passer les octets dans un sens, dans l'autre avec la taille au début ou sans en décodant l'unicode ou pas..; bref tout ce que j'i pu imaginé mais au final ça ne marche pas. Je suis sûr que ça vien de windev parce que je test les mêmes fonctionnalité avec eclipse sans pb. Pourrais-tu m'envoyer ton code windev STP. Merci |
|
|
00
|
|
|
#9 |
|
Candidat au titre de Membre du Club
![]() JP Inscription : janvier 2012 Messages : 14 ![]() |
Salut
Je n'ai pas testé encore la solution de Vinowan. Je vais essayer de voir ça demain. Je vous tiens au courant. Pour info, j'ai développé cette appli sur un PPC et la, ça fonctionne parfaitement JP |
|
|
00
|
|
|
#10 |
|
Candidat au titre de Membre du Club
![]() Inscription : juin 2008 Messages : 50 ![]() |
Désolé pour le retard dans mes réponses,
est ce dans l'envoi ou dans la reception que vous avez des probleme? je veux dire envoi de l'androide vers le periphérique ou en reception toujours vu de l'androide ? |
|
|
00
|
|
|
#11 |
|
Candidat au titre de Membre du Club
![]() Inscription : juillet 2011 Messages : 37 ![]() |
Bonjour,
Pour moi les deux mais de toute manière pour recevoir il faut que j'interroge donc tant que je n'arriverais pas à emettre je n'aurais rien. knarf |
|
|
00
|
|
|
#12 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : juin 2008 Messages : 50 ![]() |
utiliser vous bien la bonne mac adresse ?
voici comment faire pour recuperer une liste avec tout les peripherique bluetooth identifié par le smart ou la tablette. j'utilise une zone répetée avec 3 attribut ID, Adresse mac et le nom, mais c'est surtout l'adresse mac qui est importante. Code :
lors de mes premiers pas pour tester l'envoi d'une trame avec un socket bluetoot, j'ai utiliser le soft lookrs232 gratuit pour visualiser ce que je recevais avec le module bluetooth RN42 et ceci afin de voir les different type de trame selon le mode de transmision choisit. n'hesité pas a poster les morceau de code qui vous pose probleme, je ne suis pas un pros en windev mobile mais qulequ'un peux toujours voir quelque chose qui ne fonctionne pas. |
||
|
|
00
|
|
|
#13 |
|
Candidat au titre de Membre du Club
![]() Inscription : juillet 2011 Messages : 37 ![]() |
Bonjour,
J'ai bien tout fait ça (je sui sparti de l'exemple android system) je viens de recevoir mon module arduino je rééssaye au moins je pourrais voir ce qui arrive à l'oscillo. Merci |
|
|
00
|
|
|
#14 | ||
|
Candidat au titre de Membre du Club
![]() JP Inscription : janvier 2012 Messages : 14 ![]() |
Bonjour à tous,
Bon, j'ai pu me remettre un peu sur le projet. Comme indique précédemment, je veux faire dialoguer une carte arduino et un smartphone android au travers d'un module bluetooth. Grâce à vos renseignements, la partie descendante (android vers arduino) fonctionne. Par contre la partie montante (arduino vers android. ne fonctionne pas trop bien. J'ai simplifié à l’extrême le code: Code :
L'arduino doit me retourner des valeurs (9 variables de 1 à 3 chiffres) concaténés en une seul variable de type string. Je reçois bien cette variable au niveau de l'android mais...je ne la reçoit pas instantanément. Après de nombreux essais, il s’avere que le délai est fonction de la valeur de ma variable. Ex si ma valeur est de 100, le délai est 150s si ma valeurs est de 200, le délai est de 300s etc. Le rapport entre la valeur de la variable et le délai est toujours 1.5. Je ne comprends pas, d'autant que normalement, la variable étant de type chaine, elle ne devrait pas être prise en compte de par sa valeur. Qu'en pensez vous ? Cdlt JP |
||
|
|
00
|
Copyright © 2000-2013 - www.developpez.com