我現在有一個研華板卡的dll驅動,我想用python呼叫,這個驅動其中有一個函式的引數是結構體陣列指標,請問我在python中怎么為其定義原型,現在結構體的的原型已經定義好了,但是結構體陣列不知該怎么實作,以下是我的源代碼,求助各位大神指點迷津。
from ctypes import *
dll = CDLL("C:\\Users\Administrator.SC-201910261228\\Desktop\MyDll\\Adsapi32.dll")
class Data_Struct(Structure):
_fields_ = [('dwDeviceNum',c_int),('szDeviceName',c_char),('nNum',c_int)]
data = Data_Struct()
new_data = (data*3)()
maxin = c_int(10)
maxout = c_int()
a = dll.DRV_DeviceGetList(byref(new_data),maxin,byref(maxout))
print(a)
print(maxout.value)
uj5u.com熱心網友回復:
結構體有了,再把結構體放入到一個串列中,不就是結構體陣列了嗎?uj5u.com熱心網友回復:
把結構體物件放入串列中,然后再對串列物件取地址之后,會報引數錯誤,因為是呼叫的外部DLL,引數是C語言的結構體陣列指標,用Python的串列不能跟C語言中的陣列對上,您看下,我其他的引數比如整形都是轉成C語言的整形再進行的引數傳遞的,所以我這里也必須要轉換成C語言的結構體的資料型別才能進行引數傳遞。有沒有好的方法。轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/93760.html
上一篇:SQL使用Case When Then進行多條件判斷案例
下一篇:配電網負荷識別python程式
