2016-07-18 35 views
2

Ich möchte von extern Skript in Python auf unser Citect SCADA-System zugreifen. Ich fand hier einige Beispiel-Code: https://github.com/mitchyg/Random/blob/master/pyctapi/src/pyctapi.pyPython 3.5 - Ctypes - String-Puffer für Citect-API erstellen

Wenn ich dieses Fragment von Code ausführen:

def ct_tag_read(self, tag_name): 
    buffer = create_string_buffer('\000' * 32) 
    ok = windll.CtApi.ctTagRead(self.hCTAPI, tag_name, byref(buffer), sizeof(buffer), None) 

    return buffer.value 

ich diesen Fehler:

line 63, in create_string_buffer 
raise TypeError(init) 
TypeError: 

Ich bin mit Python 3.5.

Hier ist die Beschreibung von Citect-API-Funktion ct_TagRead:

http://www.citect.schneider-electric.com/webhelp/vijeo740/Content/ctTagRead.html

Antwort

0

OK, zunächst einmal gemischt i up Argumente für ctCicode und ctTagRead so sollte Code aussehen (ohne "keine" Argument):

def ct_tag_read(self, tag_name): 
    buffer = create_string_buffer('\000' * 32) 
    ok = windll.CtApi.ctTagRead(self.hCTAPI, tag_name, byref(buffer), sizeof(buffer)) 
    if ok == False: 
     print("Unable to read TAG") 
     return 

return buffer.value 

Ich wechselte zu Python 2.7 und alles funktioniert gut.