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 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
| {$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls,synaser,
Buttons, ExtCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
ConnectButton: TButton;
SendButton: TButton;
ComboBoxNumeroPort: TComboBox;
ComboBoxBauds: TComboBox;
Trame: TEdit;
Label1: TLabel;
terminal: TMemo;
Timer1: TTimer;
procedure ConnectButtonClick(Sender: TObject);
procedure SendButtonClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
PortCom: TBlockSerial;
TimeOut: integer;
const ligneMax = 30;
implementation
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
var l: string;
p: integer;
//lister les ports disponibles
begin
l := GetSerialPortNames;
if l >'' then repeat
begin
p := pos(',',l);
if p > 0 then
begin
form1.ComboBoxNumeroPort.Items.Add(copy(L,1,p-1));
delete(L,1,p);
end
else
form1.ComboBoxNumeroPort.Items.Add(L);
end;
until p = 0;
end;
procedure TForm1.ConnectButtonClick(Sender: TObject);
var bauds: integer;
const ligneMax = 30;
begin
PortCom := TBlockSerial.Create;
PortCom.RaiseExcept := true;
with ComboBoxNumeroPort do PortCom.Connect(Items[itemindex]);
with ComboBoxBauds do bauds := StrToInt(Items[itemindex]);
PortCom.Config(bauds,8,'N',0,false,false);
TimeOut := LigneMax*10000 div bauds;
timer1.enabled := true;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var ligne: string;
WD: integer;
// a l'ecoute du peripherique
begin
timer1.Enabled := false;
WD := PortCom.WaitingData;
if WD > 0 then terminal.Lines.Add(PortCom.Recvstring(TimeOut));
timer1.Enabled := true;
end;
procedure TForm1.SendButtonClick(Sender: TObject);
begin
PortCom.SendString(Trame.Text+CRLF);
end; |
Partager