델파이를 시작한지 얼마안되는 초보입니다. 다름이아니오라 시리얼문제로 이렇게 질문올립니다.
Comport2.0 빌더 컴포넌트로는 여러가지를 해보긴했습니다.
이번에 이 ApdComPort를 사용하여 꼭 해야하는 이유가있습니다. 그래서 이렇게 이 컴포넌트로
프로그램을 하려하는데 잘 안되네요.
고수님들의 도움이 필요합니다. ㅠ.ㅠ 도와주세요
밑에소스는 컴포넌트 예제소스로있는 Excom0을 사용하여 테스트를 해보았습니다.
하지만 일단 컴포트가 연결은 되는것같은데요.
시리얼로 오는 문자를 읽어서 메모장에 추가를 못하네요
PIC칩에 시리얼로 '1'이란 문자를 3초간격으로 계속 뿌리게 하였습니다.
PC에서는 이거를 읽어서 메모장에 뿌릴려구하구요
실행시 TriggerAvil Event로 들어오질 않네요. 그래서 PIC에서 오는 신호가 이상한가 해서 터미널로 확인하면 3초간격으로 1씩 찍히는것을 확인하였습니다.
<com1,4800,데이터 비트 : 8,패리티 : 없음,stop : 1 ,흐름제어 :없음>
코드는 다음과 같습니다.
* 윈도우 제어판에서 com1포트 설정은 위와 같이 했구요. 설정을 위와같이 할때 터미널에서는 됩니다.
unit Excom0;
interface
uses
WinTypes, WinProcs, SysUtils, Messages, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, AdPort, OoMisc;
type
TForm1 = class(TForm)
ApdComPort1: TApdComPort;
Memo1: TMemo;
Button1: TButton;
procedure ApdComPort1TriggerAvail(CP: TObject; Count: Word);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.ApdComPort1TriggerAvail(CP: TObject; Count: Word);
var
I : Word;
C : Char;
S : String;
begin
S := '';
for I := 1 to Count do begin
C := ApdComPort1.GetChar;
S := S + C;
end;
Memo1.Lines.Add(S);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ApdComport1.ComNumber := 1; // 컴포트 지정
if not ApdComport1.Open then
ApdComport1.Open := true
else
Memo1.Lines.Add('1 오픈되어 있는 상태');
end;
end.
|