PyQT4 QAxWidget的参数工作不一致

时间:2015-06-29 00:56:22

标签: python com pyqt pyqt4 activex

我正试图通过PyQT4控制Thorlabs APT ActiveX电机。这是我初始化类的最简单版本,受到herehere代码的启发。

import sys

import comtypes.gen.MG17MotorLib as APTMotorLib

from PyQt4 import QtGui
from PyQt4 import QAxContainer

channel1 = APTMotorLib.CHAN1_ID

class APTMotor(QAxContainer.QAxWidget):
    def __init__(self, parent):
        self.parent = parent
        super(APTMotor, self).__init__()
        self.setControl('MGMOTOR.MGMotorCtrl.1')
        #motor specific initialization
        self.SetHWSerialNum(my_serial_number)
        self.StartCtrl()
        self.EnableHWChannel(chanel1)

app = QtGui.QApplication(sys.argv)
motor = APTMotor(app)

我的motor对象在很多方面都有效。例如,以下所有内容都会返回我期望的值。

motor.GetStageAxisInfo_MinPos(channel1)
motor.GetStageAxisInfo_MaxPos(channel1)
motor.GetPosition_Position(channel1)
motor.GetStatusBits_Bits(channel1)

但是,将参数传递给我的motor对象的方法并不能正常工作。例如,考虑方法MoveAbsoluteEx(int lChanID, double fAbsPosCh1, double fAbsPosCh2, bool bWait);

我可以毫无错误地调用motor.MoveAbsoluteEx(channel1, destination, 0., True)(我的电机没有通道2)。实际上电机确实在移动。问题是,无论destination的值如何,我的电机总是移动到零毫米。

我从APT事件日志中知道实际发送的命令 为零。相关输出为CMGMotorCtrl::MoveAbsoluteEx(0,0.0000,0.0000,1)。整数是正确的(当我更改python变量时更改),但浮点数总是传递为零。

0 个答案:

没有答案