2017-01-20 101 views
0

我有一個支票打印機,我想通過COM端口和經營德爾福7連接。COM端口命令CRC XOR

我有與串行端口監視器中提取一個命令:

STX 「PIRI(781」 FS NULL ETX 「0B」至極是02 50 49 52 49 28 37 38 31 1C 00 03 30 42六角

的手冊說以下內容:

CRC(它是ETX後的最後兩位數字) - 分組校驗和它 通過以下算法計算:執行XOR包含ETX的塊的每個 字節通過排除STX。 校驗和的數據佔用兩個字節,是十六進制計算系統中數字的 的符號表示形式。

我試過一個ONLINE CRC計算器,並返回一個1B結果和一個27數字。

  • 怎麼辦?對於「PIRI(781」 FS NULL ETX應該0B
+1

停止使用「在線CRC計算器「,他們都沒有實現這種校驗和方法,並開始編寫代碼。 –

+0

@HansPassant我想知道從哪裏開始,我必須找到每個符號的字節,然後進行異或運算嗎? – SovereignSun

回答

3

文檔錯誤地識別的檢查值作爲CRC,它不是,它只是異或的所提到的字節。 50 49 52 49 28 37 38 31 1c 00 03是0b,然後將0b轉換爲十六進制(大寫B,即0B),並得到30 42.

+0

對。 但我該怎麼做?我一直在網上計算器保持1B。 – SovereignSun

+0

您只需使用您正在使用的任何語言的排他或操作。在Delphi中簡單的「xor」。正如我所說,這不是CRC_。您不能使用在線CRC計算器來計算不是CRC的內容。 –