Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 6, 2016 12:09:33

andman
Зарегистрирован: 2016-09-14
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Не удаётся подключиться к COM объекту

Отдельно от основоной программы создал :

 #!/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)
Для продолжения нажмите любую клавишу . . .

Отредактировано andman (Окт. 6, 2016 12:40:44)

Офлайн

#2 Окт. 6, 2016 12:45:04

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2586
Репутация: +  60  -
Профиль   Отправить e-mail  

Не удаётся подключиться к COM объекту

Чисто для теста замените на

 Src = Prg.Next("Sources").Next.Add("Signal", _Src, "C:\Users\and\Desktop\signal.scl")



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#3 Окт. 6, 2016 12:48:10

andman
Зарегистрирован: 2016-09-14
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Не удаётся подключиться к COM объекту

ZerG
Чисто для теста замените на
Абсолютно всё тоже самое.
Почему вы так упорно думаете, что проблема в пути к файлу?

Отредактировано andman (Окт. 6, 2016 12:49:14)

Офлайн

#4 Окт. 6, 2016 13:03:09

andman
Зарегистрирован: 2016-09-14
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Не удаётся подключиться к COM объекту

Если смотреть на 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 является не указателем класса, а объектом класса, посему, как мне кажется в этом проблемма, но как её решить, пока не знаю.

Отредактировано andman (Окт. 6, 2016 13:03:27)

Офлайн

#5 Окт. 11, 2016 17:58:21

Iskatel
Зарегистрирован: 2015-07-29
Сообщения: 291
Репутация: +  3  -
Профиль   Отправить e-mail  

Не удаётся подключиться к COM объекту

http://stackoverflow.com/questions/521759/is-there-a-way-to-decode-numerical-com-error-codes-in-pywin32

Отредактировано Iskatel (Окт. 11, 2016 18:07:43)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version