【发布时间】:2010-02-14 13:44:40
【问题描述】:
我已将我们的项目从 Delphi 7 移植到 Delphi 2010。添加了一些类型转换后,现在我的项目运行良好,所有功能都正常工作,除了绑定到 COM 端口和 MSCOMM ActiveX 组件的程序的主要功能。
它可以从 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 char,或者有没有办法将一个字节传递给 Mscomm 而无需转换为 char?
【问题讨论】:
-
你应该已经添加了一个
var部分,其中包含所有使用的数据类型。
标签: delphi serial-port char delphi-2010