我使用windows 7、64位SP1和TP异步V4.07,并有以下问题:我有两个Com端口,Com11和Com18。我在表单中添加了以下组件:

我在ApdComPort2 (Com18)上打开一个Com端口,它工作正常,没有问题。ApdDataPacket2检测数据包终止符,所显示的结果就是所期望的结果。Com11和Com18都工作得很好。现在,如果我使用Com11打开另一个Com端口( ApdComPort1 ),则会出现访问冲突:

在AdPacket模块中生成错误的代码如下:
procedure TApdDataPacketManager.EnablePackets;
var
i : integer;
begin
for i := 0 to pred(PacketList.Count) do
with TApdDataPacket(PacketList[i]) do
if Enabled then
Enable;
end;在遍历列表时,PacketList.Count似乎是问题所在,但我无法理解原因:

请注意,ApdComPort2对Com11和Com18都没有问题。如果我删除了Apd2组件,那么Apd1将按预期工作。当我试图同时使用两个(或更多) Apd组件时,问题就出现了。是否有人有建议或可以推荐一个组件同时使用多个串行口?
发布于 2022-10-22 23:39:23
关于Turbo异步专业组件的一些注意事项:
在使用异步组件时,如何将组件添加到表单中是非常重要的。如果您没有按照正确的顺序和正确的方式执行,那么如果您使用多个串行端口,它将无法工作。你实际上会得到一个访问违规。例如,如果在下面添加组件,就必须这样做:

向表单添加一个ApdComPort2
如前所述,在执行此操作时,它可以在ApdDatapacket中使用两个串行端口。现在我没有任何非法进入的机会。我已经测试了多达4个端口,它也工作。
https://stackoverflow.com/questions/74165284
复制相似问题