2014-07-08 1 views
-5

체크섬 계산에 도움이 필요합니다. 이 (! 나의 코드)하지만 사양 http://www.leupamed.at/?wpdmact=process&did=NC5ob3RsaW5rC# 2 바이트 계산 체크섬

private void CalcCheckSum(string msg, out byte checksum1, out byte checksum2) 
{ 
byte cs1 = 0; 
byte cs2 = 0; 
// Always use "\n" as line break when calculating the checksum. 
msg = msg.Replace("\r\n", "\n"); // Find and replace CR LF with LF 
msg = msg.Replace("\r", "\n"); // Find and replace CR with LF. 
for (int i = 0; i < msg.Length; i++) 
{ 
cs1 += (byte) msg[i]; 
cs2 += cs1; 
} 
checksum1 = cs1; 
checksum2 = cs2; 
} 

에서이 같은 패킷 만들어야합니다

<!--:Begin:Chksum:1:--><!--:Ack:Msg:3:0:--><!--:End:Chksum:1:184:62:-->

문자열 <!--:Ack:Msg:3:0:-->는 실제 데이터, 내가 두를 계산해야합니다 체크섬 바이트 (184 및 62)를 생성하고 이들을 최종 패킷에 삽입합니다 (위에서 볼 수 있듯이).

그러나 계산에서 내 결과가 10이고

var msg = "<!--:Ack:Msg:3:0:-->"; 
byte checksum1 = 0; 
byte checksum2 = 0; 
CalcCheckSum(msg, out checksum1, out checksum2); 

(62) 지금은 어떻게 올바른 체크섬 값을 계산하지 않습니다. 응답에 대한 체크섬입니다. 요청을 확인하는 것이 아닙니다. 낮은 평판 때문에 이미지를 업로드 할 수 없으므로 사양의 마지막 줄을보십시오. https://drive.google.com/file/d/0B_Gs9q9SJteadVRwSVc1a2FmUTg/edit?usp=sharing 이 확인 메시지는 요청에 따라 독립적입니다. 요청 메시지 ID 3에 대한 응답이어야합니다.

솔루션? 체크섬 계산 후

:

checksum1 = 256 - 이제, 문제없이 통신 = 62

장치 (10 + 62) = 184

checksum2.

+1

어쩌면 구문을 설명하고 정확히 무엇이 문제인지 말해야합니다. 샘플 입출력은 많은 도움이됩니다. –

+0

CalcCheckSum은 2 바이트의 문자열을 계산해야하는 함수입니다. 은 계산 된 문자열이지만 문서에서 예제로 출력 바이트 (cs1 = 184, cs2 = 62)를 사용할 수 없습니다. – bisi

+1

나는 아직도 그것을 얻지 않는다. –

답변

0

체크섬을 계산 한 후 :

checksum1 = 256 - (10 + 62) = 184

checksum2 = 62

아마이 문제도 특정 아무도 체크섬이 유형의 경험이없는 계산. 문제없이 통신하는 장치입니다.