Python调用INCA的COM接口-关于在线程中调用GetDoublePhysValue方法失败,退出线程的问题

继INCA的API开发。

上一次线程卡主线程的问题之后,又遇上了新的问题。这次AI也搞不定了。

直接上代码

def GetVeSlewButtonclik(self):
        self.Vecalib = self.VEcaliblabel.get()

        self.VEerrslewvalue = self.opendexp.GetCalibrationValue(self.Vecalib)
        
        threading.Thread(target=self.GetVeslewCalibValue, daemon=True).start()
        
    def GetVeslewCalibValue(self):

        while True:
            try:
                print("start")#这句可以执行,到下一句代码线程退出
                calibration_value = self.VEerrslewvalue.GetDoublePhysValue()#这句放在线程外可以执行,放在线程里不可以
                print(str(calibration_value))
                self.after(0, self.update_calibration_value, calibration_value)
                time.sleep(0.5)

            except Exception as e:
                self.after(0, self.set_label, self.VEslewshow, str(e))
                break

    def update_calibration_value(self, value):
        self.value_VEerrslew.set(round(value,3))
        self.VEslewshow.update_idletasks()

在程序执行后,输出一个测试标记start就结束了

下一句获取标定值对象的物理值属性失败。

有趣的是,这两句:

self.Veerr = self.VEerrlabel.get()

 self.VEerrvalue = self.opendexp.GetCalibrationValue(self.Veerr)

放在线程内,下面这句:

Veerr_value = self.VEerrvalue.GetDoublePhysValue()

就可以正常执行了。

抑或是把这句:

Veerr_value = self.VEerrvalue.GetDoublePhysValue()

放在线程外也可以正常执行

如下图:左边红色为可正常调运API的代码。

本想将获取API对象的的代码放在线程循环之外,以优化性能,没想到获取对象与获取对象的值这不能分离。

脑袋空空荡荡,问题奇奇怪怪

抑或是我对类的运用有问题?类下不同方法的参数传递出现了故障?

头秃

反正问题是解决哩。如有大神路过,望不吝赐教!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值