Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[8066] 종택님 봐주세...요
남바다 [syscap2000] 563 읽음    2002-04-13 09:59
안녕하세요..

아래와같이 구현했고 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.

+ -

관련 글 리스트
8066 종택님 봐주세...요 남바다 563 2002/04/13
8068     Re:종택님 봐주세...요 지나가는사람 660 2002/04/15
8077         Re:Re:도움을 주신분께.....감사드리는맘으로 꾸벅^^ 남바다 644 2002/04/18
8067     Re: 제가, 도움이 못되네요.. 류종택 597 2002/04/13
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.