我已经将我们的项目从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