Bonjour,
Je développe une application de communication avec des modem en commandes AT en utilisant le composant TComPort.
J'ai déja réaliser ce que je voulais en mode Fiche Delphi (c'est dire avec un TForm). Pour la gestion des messages AT renvoyés par le modem j'utilise donc l'évenement TForm1.ComPort1RxChar de la manière suivante :
Cette méthode fonctionne bien. Maintenant je désirerais développer cette application en mode console (c'est à dire sans TForm). Je me pose alors la question de comment gérer les évenements en mode console.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer); begin ComPort1.ReadStr(combuffer, Count); buffer := buffer + combuffer; end;
J'ai essayé ca :
Mais cela ne fonctionne pas ...
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 program Project1; {$APPTYPE CONSOLE} uses SysUtils, Cport, Windows, SyncObjs; var ComPort: TComPort; buffer: string; function CtrlHandler(CtrlType: LongWord): Boolean; begin if evRxChar in ComPort.Events then begin Comport.ReadStr(buffer, ComPort.InputCount); Writeln(buffer); end; Result := True; end; begin { TODO -oUser -cConsole Main : placez le code ici } SetConsoleCtrlHandler(@CtrlHandler, True); try ComPort := TComPort.Create(nil); try ComPort.Port := 'COM3'; ComPort.BaudRate := br57600; ComPort.FlowControl.ControlDTR := dtrEnable; ComPort.FlowControl.ControlRTS := rtsEnable; ComPort.Open; ComPort.WriteStr('AT'#13#10); finally ComPort.Free; end; except on E: Exception do Writeln('Error: ' + E.Message); end; end.
Comment récupérer les évenements rxChar dans ce cas la ?
Toute aide est la bienvenue
Partager