지나가는사람 님이 쓰신 글 :
: ^ 포인터 변수를 가리킬때 사용하는 겁니다...
: # 아스키 코드를 사용할때 쓰이죠
: $ 16진수를 표시할때 사용 하지요
:
: 남바다 님이 쓰신 글 :
: : 안녕하세요..
: :
: : 아래와같이 구현했고 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.
: :
|