Найти - Пользователи
Полная версия: Не удаётся подключиться к COM объекту
Начало » Python для новичков » Не удаётся подключиться к COM объекту
1 2 3
andman
Отдельно от основоной программы создал :

 #!/usr/bin/env python
# coding:utf-8
import os, win32com.client
bname = "signal"
path = os.path.join(os.getcwd(), bname + '.scl')
print(path)
s = win32com.client.Dispatch("Simatic.Simatic")
print(s, type(s))
Pro = s.Projects("Test")
print(Pro, type(Pro))
Prg = Pro.Programs("S7")
print(Prg, type(Pro))
_Src = win32com.client.Dispatch("Simatic.S7Source")
Src = Prg.Next("Sources").Next.Add(bname, _Src, path)


Вывод:
 C:\Users\and\Desktop\signal.scl
<COMObject Simatic.Simatic> <class 'win32com.client.CDispatch'>
Test <class 'win32com.client.CDispatch'>
S7 <class 'win32com.client.CDispatch'>
Traceback (most recent call last):
  File "Test.py", line 20, in <module>
    Src = Prg.Next("Sources").Next.Add(bname, _Src, path)
  File "<COMObject <unknown>>", line 3, in Add
  File "C:\Users\and\AppData\Local\Programs\Python\Python35-32\lib\site-packages\win32com\client\dynamic.py", line 228, in __int__
    return int(self.__call__())
  File "C:\Users\and\AppData\Local\Programs\Python\Python35-32\lib\site-packages\win32com\client\dynamic.py", line 197, in __call__
    return self._get_good_object_(self._oleobj_.Invoke(*allArgs),self._olerepr_.defaultDispatchName,None)
pywintypes.com_error: (-2147352567, 'Ошибка.', (0, None, None, None, 0, -2147467259), None)
Для продолжения нажмите любую клавишу . . .
ZerG
Чисто для теста замените на
 Src = Prg.Next("Sources").Next.Add("Signal", _Src, "C:\Users\and\Desktop\signal.scl")
andman
ZerG
Чисто для теста замените на
Абсолютно всё тоже самое.
Почему вы так упорно думаете, что проблема в пути к файлу?
andman
Если смотреть на VBA:
    Dim s As New Simatic
    Dim Pro As S7Project
    Dim Prg As S7Program
    Dim Src As S7Source
    Set Pro = s.Projects(ProjectName)
    Set Prg = Pro.Programs(ProgramName)
    Set Src = Prg.Next("Sources").Next.Add("Signal", S7Source, ActiveWorkbook.Path + "\signal.scl")

Тут объект создаётся только для s класса Simatic, так как только там присутствует ключевое слово New

а в методе add, вторым аргументом является S7Source, и это как я понимаю не объект, а указатель класса.

А в нашем питиновском варианте _Src является не указателем класса, а объектом класса, посему, как мне кажется в этом проблемма, но как её решить, пока не знаю.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB