제가 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;
제발..