0

我有一个 python 代码启动 CANalyzer 并在计时器线程内的 n 秒后停止它(由用户使用 tkinter GUI 定义)。这是代码:

pythoncom.CoInitialize()
CANalyzer = win32com.client.Dispatch('CANalyzer.Application')
self.CAN_id = pythoncom.CoMarshalInterThreadInterfaceInStream(pythoncom.IID_IDispatch, CANalyzer)

然后在线程中:

    def timer_Stop_reply(CAN_id):

        pythoncom.CoInitialize()
        CAN = win32com.client.Dispatch(
            pythoncom.CoGetInterfaceAndReleaseStream(CAN_id, pythoncom.IID_IDispatch)
        )
        CAN.Measurement.Stop()
        self.stopped_DSE=1
        pythoncom.CoUninitialize()
        print('\n=== Stopping Trace ===')

不幸的是,400 秒后有一种超时,事实上,我得到了这个错误(-2147417848, 'The object invoked has disconnected from its clients.', None, None)。我怎样才能避免这个问题?有没有类似保命的东西?我需要在测试中运行 CANalyzer 超过 10 分钟,所以这个错误真的很烦人。

谢谢

4

1 回答 1

0

好的,目前的解决方法是在测试时间> 400 s 时重新调度线程中的 CANalyzer。无论如何,如果有人找到更好的解决方案,我会很高兴阅读它!

于 2019-06-21T13:39:57.070 回答