Q&A

  • 궁궁한게 있어서...제발... 꼭 봐주세요..
제가 TComPort라는 컴포넌트를 사용해서

컴포트로 통신하는 프로그램을 하나 만들고 있습니다.

그런데 이상한게 있어서...

버튼을 누르면 포트에 문자열을 씁니다...

procedure TfrmComMain.btnSendClick(Sender: TObject);

var

Str: String;

nI : Integer;

begin

Str := Trim(edData.Text);



if Length(Str) < 1 then

begin

edData.SetFocus;

exit;

end;



edData:= chr(2) + intToStr(Length(Str)) + Str + chr(3);



edTxData.SetFocus;

end;



그리고 나서 컴포트에 들어 온 데이타를 읽습니다..

procedure TfrmComMain.cpCommRxChar(Sender: TObject; Count: Integer);

var

Str : String;

nTx_Data_Len : Integer;

begin



cpComm.ReadStr(Str, Count);



lbxRxData.Items.add(Str);



ShowMessage(Copy(Str1, 0, 1));

ShowMessage(Copy(Str1, 1, 1));

end;



그런데 컴포트에 들어온 데이타를 한자씩 읽어 보여주면

첫번째와 두번째가 왜 똑같이 나오지요?



ReadStr함수는 다음과 같습니다.

// perform synchronous read operation

function TCustomComPort.ReadStr(var Str: string; Count: Integer): Integer;

var

AsyncPtr: PAsync;

begin

InitAsync(AsyncPtr);

try

ReadStrAsync(Str, Count, AsyncPtr);

Result := WaitForAsync(AsyncPtr);

SetLength(Str, Result);

finally

DoneAsync(AsyncPtr);

end;

end;



제발..



0  COMMENTS