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:
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:
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
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:
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:
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 ?