얼마전에 RS232C 기능에 대해 질문했던 이용벽입니다.
소개해 주신 <델파이 정복>을 정독하고 이 사이트에 공개된 Object를 여러개 받아서 시행착오를 거듭한 끝에
드디어 기본적인 전송과 수신을 할 수 있게 되었습니다. 며칠간의 어둠에서 빛을 얻은 기분입니다.
혹시나 같은 고민을 하시는 분이 있으시면 도움이 될까해서 소스를 올려드립니다.
아직 초보적인 상태이지만 초기에 기능확인에 도움이 될것이라 믿습니다.
TComm이란 Object를 사용했는데 원래는 Component로 등록하고 사용하는 것이었습니다.
그런데 몇번 테스트하고 지우고 보니 다시 Component 등록이 안되더군요.
할수없이 Object로 사용하는 것을 시도했는데 다행히 통했습니다.
그래서 TCommV2로 이름을 임의로 바꾸었습니다. Version2.0이라는 의미입니다.(원래는 1.1version)
Register부분만 //로 정지시켰으므로 필요하신 분은 복귀시켜서 사용하십시오.
한가지 질문이 있습니다. 프로그램 내에 아래롸 같은 Procedure가 있는데요
Count라는 변수가 어떤 것인지 아직도 잘 이해가 안됩니다.
아실 수 있으면 설명 부탁드립니다.
도와주신 분들께 다시 한번 감사드립니다.
procedure TForm1.CommRead(Sender: TObject; Count: Word); {Read}
var
Buff: array[0..1023] of Char;
RLen: Word;
I: Integer;
Str: String;
begin
Comm1.ReceiveBuf(Buff[0], Count, RLen);
Str := '';
// for I := 0 to RLen - 1 do begin
for I := 0 to BufShow - 1 do begin
if (Buff[I] < ' ') or (Buff[I] >= #127) then
Str := Str + '(#' + IntToHex(Byte(Buff[I]), 2) + ') '
else
Str := Str + String(Buff[I]) + ' ';
end;
Memo1.SelStart := Length(Memo1.Text);
Memo1.SelText := String(Str);
Memo1.Lines.Add('');
Memo1.Lines.Add('');
end;
TComm이란 컴포넌트를 안써봤지만... 아래 코드에서 count는 읽어올 데이터의 최대 갯수이고, RLen은 읽은 갯수겠네요...
Comm1.ReceiveBuf(Buff[0], Count, RLen);
읽을 수 있는 데이터가 1000개 있을 때, count가 100이면 100개를 읽어와서 RLen=100이 될테고, count가 2000이면 1000개를 다 읽어와서 RLen=1000 이 되겠죠.