我需要幫助完成校驗和計算。 這是(不是我的代碼!)而從規格 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和62
var msg = "<!--:Ack:Msg:3:0:-->";
byte checksum1 = 0;
byte checksum2 = 0;
CalcCheckSum(msg, out checksum1, out checksum2);
我不現在如何計算正確的校驗值。 這是響應的校驗和。不用於驗證請求。 由於名譽較低,我無法上傳圖片,因此請查看規格中的最後一行:https://drive.google.com/file/d/0B_Gs9q9SJteadVRwSVc1a2FmUTg/edit?usp=sharing 此確認消息根據要求是獨立的。只有它必須是對請求消息ID 3的響應。
解決方案?
計算校驗和之後:
校驗碼1 = 256 - (10 + 62)= 184
校驗碼2 = 62
設備沒有問題的通信,現在。
也許你應該解釋一下這個語法,告訴我們什麼是確切的問題。一個樣本輸入和輸出將會有很大幫助。 –
CalcCheckSum是必須以2個字節計算字符串的函數。 <! - :Ack:Msg:3:0: - >是一個計算出來的字符串,但我不能將輸出字節(cs1 = 184,cs2 = 62)作爲文檔中的示例。 – bisi
我還是不明白。 –