Bonjour,
Je suis en train d essayer de faire communiquer un PIC avec un PC. Pour ceux qui connaissent, je veux utiliser l emulation RS232 proposee par Microchip et qui permet de communiquer par une prise USB mais qui cree un port COM virtuel. Au final, pour communiquer avec le PIC il faut donc utiliser TComPort comme s il s agissait d une communication serie.
Apres mes premiers deboirs, j ai recherche sur ce forum et sur internet et j ai trouve un sujet interessant mais qui n a pas resolu mais probleme:
http://www.developpez.net/forums/vie...&highlight=pic
Pour le moment, je veux juste un truc simple pour tester le systeme. Il y a un edit, un memo, deux boutons ( code reutilise a partir du lien precedent):
--
Mon probleme est le 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
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 void __fastcall TForm1::btConnecClick(TObject *Sender) { ComPort1->Events = TComEvents(); // Effacer tous les évenements Memo1->Text = Memo1->Text + "Connexion etablie ..." + "\r\n"; ComPort1->Connected = true; btDeconnec->Visible = true; TComEvents Ev; Ev << evRxChar; ComPort1->WaitForEvent (Ev, 0, 5000); // Attend un événement OnRxChar ou 5 secondes avant de continuer le traitement // Si un évenement OnRxChar arrive, on viendra lire le nombre d'octet reçut // Si les 5 secondes sont écoulées on écrira une phrase sur le Caption de la TForm // Y a t il eu des octets d'arrivés ? if (Ev.Contains(evRxChar)) { // Oui Form1->Caption = IntToStr(ComPort1->InputCount ()) + " octets"; // Poursuite du traitement en conséquence } else { // Non Form1->Caption = "Les 5 secondes se sont écoulées"; // Poursuite du traitement en conséquence } ComPort1->Connected = false; } //--------------------------------------------------------------------------- void __fastcall TForm1::btDeconnecClick(TObject *Sender) { ComPort1->Connected=false; } //--------------------------------------------------------------------------- void __fastcall TForm1::ComPort1RxChar(TObject *Sender, int Count) { /*unsigned char *recept = new unsigned char [Count]; ComPort1->Read (recept, Count); for(int i = 0; i < Count; i++) Memo1->Text = Memo1->Text + (recept[i]); Memo1->Text = Memo1->Text + "\r\n"; delete [] recept; recept = NULL;*/ AnsiString Str; Edit1->Text = "Ok"; ComPort1->ReadStr(Str, Count); Memo1->Text = Memo1->Text + Str; } void __fastcall TForm1::btClearClick(TObject *Sender) { Memo1->Clear(); Edit1->Clear(); } //---------------------------------------------------------------------------
- je ne recois rien mais le nomnbre d octet s affichent correctement dans le nom de la fiche
- a priori l evenement ComPort1RxChar ne se lance pas
- avec des logiciels comme Hyperterminal ou equivalent je reçois sans probleme les informations de mon PIC.
Merci d avoir lu jusqu ici,
Mathieu
Partager