Q&A

  • 시리얼통신고수님은 답변부탁합니다.
안녕하세요..

카드단말기를 이용한 프로그램을 하고있습니다...

그런데 잘안돼네요...... 답변부탁합니다.

가장간단한 명령어만 질문 할께요..



데이타 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;

2  COMMENTS
  • Profile
    이동근 2001.03.06 19:25
    고수는 아니지만 빠진게 보여서 몇글자 써봅니다.

    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;

  • Profile
    전진운 2001.03.06 19:14
    안녕하세요

    말 하신 부분중

    STX + COMMAND + ETX + LRC

    > VL_pcKey := Char(2)+'X'+ Char(3) ; //무엇인가 빠진것같죠 ++> LCR



    즉 LCR 부분이 빠진것 같습니다

    LCR 규칙은 메뉴얼이나 업체에 물어 보면 알겠죠..

    보통 전체를 XOR하죠 아마~~

    그럼 이만.









    델초보 wrote:

    > 안녕하세요..

    > 카드단말기를 이용한 프로그램을 하고있습니다...

    > 그런데 잘안돼네요...... 답변부탁합니다.

    > 가장간단한 명령어만 질문 할께요..

    >

    > 데이타 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;