Python und Windows COM

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
alpha
User
Beiträge: 195
Registriert: Freitag 23. Mai 2003, 23:24
Wohnort: Ulm

Montag 19. April 2004, 23:23

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
Gast

Mittwoch 21. April 2004, 13:44

eigentlich werden wird von den com modulen alles korrekt umgewandlet... oder was meinst du mit einem stringarray?
sowas: ["asd","svf"] oder ?
alpha
User
Beiträge: 195
Registriert: Freitag 23. Mai 2003, 23:24
Wohnort: Ulm

Mittwoch 21. April 2004, 15:00

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
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Mittwoch 21. April 2004, 15:31

Hi alpha,
alpha hat geschrieben: opc-client unter Windows progen müsst :lol:
Möge dieser Kelch an mir vorübergehen ;)


Gruß

Dookie
Antworten