Python 3.5 - ctypes - 为 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('00' * 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('00' * 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,一切正常。

相关内容

  • 没有找到相关文章

最新更新