Comport로 데이터 전송하는 프로그램 공부중입니다.
C에서 아래와 같은 명령을 델파이로 변경하고자 합니다. 어떻게 하는거죠?
ASCII_STX = 0x01;
ASC__ETX = 0x03;
sprintf(Data,"%c%c%c",ASC_II_STX, 'S', ASC__ETX);
=> Delphi로 어떻게 하는거죠? Delphi에서도 Sprintf라는 명령이 있나요?
Check_Sum_Proc(Char Buff[])
{
char cs, add_char;
len = strlen(Buff);
for(i = 0; i< len; i++) add_char += Buff[i];
cs = add_char % 256;
return cs;
}
Check Sum을 구하는 부분입니다. %연산자가 Delphi에서 mod던데... char형으로는
mod 연산자가 사용되질 않습니다. 아시는분은 도와주시기를 부탁드립니다.
흠~~ API함수로 wsprintf, wvsprintf가 있구요. 걍 쉽게 Format함수를 사용하면됩니다.
const
ASCII_STX = $01;
ASC__ETX = $03;
begin
Data := Format('%s%s%s', [Char(ASCII_STX), S, Char(ASC__ETX)]);
end;
function Check_Sum_Proc(Buff: PChar): Char;
var
cs, add_char: Char;
begin
Len := StrLen(Buff);
for I := 0 to (Len - 1) do
Inc(add_char, Byte(Buff[i]));
cs := Char(Byte(add_char) mod 256);
Result := cs;
end;
흠~~ 뭐하는지는 모르겠지만 델파이로 바꾸면 위와 같이 됩니다...
cs = add_char % 256; <== 근데 cs가 Char타입인데... 256으로 나누나마나 그 나머지
값은 변합없는데 왜 해주는지???
^^ 항상 즐코하세요...
델파이 wrote:
> Comport로 데이터 전송하는 프로그램 공부중입니다.
> C에서 아래와 같은 명령을 델파이로 변경하고자 합니다. 어떻게 하는거죠?
>
> ASCII_STX = 0x01;
> ASC__ETX = 0x03;
>
> sprintf(Data,"%c%c%c",ASC_II_STX, 'S', ASC__ETX);
> => Delphi로 어떻게 하는거죠? Delphi에서도 Sprintf라는 명령이 있나요?
>
>
> Check_Sum_Proc(Char Buff[])
> {
> char cs, add_char;
>
> len = strlen(Buff);
>
> for(i = 0; i< len; i++) add_char += Buff[i];
>
> cs = add_char % 256;
>
> return cs;
> }
>
>
> Check Sum을 구하는 부분입니다. %연산자가 Delphi에서 mod던데... char형으로는
> mod 연산자가 사용되질 않습니다. 아시는분은 도와주시기를 부탁드립니다.
>
>