Bonjour à tous,
J'ai 2 programmes un client et un serveur.
Dans mon programme serveur j'ai une classe Server qui "écoute" sur un port ...
Quand un message est reçu :
- il est retourné au client avec la mention "Recu ..."
- et une méthode d'un "objet" RpiServeur est appellée avec passage d'un paramètre.
Le client reçoit bien car je vois le texte en retour qui s'affiche
La méthode est bien appelée car une méthode AllumeLed() est bien déclenchée
Mais le Switch Case ne marche pas : le texte n'est pas reconnu ... enfin c'est ce que je pense mais comme je débute c'est pas sûr !!
Comme le serveur est sur un raspberry, et que le débogage marche pas (ou je ne sais pas comment le faire marcher), j'arrive pas à voir ce qui se passe au niveau du string Commande de la méthode CommanderRpi
Merci d'avance.
Extrait du serveur :
Méthode appelée :
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
41
42
43 public Server() { listener = new StreamSocketListener(); listener.ConnectionReceived += OnConnection; } private async void OnConnection(StreamSocketListener sender,StreamSocketListenerConnectionReceivedEventArgs args) { try { StringBuilder request = new StringBuilder(); using (IInputStream input = args.Socket.InputStream) { byte[] data = new byte[BufferSize]; IBuffer buffer = data.AsBuffer(); uint dataRead = BufferSize; while (dataRead == BufferSize) { await input.ReadAsync(buffer, BufferSize, InputStreamOptions.Partial); request.Append(Encoding.UTF8.GetString(data, 0, data.Length)); dataRead = buffer.Length; } RpiServeur.CommanderRpi(request.ToString()); /// C'est cet Appel qui pose problème } using (IOutputStream output = args.Socket.OutputStream) { using (Stream resp = output.AsStreamForWrite()) { string message = "Reçu : " + request.ToString(); byte[] messageArray = Encoding.UTF8.GetBytes(message); await resp.WriteAsync(messageArray, 0, messageArray.Length); await resp.FlushAsync(); } } } catch(Exception exception) { if (SocketError.GetStatus(exception.HResult) == SocketErrorStatus.Unknown) { throw; } } }
Extrait du code du client :
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 public void CommanderRpi(string Commande) { switch (Commande) { case "MoteurAvant": moteur1.MotorAvant(); break; case "MoteurArriere": moteur1.MotorArriere(); break; case "MoteurStop": moteur1.MotorStop(); break; } AllumeLed(); // La méthode appelée fonctionne car je vois AllumeLed qui fonctionne // et si j'avais mis moteur1.MotorAvant(); le moteur aurait bien fonctionné ... // Donc c'est le String qui passe pas ???? }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 private void buttonAvant_Click(object sender, RoutedEventArgs e) { EnvoiMessage("MoteurAvant"); }
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
41
42
43
44
45
46
47 private async void EnvoiMessage(string Message) { StreamSocket socket = new StreamSocket(); HostName hostName = new HostName(textBoxIP.Text); try { await socket.ConnectAsync(hostName, "18000"); } catch (Exception exception) { if (SocketError.GetStatus(exception.HResult) == SocketErrorStatus.Unknown) { throw; } } uint BufferSize = 8192; StringBuilder request = new StringBuilder(); // ECRITURE // using (IOutputStream output = socket.OutputStream) { using (Stream resp = output.AsStreamForWrite()) { string message = Message; byte[] messageArray = Encoding.UTF8.GetBytes(message); await resp.WriteAsync(messageArray, 0, messageArray.Length); await resp.FlushAsync(); } } using (IInputStream input = socket.InputStream) { byte[] data = new byte[BufferSize]; IBuffer buffer = data.AsBuffer(); uint dataRead = BufferSize; while (dataRead == BufferSize) { await input.ReadAsync(buffer, BufferSize, InputStreamOptions.Partial); request.Append(Encoding.UTF8.GetString(data, 0, data.Length)); dataRead = buffer.Length; } } textBoxComment.Text += "\r\n" + request.ToString(); // Ici je vois bien "Reçu : MoteurAvant" socket.Dispose(); }
Partager