Python 3.5 - ctypes - 为 Citect 创建字符串缓冲区 API
Python 3.5 - ctypes - create string buffer for Citect API
我想从 Python 中的外部脚本访问我们的 Citect SCADA 系统。我在这里找到了一些示例代码:https://github.com/mitchyg/Random/blob/master/pyctapi/src/pyctapi.py
当我运行这段代码时:
def ct_tag_read(self, tag_name):
buffer = create_string_buffer('[=12=]0' * 32)
ok = windll.CtApi.ctTagRead(self.hCTAPI, tag_name, byref(buffer), sizeof(buffer), None)
return buffer.value
我收到这个错误:
line 63, in create_string_buffer
raise TypeError(init)
TypeError:
我正在使用 Python 3.5.
这里是 Citect API 函数的描述 ct_TagRead:
http://www.citect.schneider-electric.com/webhelp/vijeo740/Content/ctTagRead.html
好的,首先我混淆了 ctCicode 和 ctTagRead 的参数,所以代码应该看起来像(没有“,None”参数):
def ct_tag_read(self, tag_name):
buffer = create_string_buffer('[=10=]0' * 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
我切换到 python 2.7,一切正常。
我想从 Python 中的外部脚本访问我们的 Citect SCADA 系统。我在这里找到了一些示例代码:https://github.com/mitchyg/Random/blob/master/pyctapi/src/pyctapi.py
当我运行这段代码时:
def ct_tag_read(self, tag_name):
buffer = create_string_buffer('[=12=]0' * 32)
ok = windll.CtApi.ctTagRead(self.hCTAPI, tag_name, byref(buffer), sizeof(buffer), None)
return buffer.value
我收到这个错误:
line 63, in create_string_buffer
raise TypeError(init)
TypeError:
我正在使用 Python 3.5.
这里是 Citect API 函数的描述 ct_TagRead:
http://www.citect.schneider-electric.com/webhelp/vijeo740/Content/ctTagRead.html
好的,首先我混淆了 ctCicode 和 ctTagRead 的参数,所以代码应该看起来像(没有“,None”参数):
def ct_tag_read(self, tag_name):
buffer = create_string_buffer('[=10=]0' * 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
我切换到 python 2.7,一切正常。