Форум сайта python.su
Как то я видимо плохо попробовал ранее запустить сей скрипт на python 32bit, попробовал снова, всё заработало!!!
Офлайн
Возможно таки помогла регистрация других ДЛЛ - тут уже точно никто не скажет!
Офлайн
andman
Как то я видимо плохо попробовал ранее запустить сей скрипт на python 32bit, попробовал снова, всё заработало!!!
Офлайн
Помогите со следующей проблемкой:
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")
simatic = win32com.client.Dispatch("Simatic.Simatic") Pro = simatic.Projects(cfg.nick("ProjectName").value) Prg = Pro.Programs(cfg.nick("ProgramName").value) Src = Prg.Next("Sources").Next.Add(bname, win32com.client.Dispatch("Simatic.S7Source"), path + "\\" + bname + ".scl")
Traceback (most recent call last): File "Main.py", line 251, in <module> step7() File "Main.py", line 249, in step7 signal() File "Main.py", line 242, in signal Src = Prg.Next("Sources").Next.Add(bname, win32com.client.Dispatch("Simatic. S7Source"), path + "\\" + bname + ".scl") 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, -2147467 259), None) Для продолжения нажмите любую клавишу . . .
Отредактировано andman (Окт. 6, 2016 10:51:40)
Офлайн
по логике
“ActiveWorkbook.Path + ”\signal.scl“” = равно пути где лежит файл.
Другими словами на выходе что-то типа
c:\programma\signal.scl
думаю у вас должно получиться что-то типа
Src = Prg.Next("Sources").Next.Add(bname, win32com.client.Dispatch("Simatic.S7Source"), "путь к файлу.scl")
path = os.path.join(os.getcwd(), bname + '.scl') print(path) Src = Prg.Next("Sources").Next.Add(bname, win32com.client.Dispatch("Simatic.S7Source"), path)
Офлайн
на команду print(path + “\\” + bname + “.scl”)
получаю C:\Users\and\PycharmProjects\Tuhard\signal.scl
что соответствует нужному файлу
Проблема не в пути, а в указании s7source
Офлайн
А если
path = os.path.join(os.getcwd(), bname + '.scl') print(path) source = win32com.client.Dispatch("Simatic.S7Source") Src = Prg.Next("Sources").Next.Add(bname, source, path)
Отредактировано ZerG (Окт. 6, 2016 11:26:03)
Офлайн
Программа:
bname = "signal" simatic = win32com.client.Dispatch("Simatic.Simatic") Pro = simatic.Projects(cfg.nick("ProjectName").value) Prg = Pro.Programs(cfg.nick("ProgramName").value) #print(path + "\\" + bname + ".scl") #Prg.Next("Sources").Next.Add(bname, win32com.client.Dispatch("Simatic.S7Source"), path + "\\" + bname + ".scl") path = os.path.join(os.getcwd(), bname + '.scl') print(path) src = win32com.client.Dispatch("Simatic.S7Source") Src = Prg.Next("Sources").Next.Add(bname, src, path)
C:\Users\and\PycharmProjects\Tuhard\signal.scl Traceback (most recent call last): File "Main.py", line 256, in <module> step7() File "Main.py", line 254, in step7 signal() File "Main.py", line 248, in signal 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, -2147467 259), None) Для продолжения нажмите любую клавишу . . .
Отредактировано andman (Окт. 6, 2016 11:40:40)
Офлайн
Что значит строка интерпритатора File “<COMObject <unknown>>”, line 3, in Add ?
Line 3 что означает? Ошибка третьего аргумента?
Офлайн
Учитывая сложность и запустанность вашего случая я бы попробовал сначала написать код банально и пошагово в максимальной похожести на оригинал
После каждой строки вывести print('…') что бы лутче понимать все ли удачно проходит
И смотреть все ли методы отработали - так будет проще выявить “узкое место”
Попробуйте что нить в стиле
s = win32com.client.Dispatch("Simatic.Simatic") _Pro = win32com.client.Dispatch("Simatic.S7Project") _Prg = win32com.client.Dispatch("Simatic.S7Program") _Src = win32com.client.Dispatch("Simatic.S7Source") path = os.path.join(os.getcwd(), bname + '.scl') Pro = s.Projects(cfg.nick("ProjectName").value) Prg = _Pro.Programs(cfg.nick("ProgramName").value) Src = Prg.Next("Sources").Next.Add(bname, _Src, path)
Офлайн