안녕하세요..
카드단말기를 이용한 프로그램을 하고있습니다...
그런데 잘안돼네요...... 답변부탁합니다.
가장간단한 명령어만 질문 할께요..
데이타 FORMAT은
[ STX COMMAND ETX LRC ]입니다.
` STX : 0x02
` COMMAND : 1byte or the ASCII code ( 'X' , 'A' , 'K'여러종류..)
` ETX :0x03
` LRC : STX ~ ETX EXCLUSIVE OR (^)입니다..
시리얼 컴포넌트를 사용했구요 코딩은 아래와 같이 했는데
잘못된 COMMAND라는 메시지가 RETURN되네요.....
TForm1.ProcPr_Print
var
VL_pcKey : PChar;
begin
VL_pcKey := Char(2)+'X'+ Char(3) ; //무엇인가 빠진것같죠??
VSSComm321.WriteCommData(VL_pcKey,length(VL_pcKey));
end;
LRC가 뭔지 모르겠지만, 아마 CheckSum 같은데... 그걸 빠뜨리셨군요.
즉, 4바이트를 보내셔야 하는데 3바이트만 보내신 것같습니다.
아래와 같이 수정하신 후, 해보십시요.
TForm1.ProcPr_Print
var
VL_pcKey : PChar;
LRC: Byte;
begin
LRC := $02 xor ord('X');
LRC := LRC xor $03;
VL_pcKey := Char(2)+'X'+ Char(3) + Char(LRC);
VSSComm321.WriteCommData(VL_pcKey,length(VL_pcKey));
end;
제가 보기엔 캐릭터보단 바이트배열로 변환해서 보내는게 나을 듯 한데...
아무튼 도움이 되셨으면 좋겠군요.
> 안녕하세요..
> 카드단말기를 이용한 프로그램을 하고있습니다...
> 그런데 잘안돼네요...... 답변부탁합니다.
> 가장간단한 명령어만 질문 할께요..
>
> 데이타 FORMAT은
> [ STX COMMAND ETX LRC ]입니다.
> ` STX : 0x02
> ` COMMAND : 1byte or the ASCII code ( 'X' , 'A' , 'K'여러종류..)
> ` ETX :0x03
> ` LRC : STX ~ ETX EXCLUSIVE OR (^)입니다..
>
> 시리얼 컴포넌트를 사용했구요 코딩은 아래와 같이 했는데
> 잘못된 COMMAND라는 메시지가 RETURN되네요.....
>
> TForm1.ProcPr_Print
> var
> VL_pcKey : PChar;
> begin
>
> VL_pcKey := Char(2)+'X'+ Char(3) ; //무엇인가 빠진것같죠??
> VSSComm321.WriteCommData(VL_pcKey,length(VL_pcKey));
>
> end;