Найти - Пользователи
Полная версия: COM_API
Начало » Python для новичков » COM_API
1
Neolane
День добрый.
Только начинаю своё знакомство с Python и сразу столкнулся с проблемой.
Есть скрипт на VBS который взаимодействует с открытым COM портом программы.
Если не сложно то покажите как она будет выглядеть на python, а там по примеру разберусь что и как. А то пока мучаюсь с win32com.client и не особо выходит.
——————————–
set App = CreateObject( “CT.Application” ) ‘ создаем объект e3.series
set Job = App.CreateJobObject ’ создаем объект Проект
set Dev = Job.CreateDeviceObject ‘ создаем объект Изделие в проекте
set Txt = Job.CreateTextObject ’ создаем объект Текст
set Sym = Job.CreateSymbolObject

Kav(“Символ_Вилка”)
Kav(“Символ_Розетка”)

Function Kav(sym_name)
AllSym = Job.GetSymbolIds(SymID, sym_name)
msgbox AllSym
for i=1 to AllSym
Sym.SetID SymID(i)
AllTxt = Sym.GetTextIds(TxtID,100)
Txt.SetID TxtID(1)
a = (“''” & Txt.GetText & “''”)
'a=sym_name
AllTxt = Sym.GetTextIds(TxtID,1006)
Txt.SetID TxtID(1)
Txt.SetText (a)
next
End Function
——————————–
JOHN_16
…сообщение удалено так как неверно прочитал топик.
s0rg
JOHN_16
Скорее всего ТС иммет в виду другой COM
JOHN_16
s0rg Да вы правы, утро - наверное еще не проснулся, прочитал топик неверно. Сообщение сотру.
reclosedev
Выглядеть будет примерно так (в комментариях моменты, на которые нужно обратить внимание):
# -*- coding: utf-8 -*-
# ^^^^^^^ - чтобы можно было использовать русские символы
import win32com.client
App = win32com.client.Dispatch("CT.Application")
Job = App.CreateJobObject() # нужны скобки
# ... и т.д.
# функцию нужно определить до непосредственного использования
def Kav(sym_name):
    # результаты функции не записываются в параметр,
    # а возвращаются как кортеж
    AllSym, SymIDs = Job.GetSymbolIds(sym_name)
    # цикл в Python можно записывать проще
    for sym_id in SymIDs:
        Sym.SetID(sym_id)
        AllTxt, TxtID = Sym.GetTextIds(100)
        # ... и т.д.
Kav("Символ_Вилка")
Kav("Символ_Розетка")
# возможно нужно передавать Юникод
# Kav(u"Символ_Розетка")

Полезные ссылки:
http://docs.python.org/2/tutorial/
http://docs.activestate.com/activepython/2.4/pywin32/html/com/win32com/HTML/QuickStartClientCom.html
http://oreilly.com/catalog/pythonwin32/chapter/ch12.html

Мне больше нравится использовать comtypes
Neolane
reclosedev
Выглядеть будет примерно так (в комментариях моменты, на которые нужно обратить внимание):
Большое спасибо.
Но в стровке AllSym, SymIDs = Job.GetSymbolIds(sym_name), параметр sym_name не передаётся почему то.
Python 3.3
reclosedev
Neolane
Но в стровке AllSym, SymIDs = Job.GetSymbolIds(sym_name), параметр sym_name не передаётся почему то.
Что значит “не передаётся”, ошибка какая-то пишется или результат не такой? У меня нет документации по е-кубу под рукой, может там нет такого параметра?
Neolane
reclosedev
Что значит “не передаётся”, ошибка какая-то пишется или результат не такой? У меня нет документации по е-кубу под рукой, может там нет такого параметра?
Ну грубо говоря результат на такой,
AllSym, SymIDs = Job.GetSymbolIds(sym_name)
Должен записать в переменную AllSym — количество символов, а в SymIDs — ID символов
в которых ИМЯ_СИМВОЛА = sym_name, если этот параметр не указан тогда в переменные записываются все символы.
И получается что я пишу AllSym, SymIDs = Job.GetSymbolIds(sym_name) , что AllSym, SymIDs = Job.GetSymbolIds() результат один и тот же.
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