Q&A

  • ascii 값을 보낼때 이렇게 하면 되나요??
안녕하세요...

'A01', 'A02'... 와 같은 문자를 각각 바이트로 헥사값으로 변형시켜서
시리얼 포트를 통해 보내야 하는데요~~

제가 작성한 코드가 맞는건지 잘 모르겠네요~~

procedure TForm1.SendButtonClick(Sender: TObject);
var
  iCode, i : integer;
begin
  iCode := 0;
  str := 'A00';
  for i:=1 to length(str) do begin
    iCode := iCode + Byte(str[i]);
  end;

  ComPort.WriteStr(IntToStr(iCode) + #13#10)

  memo.lines.add(inttostr(iCode));
end;

이렇게 하면 제대로 가는 건가요???

iCode를 저렇게 + 시켜도 되는건지...

IntToStr로 변형시켜서 보내도 되는건지 모르겠네요...

memo에 출력시켜 보믄 그냥,,,  int값들이 더해져서 뿌려지는데...

저걸 받아서 "A01" 이라는걸 알까요??

1  COMMENTS
  • Profile
    바다를향해 2002.10.17 02:33
    procedure TForm1.SendButtonClick(Sender: TObject);
    begin
      str := 'A00';
      ComPort.WriteStr(str + #13#10)
      memo.lines.add(str);
    end;
    음...왜 헥사로 변환을 안하고 전송하냐믄요...
    받는 측에서 보낸 바이트 만큼 Hex로 받으면 되기 때문이죠
    기본적으로 ASCII로 보낸다면 받는쪽에서 Hex든 ASCII든
    받고 싶은데로 받으면 됩니다.

    만약 'A00' 라는 문자열을 $41$30$30 이라고 보낸다면
    받는쪽에서는 총바이트수를 3바이트가 아닌 9바이트로 받겠쬬...
    그렇게 되면 더 엉뚱한 값을 받지 않을까여..^^;;;
    근데 혹시 이렇게 받아야 한다면 ASCII를 Hex로 변환해서 String타입으로
    리턴 해주는 함수 하나만 만들면 되죠...이건 QnA에 있을텐데...

    그럼 즐프 하세여..^^;;