【问题标题】:ApdComport reporting ECommNotOpen when calling ProcessCommunicationsApdComport 在调用 ProcessCommunications 时报告 ECommNotOpen
【发布时间】:2010-12-08 15:22:56
【问题描述】:

我在 Delphi 2006 中有一个相当复杂的应用程序,它通过 ApdComport 在另一个线程中使用单独的表单进行通信。通信过去经常失败,我在循环中发现了对 Application.Processmessages 的几个调用,并改用 ApdComport.ProcessCommunications 重建它。

此时我真的不想重新排列代码以使用事件处理程序。

我还想加快通信速度,所以我调用 ProcessCommunications 直到出现 CharReady。有时 ProcessCommunications 会引发带有消息“ie_NOpen - 设备未打开”的 ECommNotOpen 异常。我无法在帮助或网络上找到相关信息。

我尝试将 ApdComport 放在新项目的新表单上,并经常调用它的 ProcessCommunications,但无法让它崩溃。但它并没有进行任何真正的交流。

我尝试在发送内容之前检查输出缓冲区是否有足够的可用空间,但它总是有并且问题仍然存在。

那么发生了什么?我应该去哪里看,我能做什么?

【问题讨论】:

    标签: delphi


    【解决方案1】:

    您使用的是 4.06 之前的版本吗?

    在此页面搜索“ie_NOpen”:http://www.turbocontrol.com/APRO406Fixes.htm

    这是提取的信息:

    修复3941状态机访问端口 关闭后

    状态机将访问端口 当停用写入 调度员日志。这可能会导致 ie_NOpen下的一些异常 状况。要修复,使 更改 AdStMach.pas 后 由 {!!.06}

    标记
    procedure TApdStateComPortSource.StateDeactivate (State : TApdCustomState);
    begin
      if FComPort.Open then                                                  {!!.06}
        FComPort.AddStringToLog (Name + ': Deactivate');
    end;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-18
      • 2012-04-23
      相关资源
      最近更新 更多