Bonjour,
j'ai réaliser une interface qui va établir une communication entre mon pc et une commande d'axe via le port série.
pour pouvoir communiquer, la commande d'axe attend un code (qui va déclencher la tache recevfile -recevoir des données) et qui serra confirmet en eppyant sur le F6 de son IHM.

je me explique: j'ai fait une boucle while d'ou j'ai crée une variable bool (ison), donc avec le bouton envoyer, j'envoie la ligne de code (recvfile) sur le port :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
 serialPort1.Write("\u000A");
puis je déclenche la boucle while qui va attendre un retour d'un accord de la commande d'axe, une fois confirmer sur la commande d'axe avec le F6 elle envoie un signe sur le port( que je récupére avec l’événement datareceived) et la l'envoie des données commence (visualisation de la led tx, mais la led rx ne clignote pas), à la fin du transfert la commande d'axe ne reçois rien je retrouve pas les données.

voila le code de la commande d'axe :
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
 
PROG
 
Init:
 
'Ouverture des ports de communication
Open "Serial1:9600,8,E,1" AS #2
 
'Vidage des tampons
clearin #1
clearout #1
clearin #2
clearout #2
 
'Arret des taches de communication
halt envfile
halt recfile
halt recprog
halt envprog
 
dbtcom=off
carac$=""
char$=""
chaine$=""
 
traitement:
 
'Attente utilisateur appuie sur F6
wait dbtcom=on
 
'Lecture des octets
repeat
  if len(carac$)<=8 then
  char$=input$ #2,1
  end if
  carac$=carac$+char$
until carin(#2)=0
 
'Acquisition du "code opération"
car$=left$(carac$,1)
 
'Si code 10 alors lancer la tache recfile
if car$=chr$(10) then 
halt envfile
halt recprog
halt envprog
RF=right$(left$(carac$,3),2)
run recfile
end if
 
'Si code 11 alors lancer la tache envprog
if car$=chr$(11) then
halt envfile
halt recprog
halt recfile
EPROG=right$(carac$,3)
run envprog
end if
 
'Si code 12 alors lancer la tache recprog
if car$=chr$(12) then
halt envfile
halt envprog
halt recfile
RP=right$(carac$,3)
run recprog
end if
 
'Si code 13 alors lancer la tache envfile
if car$=chr$(13) then
halt envprog
halt recprog
halt recfile
EF=left$(carac$,1)
run envfile'
end if
 
clearin #2
clearout #2
close #2
 
jump init
 
END PROG
et voila mon code :
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
 
 public bool ison = false;
 
 private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
 
  if (!ison)
           {
               serialPort1.Write("\u000A"); pour recevfile
               ison = true;
 
           }
}
 
  private void button_envoyer_Click(object sender, EventArgs e)
        {
            StatusLabel1.Text = "Appuyez sur 'F6' de la commande numérique puis patientez...";
            serialPort1.Write("\u000A"); // lance la tache receveFil chr13
 
            while (!ison) { }
 
 
                StreamReader sr = new StreamReader(openFileDialog1.OpenFile(), Encoding.Default);
 
                try
                {
                    string data = sr.ReadLine();
 
                    while (data != null)
                    {
                        bBufferBytes = System.Text.Encoding.ASCII.GetBytes(data); //Place le contenu dans un buffer d'octets (ASCII: 1 char = 1 octet) (UNICODE: 1 Char = 2 octets)
                        serialPort1.Write(bBufferBytes, 0, bBufferBytes.Length); // Ecrit le buffer complet sur le SerialPort                   
                        data = sr.ReadLine();
                        StatusLabel1.Text = "Transfert en cours...";
 
                    }
                }
 
                finally
                {
                    if (sr != null)
                        sr.Close();
                    StatusLabel1.Text = "Transfert Fini ";
                }
 
 
        }
pouvez_ vous m'aider