微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何获取回调函数的参数值?

如何解决如何获取回调函数的参数值?

| 我正在尝试在python中调用回调函数。 我在路径“ \ dllpath \”中存在一个dll。 该dll具有如下所述的回调函数功能原型: ULONG SetBytetotalsCallback(tFNBytetotals pCallback,BYTE间隔); 参数说明: tFNBytetotals pCallback:模式输入,回调函数指针 字节间隔:模式输入,间隔以秒为单位 回调原型: void BytetotalsCallback(ULONGLONG txTotalBytes,ULONGLONG rxTotalBytes); 我想调用函数SetBytetotalsCallback,并且要打印txTotalBytes和rxTotalBytes的值。 我尝试使用以下代码
from ctypes import *
filepath = r\"<path to dll>\"
gdll = WinDLL(filepath)
tx = c_longlong
rx = c_longlong
pCallback = CFUNCTYPE(tx,rx)
def BytetotalsCallback(t,r):
    try:
        print \'Printing tx and rx: \'
        #print \'Transmitted bytes: \',t[0]
        #print \'Received bytes: \',r[0]
        #return 0
    except:
        print \'Error...\'

bytetotal_func =pCallback(BytetotalsCallback)
SetBytetotalsCallback = gdll.SetBytetotalsCallback
try:
    print \'Return of SetBytetotals:     \',SetBytetotalsCallback(pCallback(BytetotalsCallback),c_byte(128))

except:
    print \'Error found: \'
执行上述代码后,我发现函数BytetotalsCallback没有被调用,但是SetBytetotalsCallback(pCallback(BytetotalsCallback),c_byte(128)) 接到电话并成功返回。 有人能帮我吗? 提前致谢。 问候, 吉特     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。