这里是Python新手。所以,请原谅之前有人以不同的形式问过这个问题。在
我尝试使用win32com模块在Python中复制以下perl代码片段。此代码段由Qualcomm提供,以便于工具的自动化。在
use Win32::OLE;
use Win32::OLE::Variant;
$prod_id = "QPSTAtmnServer.Application"; # AppId for the Automation server.
eval{ $qpst = Win32::OLE->GetActiveObject($prod_id)}; # Attempt to use a running instance.
die "$prod_id not installed" if $@;
unless (defined $qpst) { $qpst = Win32::OLE->new($prod_id, sub {$_[0]->Quit;}) or die "Cannot start $prod_id";} # Start a new instance. Call Quit when $qpst set to undef or script exits.
if (defined $qpst)
{
$port = $qpst->GetPort("COM30001");
}
到目前为止,我拥有的python代码块如下:
^{pr2}$它会抛出以下错误:
回溯(最近一次呼叫):
文件”xxxx.py公司“,第20行,模块
port = qpst.GetPort('30001')
TypeError:“NoneType”对象不可调用
在阅读了几篇文章之后,似乎方法(GetPort)并没有注册为一个方法。在
这种分析正确吗?在
如果是,我如何让Python将其解释为一个方法?在
如果没有,错误是怎么回事?在
提前感谢您的帮助!在
正确,它是说GetPort不存在。您检查过Perl版本是否正常工作了吗?如果没有Perl,可以尝试使用Excel的VBA(打开它的VBA控制台,您可能需要按照步骤here)来启用它。如果您可以从excelvba中显示QPST并执行GetPort,那么有些事情是非常奇怪的。在
可能是QPST COM接口在编写此脚本后发生了更改。你可以试试
它将尝试为QPST创建类型库。有时它会发现额外的对象,但如果不是,至少可以使用combrowse.py公司(它是pywin32的一部分)并尝试查找该函数的位置。Combrowse是一个基本的COM浏览器,只需运行\Lib\site packages\win32com\client\combrowse.py公司,如果需要更强大的功能,那么来自visualstudio的可能更好。在
看来我得做几件事来解决这个问题。在
在“AtmnServer”OLE类型库文件上使用makepy命令在以下位置创建*.py文件:
添加额外的一行,将所需方法实际解释为方法(而不是属性/属性或其他):
^{pr2}$行前:
再次感谢您的帮助!在
相关问题 更多 >
编程相关推荐