문제

.NET의 Serialport 클래스를 통해 직렬을 통해 장치와 통신하고 있으며 타사 장치 사양 요구 사항을 기반으로 "블록 점검 문자"를 계산해야합니다. 내가 말하는 유일한 정보는 그것이 독점 또는 작동 (XOR) 그리고 모든 캐릭터에 걸쳐 수행해야합니다.

그렇다면 문자열 "Bob, 001"이 있다면 BCC를 어떻게 계산합니까?

도움이 되었습니까?

해결책

아마도 캐릭터 기반 XOR 일 것입니다. 확인하려면 샘플을 가져와야하지만 대부분의 체크섬은 일반적으로 0입니다.

따라서 XOR 체크섬의 경우 패킷이 있습니다.

Bob,001X

여기서 X는 체크섬이고, 모든 캐릭터를 함께 xor하면 0이 될 것입니다.

따라서 X를 해결하려면 "Bob, 001"의 모든 문자 만 XOR입니다. 그것은 n xor n이 항상 0이라는 사실 때문에 N.

이제 X가 알파 너머리 인 경우 X는 두 개의 16 진 문자 일 수 있습니다. 그렇기 때문에 샘플 데이터 (따라서 작업 할 수 있음) 또는 적절한 사양 (장치 제조업체가 제공해야 함)이 필요한 이유입니다.

~이다 당신이 말하는 실제 장치? 웹에 어떻게 해야하는지를 보여주는 정보가있을 수 있습니다.

업데이트 기반 :

Amadeus Hospitality PMS 장치입니다. 그들이 말하는 것은 모든 숯을 통해 수행되어야한다는 것입니다. STX 및 ETX 제외.

확인하려면 일부 샘플 데이터를 가져와야하지만 데이터 스트림이 다음과 같은 것일 수 있습니다.

        Running
Data     ChkSum
======  =======
STX 02
B   42     42
o   6f     2d
b   62     4f
,   2c     63
0   30     53
0   30     63
1   31     52
4   52     00
ETX 03

체크섬의 위치는 다를 수 있으며 실제로 계산은 훨씬 적을 가능성이 낮지 만 계산도 다를 수 있습니다. 샘플 데이터 나 공급 업체의 추가 정보 없이는 훨씬 더 많은 것을 수행 할 수 없다고 생각합니다. 인터넷에 대한 커서 검색은 기술적 인 세부 사항이 없었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top