안녕하세요...
'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" 이라는걸 알까요??
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에 있을텐데...
그럼 즐프 하세여..^^;;