Bonjour,
Pour une application de configuration de système j'aurais besoin de communiquer entre mon ordinateur et un système équipé d'un microcontrôleur. Pour cela je souhaite utiliser la liaison série présente sur le microcontrôleur et également sur l'ordinateur.
Mon problème est que je n'arrive pas à utiliser la liaison série de l'ordinateur dans mon application Winform, donc j'aurais voulus savoir si quelqu'un connaissait la classe à utiliser et avais peut être des morceaux de codes pour m'aider.
Pour l'initialisation du port série j'utilise le morceau de code suivant :
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 System::IO::Ports::SerialPort Port; //Num. port if (comboBox1->Text == L"1") Port.PortName="COM1"; else if (comboBox1->Text==L"2") Port.PortName="COM2"; else if (comboBox1->Text==L"3") Port.PortName=="COM3"; else if (comboBox1->Text==L"4") Port.PortName="COM4"; //Vitesse Port.BaudRate=19200; //Bit de parité Port.Parity=IO::Ports::Parity::None; //Nb de Bits Port.DataBits=8; //Bit d'arrêt Port.StopBits=IO::Ports::StopBits::One; // Taille des buffers Port.ReadBufferSize = 10; Port.WriteBufferSize = 10; if (this->button7->Text=="Connecter") { this->button7->Text="Déconnecter"; //Ouverture du port selectionné Port.Open(); unsigned char Tab_Temp[3]; Tab_Temp[0] = (ADDRE_OLED_VPOL)>>8; Tab_Temp[1] = ADDRE_OLED_VPOL; Tab_Temp[2] = (unsigned char)(this->numericUpDown9->Value); Envoi(0,Tab_Temp,3); }
Pour écrire sur le port j'utilise la fonction :
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 System::IO::Ports::SerialPort Port; // voir déclaration en haut de la page : //variables non managée Buffer_Envoi[ptr_Buffer]='S'; ptr_Buffer++; Buffer_Envoi[ptr_Buffer]=0; ptr_Buffer++; Buffer_Envoi[ptr_Buffer]=ordre; ptr_Buffer++; for(int i=0;i<taille;i++) { Buffer_Envoi[ptr_Buffer]=Tab[i]; ptr_Buffer++; } Buffer_Envoi[1]=ptr_Buffer+2; ptr_Buffer++; Buffer_Envoi[ptr_Buffer]=CheckSum(Buffer_Envoi); ptr_Buffer++; temp=ptr_Buffer; Buffer_Envoi[ptr_Buffer]='E'; Port.Write(Buffer_Envoi,0,temp);
Et à la compilation je me récupère l'erreur suivante :
Je tiens à préciser je ne connais pas grand chose en Winform, je ne sais pas si c'est du C++ ou autres chose comme language. D'habitude je travail en MFC mais là je reprend un projet. Donc si cela se trouve cela n'est qu'un problème de déclaration de mon tableau ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 error C2664: 'void System::IO::Ports::SerialPort::Write(cli::array<Type,dimension> ^,int,int)' : impossible de convertir le paramètre 1 de 'unsigned char [45]' en 'cli::array<Type,dimension> ^' with [ Type=wchar_t, dimension=1 ]
Merci d'avance.
Partager