Q&A

  • CPort 사용중 Hexa를 받아야 합니다. 고수분들의 리풀 부탁합니다.
CPort 사용중 Hexa를 받아야 합니다. 고수분들의 리풀 부탁합니다.

일반적으로는 이렇게 처리했습니다.

procedure TMain_Form.ComPortRxChar(Sender: TObject; Count: Integer);
var S: String;
       I: Integer;
begin
  ComPort.ReadStr(S, Count);
  J:= StrLen(PChar(S));
  StrPCopy(A, S);
  for I:= 0 to J do
  begin
    if A[I] = Char(#13) then
    begin
      Memo.Lines.Add(In_); //''문자열이 들어옴
      Break;
    end;
    if A[I] <> Char(#0) then
       In_:= In_ + A[I];
  end;
end;

이렇게 하면 문자는 처리됩니다.
그러나 16진수는 어떻게 할까요?
3  COMMENTS
  • Profile
    이성훈 2005.10.28 01:22
    var R_PK : array [0..1023] of Char

    ComPort.Read(R_PK, Count)

    for i := 0 to Count-1 do
       if R_PK[i] = #13 then begin
          Memo.Lines.Add(In_); //''문자열이 들어옴
          Break;
       end

    즐코하세요..


  • Profile
    장우석 2005.10.28 05:15
    ^0^  감사합니다.
    이성훈님 의 도움으로 해결 하였습니다.
    문자열만 주는 것으로 생각했는데...
    이런 방법도 있었군요^^
    Read(R_PK, Count)
    덕분에 엄청난 고뇌의 시간을 단축했습니다.

  • Profile
    한성우 2005.10.27 22:49
    저는 고수는 아니지만...

    질문의 내용으로 보아서...

        if A[I] = Char(#13) then

    위와 같은 비교문을... 캐랙터 형태가 아닌 16진수로 비교하고 싶다는 의미 인 듯 합니다..

    답은 간단합니다..

    IntToHex 함수를 사용하시면 됩니다..

    IntToHex (Integer (A[I], 2) 와 같은 방법을 쓰면..

    주어진 특정 캐랙터의 데이타가 16진수로 변환되어서 나타납니다..

    답변이 도움이 되었길 바랍니다.. ^^..