Bonjour messieurs, dames,
/ATTENTION , DIFFICILE À EXPLIQUER\
Dans les grandes lignes:
Je dois piloter un robotino (robot pédagogique).
On peut envoyer à ce robot des trame UDP.
Actuellement , je sais le faire en python. C'est à dire que j'envoie la trame que je veux, ça fonctionne très bien.
En revanche le faire depuis un programme Java : non .
ici vous avez la petite application graphique que j'ai écrite en python.
Elle me permet d'envoyer les valeurs que je veux sur les entrées du robot que je veux.
-Si j’appuie sur conversion, mes valeurs sont converties en une trame interprétable par le robot qui s'affiche dans le champ juste en bas.
-Si j’appuie sur envoi, mes valeurs sont converties en une trame interprétable par le robot et sont réellement envoyé au serveur du robotino.
Et donc tout ceci est fonctionnel.
La fonction conversion me permettait de copier le champ et de faire ceci en python:
MESSAGE = "\x00\x24\x00\xdb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
monSocket.sendto(MESSAGE, (UDP_IP, UDP_PORT_EMISSION))
Enfin Bref !
Je souhaite faire ça en java (pour une app android). Mais non, ça ne marche pas.
J'ai crée (copié un code) d'un serveur UDP en java. Il marche.
Je peux envoyer une phrase du genre "bonjour" depuis mon app android
Maintenant je voudrais que lorsque j'envoie ma trame soit depuis mon app ANDROID ça m'affiche la même chose que depuis mon programme python. ( une image sera BEAUCOUP PLUS CLAIRE
Voici une partie du code actuel, je vous fais grâce du reste qui ne sera pas utile.
Et donc pour faire au plus simple j'aimerais que cette trame, envoyé depuis mon app Android, "\x00\x24\x00\xdb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" m'affiche "$ Û" sur mon serveur. Comme le fait mon programme python.
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
31
32
33
34
35
36
37
38
39
40 private void runUdpClient() { async_cient = new AsyncTask<Void, Void, Void>() { @Override protected Void doInBackground(Void... params) { //String udpMsg = "x00x24\x00\x77\x64\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"; //String udpMsg = "002400776400000000000000000000000000000000000000000000000000000000000000"; //String udpMsg = "002400a90000000000000000320000000000000000000000000000000000000000000000"; //String udpMsg= "002400db0000000000000000000000000000000000000000000000000000000000000000"; //String udpMsg = "\0x00\0x24\0x00\0xdb\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00"; //String udpMsg = "\\x00\\x24\\x00\\xdb\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00"; //String udpMsg= "0x00,0x24,0x00,0xA9,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00"; String udpMsg="bonjour"; DatagramSocket ds = null; try { ds = new DatagramSocket(); //InetAddress serverAddr = InetAddress.getByName("10.117.221.144"); // IP IUT InetAddress serverAddr = InetAddress.getByName("192.168.1.36"); // IP MAISON DatagramPacket dp; dp = new DatagramPacket(udpMsg.getBytes(), udpMsg.length(), serverAddr, 9182); ds.send(dp); } catch (Exception e) { Log.e("UDPTest", "Problème d'envoi datagram", e); } return null; } protected void onPostExecute(Void result) { super.onPostExecute(result); } };
Donc la question comment dois modifier et/ou traiter cette trame sous Java ?
Voilà, je sais que c'est très difficile à comprendre quand on est pas dans le truc. Alors je reste à votre disposition pour plus d’éclaircissements.
Partager