Bonjour,
Je suis dans le développement d'une application client-serveur
Le serveur étant un Arduino et le Client étant une application WinForm.
J'arrive très bien à envoyer des données à l'Arduino en Asynchrone mais je n'arrive pas à gérer
la réception du côté de mon application quand il me renvoie quelque chose.

Je me suis aidé de MSDN pour la réception asynchrone côté client mais je n'arrive pas bien à la modifier pour que
elle s'adapte à une winforrm.
Dans leur code ils utilisent :


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
private static void Receive(Socket client) {
        try {
            // Create the state object.
            StateObject state = new StateObject();
            state.workSocket = client;
 
            // Begin receiving the data from the remote device.
            client.BeginReceive( state.buffer, 0, StateObject.BufferSize, 0,
                new AsyncCallback(ReceiveCallback), state);
        } catch (Exception e) {
            Console.WriteLine(e.ToString());
        }
    }
 
    private static void ReceiveCallback( IAsyncResult ar ) {
        try {
            // Retrieve the state object and the client socket 
            // from the asynchronous state object.
            StateObject state = (StateObject) ar.AsyncState;
            Socket client = state.workSocket;
 
            // Read data from the remote device.
            int bytesRead = client.EndReceive(ar);
 
            if (bytesRead > 0) {
                // There might be more data, so store the data received so far.
            state.sb.Append(Encoding.ASCII.GetString(state.buffer,0,bytesRead));
 
                // Get the rest of the data.
                client.BeginReceive(state.buffer,0,StateObject.BufferSize,0,
                    new AsyncCallback(ReceiveCallback), state);
            } else {
                // All the data has arrived; put it in response.
                if (state.sb.Length > 1) {
                    response = state.sb.ToString();
                }
                // Signal that all bytes have been received.
                receiveDone.Set();
            }
        } catch (Exception e) {
            Console.WriteLine(e.ToString());
        }
    }
https://msdn.microsoft.com/fr-fr/lib...vs.110%29.aspx

Ils utilisent la fonction read(Socket Client) pour tout déclencher.
Dans mon cas je veux que la réception se déclenche quand quelque chose arrive
comme un Event ou je ne sais quoi....

J'aimerai aussi savoir ou est ce que je dois mettre mon :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
this.invoke(new EventHandler(DisplayText));
Pour afficher la reception des données dans une RTB.

Je vous remercie
Cordialement,
Steph