안녕하세요..
아래와같이 구현했고 StatusBar에 바이트값을 데이타들어오는만큼나타내고싶어요...?
그리고 특수기호 ^,#,$등이 나오는데 의미는 무엇인가요..
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, StdCtrls, CommInt, ExtCtrls;
type
TForm1 = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Memo1: TMemo;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Comm1: TComm;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Edit1: TEdit;
Edit2: TEdit;
StatusBar1: TStatusBar;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Comm1RxChar(Sender: TObject; Count: Integer);
private
LineData: String;
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
//Var
//Sb: Integer;
begin
Comm1.Open;
Memo1.Lines.add('통신시작 ' + Comm1.DeviceName);
//StatusBar1.Panels[1].Text := 'RX COUNT:'+ IntToStr(Sb) + 'Bytes';
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Comm1.Close;
Memo1.Lines.add('통신중지 ' + Comm1.DeviceName);
Panel1.Color:= clGreen;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Memo1.Lines.Clear;
Panel1.Color:= clGreen;
end;
procedure TForm1.Comm1RxChar(Sender: TObject; Count: Integer);
type
CharBuf = array[0..40000] of Char;
var
Buffer: ^CharBuf;
Bytes,nam: Integer;
begin
StatusBar1.Panels[1].Text := 'RX COUNT: '+ IntToStr(0) + 'Bytes';
Panel1.Tag:= Panel1.Tag Xor 1;
If Panel1.Tag = 1 Then Panel1.Color:= clRed
Else
Panel1.Color:= clGreen;
GetMem(Buffer, Comm1.ReadBufSize);
try
Memo1.Lines.add('');
Fillchar(Buffer^, Comm1.ReadBufSize, 0);
Bytes := Comm1.Read(Buffer^, Count);
if Bytes = -1 then
Memo1.Lines.add('Error reading incoming data...')
else
begin
Memo1.Lines.add('Reading ' + IntToStr(Bytes) + ' characters');
for nam := 0 to Bytes - 1 do
begin
case Buffer^[nam] of
#0, #10:;
#13: begin
Memo1.Lines.Add(LineData);
LineData := '';
end;
else
begin
LineData := LineData + CharBuf(Buffer^)[nam];
end;
end; //case
end; //for do
end;
Application.Processmessages;
Finally
FreeMem(Buffer);
end;
end;
end.
|