답변해주셔서 감사합니다. 이벤트 핸들러 문제는 아니었습니다. ^^; 설정을 잘못했던듯합니다. 여러가지 관련 글들을
읽으면서 해결 할 수 있었습니다.
저도 처음 접하는 컴포넌트라 어떻게 할지 막연 했습니다. 예제 프로그램들도 하나 씩 해봐도 모르겠더라구요
저처럼 그런분들도 있지않을까 해서 그나마 제가 된 소스코드를 붙이겠습니다.
필요한분이 있지 않을 까 해서요..
이벤트를 여러가지로 테스트해보았습니다.. 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가 등록되어 있는지 다시 한 번 확인해보시면 좋을 듯 합니다.
:
:
:
|