2014-03-13 5 views
1

16 진수 패키지 만받는 Linux 장치에서 엡손 tm-t88iv 열전 사 프린터로 낮은 수준의 통신을 프로그래밍합니다. 체크섬이 어떻게 만들어 졌는지 이해하려고 시도한 설명서를 읽었지만 다시 만들 수는 없습니다.4 바이트 체크섬, sum32 알고리즘

설명서에는 체크섬이 전송 된 패키지의 모든 데이터의 2 바이트 합계를 나타내는 4 바이트라고되어 있습니다.

저는 현재 다른 프로그램이 설치된 Windows 컴퓨터의 포트를 들음으로써 발견 된 4 가지 작동 예제가 있습니다. 마지막 4 자리의 16 진수는 체크섬입니다 (03은 데이터의 끝을 나타내며 설명서에 따라 체크섬 계산에 포함됩니다).

02 AC 00 01 1C 00 00 03 30 30 43 45 
02 AC 00 00 1C 80 80 1C 00 00 1C 00 00 1C 03 30 32 32 31 
02 AD 07 01 1C 00 00 1C 31 30 03 30 31 35 33 
02 AD 00 00 1C 80 80 1C 00 00 1C 00 00 1C 03 30 32 32 32 

어딘가에 sum32 알고리즘이 있지만 그 예제 나 프로그래밍 방법을 찾을 수 없습니다.

감사합니다.

답변

1

와우, 이건 *** 알고리즘입니다! 다른 사람이 자신이 엡손의 끔찍한 낮은 수준의 통신 매뉴얼을 이해하려고 노력 발견하면,이 체크섬을 수행하는 방법이다 :

  1. 체크섬 기반은 모든 데이터 헥사 30 30 30 30
  2. 합계입니다 (예 : 02 + 89 + 00 + 00 + 1C + 80 + 80 + 1C + 00 + 01 + 1C + 09 + 0C + 1C + 03 = 214)
  3. 그런 다음 결과 숫자를 숫자로 분리하십시오 문자는 값에 1을 더합니다 (예 : B2는 2 | 1 | 4).
  4. 오른쪽에서 왼쪽으로 시작하는 번호로 체크섬 기본 번호를 합합니다 (30 32 31 34의 체크섬이 됨).

참고 : 그 작품은 완벽하지만 어떤 이유로 나는 위의 게시 된 예들이 모든 프린터 응답하지만, 그것은 하드웨어 문제와 모자를 가지고 약간 이후로 ... 너무 일치하지 않는 것 기술 지원에 의해 재 형식화되었으므로 어쩌면 고쳐 졌을 수도 있습니다.

누군가 도움이되기를 바랍니다.

+0

답변을 게시 해 주셔서 감사합니다. – problemPotato

+0

이것을 보는 또 다른 방법은 결과 합계를 창안하고 그 각 숫자를 ASCII 문자로 해석 한 다음 결과의 합계와 16 진수로 변환하는 네 개의 ASCII 0입니다. – BVJ