Seite 1 von 1

Python und Windows COM

Verfasst: Montag 19. April 2004, 23:23
von alpha
Hallo Zusammen,

ich habe ne Frage zu Python und COM (Component Object Moddel)
von Windows. Ich habe dort ein Interface das ein Stringarray erwartet.
Mit VB6 funtioniert das einwandfrei. Leider verstehe ich noch nicht
wie Python das Datentypenmashaling macht.
Wie mache ich in Python ein solches Stringarray? Die Dokumentation
von win32 Extention von Python ist da etwas dürftig.
Geht das mit den normalen array-Funktionen von Python?
Speziell für strings habe ich da leider nichts gefunden.

Wäre toll wenn mir da jemand helfen könnte.

Danke
alpha

Verfasst: Mittwoch 21. April 2004, 13:44
von Gast
eigentlich werden wird von den com modulen alles korrekt umgewandlet... oder was meinst du mit einem stringarray?
sowas: ["asd","svf"] oder ?

alles klar

Verfasst: Mittwoch 21. April 2004, 15:00
von alpha
Hallo Leute,

alles klar ich habs. Mein Fehler war nur, daß die Anzahl der Arrayelemente, die ich übergeben wollte nicht gestimmt hat. Für alle, die es interessiert hier der kleine Programmausschnitt, falls ihr auch mal nen
opc-client unter Windows progen müsst :lol:

Code: Alles auswählen

import win32com.client, pythoncom, time
from array import *

class ServerEvents:
	def __init__(this):
		print 'Server started'
	def OnServerShutDown(self, Reason):
		print 'Server Shutdown at',time.ctime()

class GroupEvents:
	def __init__(this):
		print 'Group started'
	def OnDataChange(self,TransactionID,NumItems,ClientHandles,ItemValues,Qualities,TimeStamps):
		print 'Data Change at', time.ctime(), ' ', ItemValues

OPC = win32com.client.DispatchWithEvents('OPC.Automation.1',ServerEvents)
OPC.Connect('centrotherm.OPC_ENGINE')

groups = OPC.OPCGroups                                   
group = groups.Add('Group1')
group = win32com.client.DispatchWithEvents(group,GroupEvents)
group.IsSubscribed=1

items=group.OPCItems

item1=items.AddItem('.Ist_Band', 1)  
item2=items.AddItem('.Soll_Band', 1)

#Hier der Problemcode
ItmNbr = 2
ItemIDs = ['', '.Ist_Band', '.Soll_Band']
Chand = [0,1,2]
Shand = []
Errors = []

item1 = items.AddItems (ItmNbr, ItemIDs, Chand, Shand, Errors)
print item1
Shand = item1[0]
print Shand

NumItems = 1
Values = [0,500]
group.SyncWrite (NumItems, Shand, Values, Errors)

while 1: 
   pythoncom.PumpWaitingMessages()


Bis dann
alpha

Re: alles klar

Verfasst: Mittwoch 21. April 2004, 15:31
von Dookie
Hi alpha,
alpha hat geschrieben: opc-client unter Windows progen müsst :lol:
Möge dieser Kelch an mir vorübergehen ;)


Gruß

Dookie