2016-07-18 5 views
2

Python의 외부 스크립트에서 Citect SCADA 시스템에 액세스하고 싶습니다. 나는 여기에 몇 가지 예제 코드를 발견 : https://github.com/mitchyg/Random/blob/master/pyctapi/src/pyctapi.pyPython 3.5 - ctypes - Citect API 용 문자열 버퍼 생성

나는이 코드 조각 실행하면 : 나는 파이썬 3.5을 사용하고

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

:

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 

을 나는이 오류가 발생합니다. 여기

가 Citect에 API 함수 ct_TagRead의 설명입니다

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

답변

0

OK, 우선 내가 ("없음"인수없이) ctCicode 및 ctTagRead 그래서 코드가 같아야의 인수를 혼합 :

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 

파이썬 2.7로 전환했는데 모든 것이 잘 작동합니다.