我已經將我們的項目從Delphi 7移植到了Delphi 2010中。現在添加了一些類型轉換後,我的項目運行良好,所有功能都正常工作,除了綁定到COM端口和MSCOMM ActiveX組件的程序的主要功能外。MsComm ActiveX是否與Delphi 2010兼容?
它可以讀取和寫入COM端口,但它似乎有什麼問題,因爲連接到端口的設備返回錯誤代碼,雖然它可以在Delphi7中使用相同的代碼正確工作。在下面的代碼中,在向設備發送一些字節之後,會發送一個字節作爲校驗和。另一方面,如果接收到的校驗和與計算的校驗和設備相等返回「O」,則設備獲取字節並使用相同的公式計算校驗和,否則返回「E」作爲錯誤。 OutCom
被定義爲Olevariant。
OutCom := chr(ord(Fbyte));
Mscomm1.Output := OutCom;
OutCom := chr(ord(Sbyte));
Mscomm1.Output := OutCom;
OutCom := chr(ord(DigitOne));
Mscomm1.Output := OutCom;
OutCom := chr(ord(DigitTwo));
Mscomm1.Output := OutCom;
OutCom := chr(ord(DigitThree));
Mscomm1.Output := OutCom;
SumOfBits := (System_No - 1) + Fbyte + Sbyte + DigitOne + DigitTwo + DigitThree;
CheckSum := ((SumOfBits mod 256) xor 255) + 1;
OutCom := chr(ord(CheckSum));
Mscomm1.Output := OutCom;
OutCom := 'E';
Mscomm1.Output := OutCom;
OutCom := 'N';
Mscomm1.Output := OutCom;
Delphi 2010中的相同代碼返回不同的結果。我猜測,chr()函數返回的結果與Delphi7不同。如果這是真的,那麼我怎麼能得到一個字節的Ascii字符或有沒有辦法將一個字節傳遞給Mscomm而不轉換爲字符?
你應該添加一個'var'節以及所有使用的數據類型。 – mghie 2010-02-14 14:19:33