13-10-2019, Saat: 14:20
cportlib adında bir comport componenti indirim ve kurdum.Bu arada delphi xe7 kullanıyorum.BU component ile ilgili örnek bir kod parçasıda buldum ama bende çalışmadı hatada vermedi.
Örnek Kod parçası
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, CPort, Vcl.StdCtrls, Vcl.ExtCtrls;
type
TFTerazi = class(TForm)
ComPort1: TComPort;
BtnGonder: TButton;
Timer1: TTimer;
Memo1: TMemo;
Label1: TLabel;
procedure BtnGonderClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
cRcvBuffer : PChar;
CharCntReceived : Integer;
{ Public declarations }
end;
var
FTerazi: TFTerazi;
implementation
{$R *.dfm}
procedure TFTerazi.BtnGonderClick(Sender: TObject);
begin
CharCntReceived := 0;
comport1.WriteStr('@00RD0000001552*'+#13+#0);
end;
procedure TFTerazi.FormCreate(Sender: TObject);
begin
cRcvBuffer := StrAlloc(512);
CharCntReceived := 0;
end;
procedure TFTerazi.Timer1Timer(Sender: TObject);
var x,y:integer;
a:string;
begin
x:=comport1.read(cRcvBuffer[CharCntReceived],512);
if x>0 then begin
a:='';
for y:=CharCntReceived to CharCntReceived+x-1 do a:=a+crcvbuffer[y];
Memo1.Lines.Add('Alınan : '+ a);
Label1.Caption:='Alınan : '+ a;
//Lines.Add ('Alınan : '+ a); //Denemek iiçin ana ekrana memo ekle
end;
CharCntReceived := CharCntReceived +x;
end;
.dfm dosyası
object ComPort1: TComPort
Connected = True
BaudRate = br9600
Port = 'COM1'
Parity.Bits = prEven
StopBits = sbTwoStopBits
DataBits = dbSeven
Events = [evRxChar, evTxEmpty, evRxFlag, evRing, evBreak, evCTS, evDSR, evError, evRLSD, evRx80Full]
FlowControl.OutCTSFlow = False
FlowControl.OutDSRFlow = False
FlowControl.ControlDTR = dtrDisable
FlowControl.ControlRTS = rtsDisable
FlowControl.XonXoffOut = False
FlowControl.XonXoffIn = False
Left = 48
Top = 32
end
Yardımcı olursanız sevinirim
Örnek Kod parçası
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, CPort, Vcl.StdCtrls, Vcl.ExtCtrls;
type
TFTerazi = class(TForm)
ComPort1: TComPort;
BtnGonder: TButton;
Timer1: TTimer;
Memo1: TMemo;
Label1: TLabel;
procedure BtnGonderClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
cRcvBuffer : PChar;
CharCntReceived : Integer;
{ Public declarations }
end;
var
FTerazi: TFTerazi;
implementation
{$R *.dfm}
procedure TFTerazi.BtnGonderClick(Sender: TObject);
begin
CharCntReceived := 0;
comport1.WriteStr('@00RD0000001552*'+#13+#0);
end;
procedure TFTerazi.FormCreate(Sender: TObject);
begin
cRcvBuffer := StrAlloc(512);
CharCntReceived := 0;
end;
procedure TFTerazi.Timer1Timer(Sender: TObject);
var x,y:integer;
a:string;
begin
x:=comport1.read(cRcvBuffer[CharCntReceived],512);
if x>0 then begin
a:='';
for y:=CharCntReceived to CharCntReceived+x-1 do a:=a+crcvbuffer[y];
Memo1.Lines.Add('Alınan : '+ a);
Label1.Caption:='Alınan : '+ a;
//Lines.Add ('Alınan : '+ a); //Denemek iiçin ana ekrana memo ekle
end;
CharCntReceived := CharCntReceived +x;
end;
.dfm dosyası
object ComPort1: TComPort
Connected = True
BaudRate = br9600
Port = 'COM1'
Parity.Bits = prEven
StopBits = sbTwoStopBits
DataBits = dbSeven
Events = [evRxChar, evTxEmpty, evRxFlag, evRing, evBreak, evCTS, evDSR, evError, evRLSD, evRx80Full]
FlowControl.OutCTSFlow = False
FlowControl.OutDSRFlow = False
FlowControl.ControlDTR = dtrDisable
FlowControl.ControlRTS = rtsDisable
FlowControl.XonXoffOut = False
FlowControl.XonXoffIn = False
Left = 48
Top = 32
end
Yardımcı olursanız sevinirim