Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 29, 2012 13:56:11

Neolane
Зарегистрирован: 2012-10-29
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

COM_API

День добрый.
Только начинаю своё знакомство с 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
——————————–

Офлайн

#2 Окт. 29, 2012 23:11:58

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

COM_API

…сообщение удалено так как неверно прочитал топик.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Отредактировано JOHN_16 (Окт. 30, 2012 00:51:52)

Офлайн

#3 Окт. 30, 2012 00:45:04

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

COM_API

JOHN_16
Скорее всего ТС иммет в виду другой COM

Офлайн

#4 Окт. 30, 2012 00:51:02

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

COM_API

s0rg Да вы правы, утро - наверное еще не проснулся, прочитал топик неверно. Сообщение сотру.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#5 Окт. 30, 2012 07:32:22

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

COM_API

Выглядеть будет примерно так (в комментариях моменты, на которые нужно обратить внимание):

# -*- 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

Отредактировано reclosedev (Окт. 30, 2012 07:34:03)

Офлайн

#6 Окт. 30, 2012 09:50:26

Neolane
Зарегистрирован: 2012-10-29
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

COM_API

reclosedev
Выглядеть будет примерно так (в комментариях моменты, на которые нужно обратить внимание):
Большое спасибо.
Но в стровке AllSym, SymIDs = Job.GetSymbolIds(sym_name), параметр sym_name не передаётся почему то.
Python 3.3

Отредактировано Neolane (Окт. 30, 2012 09:50:55)

Офлайн

#7 Окт. 30, 2012 10:40:21

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

COM_API

Neolane
Но в стровке AllSym, SymIDs = Job.GetSymbolIds(sym_name), параметр sym_name не передаётся почему то.
Что значит “не передаётся”, ошибка какая-то пишется или результат не такой? У меня нет документации по е-кубу под рукой, может там нет такого параметра?

Офлайн

#8 Окт. 30, 2012 11:30:38

Neolane
Зарегистрирован: 2012-10-29
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

COM_API

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

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version