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
[10809] Re:Re:ApdComPort를 사용하여 가장기본적인 read/write를 할려구합니다.
이주원 [take808] 3060 읽음    2006-07-25 09:23
답변해주셔서 감사합니다.  이벤트 핸들러 문제는 아니었습니다. ^^;  설정을 잘못했던듯합니다. 여러가지 관련 글들을
읽으면서 해결 할 수 있었습니다.
저도 처음 접하는 컴포넌트라 어떻게 할지 막연 했습니다. 예제 프로그램들도 하나 씩 해봐도 모르겠더라구요
저처럼 그런분들도 있지않을까 해서 그나마 제가 된 소스코드를 붙이겠습니다.
필요한분이 있지 않을 까 해서요..

이벤트를 여러가지로 테스트해보았습니다.. OnTrigger, OnTriggerAvail, OnTriggerData......
-----------------------------------------------------------------------------------------------
unit uSerial;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, OoMisc, AdPort, AdPager;

type
  TForm1 = class(TForm)
    ApdComPort1: TApdComPort;
    btTest: TButton;
    Memo1: TMemo;
    Edit1: TEdit;
    Button1: TButton;
    procedure btTestClick(Sender: TObject);
    procedure ApdComPort1TriggerAvail(CP: TObject; Count: Word);
    procedure Button1Click(Sender: TObject);
    procedure ApdComPort1TriggerData(CP: TObject; TriggerHandle: Word);
    procedure ApdComPort1PortOpen(Sender: TObject);
    procedure ApdComPort1PortClose(Sender: TObject);
    procedure ApdComPort1Trigger(CP: TObject; Msg, TriggerHandle,
      Data: Word);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  SOpen: Boolean;
implementation

{$R *.dfm}


procedure TForm1.btTestClick(Sender: TObject);
begin
    //ApdComPort1.Output := 'ATZ'^M;
    if not Sopen then begin
      ApdComPort1.ComNumber := 1;
      ApdComPort1.Baud := 9600;
      ApdComPort1.Parity := pNone;
      ApdComPort1.DataBits := 8;
      ApdComPort1.StopBits := 1;
      ApdComPort1.Open := True;
    end
    else
      ApdComPort1.Open := False;

end;

procedure TForm1.ApdComPort1TriggerAvail(CP: TObject; Count: Word);
var
    i : integer;
    s : array[1..256]of string;
begin
    //Memo1.Lines.Add(IntToStr(ApdComPort1.InBuffUsed));
    for i := 1 to ApdComPort1.InBuffUsed do begin
        s[i] := ApdComPort1.GetChar;

        Memo1.Text := Memo1.Text+S[i];
    end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
    ApdComPort1.Output := 'dd';
end;
procedure TForm1.ApdComPort1TriggerData(CP: TObject; TriggerHandle: Word);
begin
    ShowMessage('bbb');
end;

procedure TForm1.ApdComPort1PortOpen(Sender: TObject);
begin
    ShowMessage('열렸음');
    btTest.Caption := 'Close';
    SOpen := True;
end;

procedure TForm1.ApdComPort1PortClose(Sender: TObject);
begin
    ShowMessage('닫혔음');
    btTest.Caption := 'Open';
    SOpen := False;

end;

procedure TForm1.ApdComPort1Trigger(CP: TObject; Msg, TriggerHandle,
  Data: Word);
begin
    MessageDlg('들어왔당', mtInformation, [mbOK], 0);
end;

end.
-------------------------------------------------------------------------------------------
ayh님 답변 감사합니다. ^^; 앞으로도 모르는게 있으면 많은 도움 부탁드려요.. 보다시피 초보라서요 ^^;


-------------------------------------------------------------------------------------------
ayh 님이 쓰신 글 :
: 코드 상에는 문제가 없어보입니다.
:
: 제가 언뜻 생각할 수 있는 유일한 가능성은 2가지입니다.
:
: ApdComPort1TriggerAvail 함수가 이벤트 핸들러로 등록되어 있지 않은 경우 또는 결과인 읽어온 문자열이 특수문자를 포함해서 원하는 형태로 출력이 되지 않는 경우입니다.
:
: ApdComPort1 객체의 TriggerAvail 이벤트 핸들러로 ApdComPort1TriggerAvail가 등록되어 있는지 다시 한 번 확인해보시면 좋을 듯 합니다.
:
:
:

+ -

관련 글 리스트
10791 ApdComPort를 사용하여 가장기본적인 read/write를 할려구합니다. 이주원 1908 2006/07/10
10807     Re:ApdComPort를 사용하여 가장기본적인 read/write를 할려구합니다. ayh 3321 2006/07/25
10809         Re:Re:ApdComPort를 사용하여 가장기본적인 read/write를 할려구합니다. 이주원 3060 2006/07/25
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.