У меня есть скрипт на python, который подключается к TestStand и получает определенные данные из файла .seq (sequence).
import win32com.client
import pythoncom
TestStandEngine = win32com.client.Dispatch("TestStand.Engine")
Seqfile = TestStandEngine .GetSequenceFileEx("Seq_File.seq")
Main = Seqfile.GetSequenceByName("MainSequence") #Get's the main sequence of the file
Я установил обе версии Test Stand 2014 для x32 и x64, и скрипт работал нормально.После удаления версии x64 (потому что это было не нужно), скрипт теперь выдает такую ошибку:
Traceback (most recent call last):
File "C:\ts\Main.py", line 9, in <module>
TestStandEngine = win32com.client.Dispatch("TestStand.Engine")
File "C:\LegacyApp\Python_2.7\lib\site-packages\win32com\client\__init__.py", line 95, in Dispatch
dispatch, userName = dynamic._GetGoodDispatchAndUserName(dispatch,userName,clsctx)
File "C:\LegacyApp\Python_2.7\lib\site-packages\win32com\client\dynamic.py", line 114, in _GetGoodDispatchAndUserName
return (_GetGoodDispatch(IDispatch, clsctx), userName)
File "C:\LegacyApp\Python_2.7\lib\site-packages\win32com\client\dynamic.py", line 91, in _GetGoodDispatch
IDispatch = pythoncom.CoCreateInstance(IDispatch, None, clsctx, pythoncom.IID_IDispatch)
com_error: (-2147221005, 'Invalid class string', None, None)
После некоторого исследования, я думаю, что я знаю, что вызывает проблему, но я не мог найти способчтобы исправить это.
-установка Python на моем компьютере 32-битная
>>> import platform
>>> platform.architecture()
('32bit', 'WindowsPE')
-на единственном установленном испытательном стенде на моем компьютере является 32-битная версия.
-ОС: Windows x64 битная ОС
Вот мое предположение: я думаю, что когда он отправляет Teststand.Engine, он пытается использовать версию x64, которая больше не установлена;Я попытался добавить параметр clsctx, но результат тот же:
win32com.client.Dispatch("TestStand.Engine",clsctx=pythoncom.CLSCTX_LOCAL_SERVER)
Есть ли способ заставить его запустить 32-битную версию?Если TestStand работает на 32-битной версии, а Python на 32-битной, не должен ли он вернуть 32-битный COM-объект, который должен работать с Python 32-битной?
Обновление: Так что после запуска this в PowerShell он возвращает список всех допустимых имен COM, но « Teststand.Engine » отсутствует в списке.Единственный связанный с TestStand объект в списке - это TestStand.ExLauncher (который я могу отправить, но он не имеет тех же атрибутов / использования, что и TestStand.Engine