「python ctypes c_char_p」的推薦目錄:
- 關於python ctypes c_char_p 在 コバにゃんチャンネル Youtube 的最佳解答
- 關於python ctypes c_char_p 在 大象中醫 Youtube 的最讚貼文
- 關於python ctypes c_char_p 在 大象中醫 Youtube 的最讚貼文
- 關於python ctypes c_char_p 在 Re: [問題] python ctypes調用dll問題 - 批踢踢實業坊 的評價
- 關於python ctypes c_char_p 在 Different behaviour of ctypes c_char_p? - Stack Overflow 的評價
- 關於python ctypes c_char_p 在 ctypes wrapper example - gist/GitHub 的評價
- 關於python ctypes c_char_p 在 Python ctypes总结 - 偏安的小栈 的評價
- 關於python ctypes c_char_p 在 ctypes中使用c_char_p接收数据被截断 - 小羽的知识库 的評價
- 關於python ctypes c_char_p 在 ctypes - YouTube 的評價
python ctypes c_char_p 在 大象中醫 Youtube 的最讚貼文
python ctypes c_char_p 在 大象中醫 Youtube 的最讚貼文
python ctypes c_char_p 在 ctypes wrapper example - gist/GitHub 的推薦與評價
ctypes wrapper example. GitHub Gist: instantly share code, notes, ... import ctypes. """ The Coord struct in C-land ... POINTER(ctypes.c_char_p)]. ... <看更多>
python ctypes c_char_p 在 Re: [問題] python ctypes調用dll問題 - 批踢踢實業坊 的推薦與評價
c_char_p 代表一個 char *, 而 byref 代表取 reference
所以(下面假設 function 是一個 C 函式)
pKey = c_char_p(0x010203040506)
function(byref(pKey))
大致上可以轉換成下面的 C 程式碼
char *pKey = 0x010203040506;
function(&pKey);
這應該不是你要的
你想做的應該是傳入 "\1\2\3\4\5\6" <-- 這是 C
ctypes 可以自動把 Python bytes 轉換成 C 的 char *
所以直接這樣寫應該就行了
# 設定引數型態, 讓 ctypes 知道怎麼轉換
dll.rf_M1_authentication2.argtypes = [c_ushort, c_ubyte, c_ubyte, c_char_p]
rf_M1_authentication2(icdev, key_model, block_b60, b'\1\2\3\4\5\6')
寫 ctypes 的時候要用 C 的方法來思考
它的所有的變數宣告基本上都可以直接對應到一個 C statement
所以其實可以先想好 C 怎麼寫, 再轉換成 Python + ctypes
這樣有時候會方便一些
※ 引述《waynezen (Wayne)》之銘言:
: 感謝!已經可以了,再請教個問題要傳入一組6Bytes命令,我使用c_char_p,但回應給我似乎只有4bytes沒有成功?
: ------------------------------------
: from ctypes import windll,byref,pointer,c_int,c_ushort,c_char,c_char_p
: import time
: dll = windll.LoadLibrary("MasterRD.dll")
: port = 1
: baud = 19200
: reader_model = 0x41
: icdev = 0
: msec = 10
: color = 2
: type = 0x41
: REQ_model = 0x52
: bcnt = 4
: key_model = 0x60
: block_b60 = 0x60
: block_b61 = 0x61
: block_b62 = 0x62
: block_b63 = 0x63
: pKey =c_char_p(0x010203040506)
: rf_M1_authentication2 = dll.rf_M1_authentication2(icdev,key_model,block_b60,byref(pKey))
: print rf_M1_authentication2
: X
--
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.94.57
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1432872560.A.821.html
※ 編輯: uranusjr (140.112.94.57), 05/29/2015 13:47:29
... <看更多>