... <看更多>
「python callback」的推薦目錄:
- 關於python callback 在 Re: [問題] ctype註冊callback function - 看板Python - 批踢踢 ... 的評價
- 關於python callback 在 How to write a simple callback function? - Stack Overflow 的評價
- 關於python callback 在 Python callback - gists · GitHub 的評價
- 關於python callback 在 CallBack - Python 的評價
- 關於python callback 在 python callback function with arguments bad practice? 的評價
python callback 在 Python callback - gists · GitHub 的推薦與評價
Python callback. GitHub Gist: instantly share code, notes, and snippets. ... <看更多>
python callback 在 CallBack - Python 的推薦與評價
CallBack. vtk-examples/Python/Interaction/CallBack. Description¶. Demonstrate how to set up a callback with client data¶. Getting the camera orientation ... ... <看更多>
python callback 在 python callback function with arguments bad practice? 的推薦與評價
Regarding callback argument you can use python's typing module (docs). It'll be something like Callable which subscription syntax must ... ... <看更多>
python callback 在 Re: [問題] ctype註冊callback function - 看板Python - 批踢踢 ... 的推薦與評價
※ 引述《cobrasgo (體重突破所有均線)》之銘言:
: 小弟目前在寫程式呼叫期貨商的API
: 但是碰到了問題
: 程式如下
: import ctypes
: from ctypes import *
: import traceback
: class qyAPI:
: [略]
: def _apiInit(self):
: try:
: self._qyAPI = windll.LoadLibrary(self._qyDllPath)
: self._SKOrderLib_Initialize = self._qyAPI.SKOrderLib_Initialize
: self._RegisterOnOpenInterestCallBack = self._qyAPI.RegisterOnOpenInterestCallBack
: #initialization
: ret = self._SKOrderLib_Initialize(self._account, self._passwd)
: print "init result is ", ret
: CMPFUNC = CFUNCTYPE(c_int, POINTER(c_char_p))
: cb = CMPFUNC(self._oiCallback)
: #register a callback to get open interest status
: ret = self._RegisterOnOpenInterestCallBack(addressof(cb))
: print "oi result is ", ret
: except:
: traceback.print_exc()
如果可以的話,請提供 RegisterOnOpenInterestCallBack 的 prototype。
先假設它的 prototype 大約如下(由你提供的碼來看):
int RegisterOnOpenInterestCallBack(
int (__cdecl *callback)(char**)
);
self._RegisterOnOpenInterestCallBack = self._qyAPI.RegisterOnOpenInterestCallBack;
CMPFUNC = CFUNCTYPE(c_int, POINTER(c_char_p))
self._RegisterOnOpenInterestCallBack.argtypes = (CMPFUNC,)
self._RegisterOnOpenInterestCallBack.restype = c_int
cb = CMPFUNC(self._oiCallback)
ret = self._RegisterOnOpenInterestCallBack(cb)
但是下面的 call-back function implementation 是錯的,應該要 return 整數值。
: def _oiCallback(self, returnString):
: print "_oiCallback start"
: print returnString
: print "_oiCallback end"
: qyAPI()
: raw_input()
: =================
: 呼叫RegisterOnOpenInterestCallBack這個function,需要傳一個callback function
: 但是我這樣寫似乎是有問題的
: callback function並沒有進去
: 請問我要register callback function的話
: 要怎麼寫呢?
要先確定在測試時,程式已經進行到會使用你註冊的 call-back function 的階段。
另外,請看一下 Python 官網上 ctypes 文件的 callback function 教學。
https://docs.python.org/release/2.5.4/lib/ctypes-callback-functions.html
qsort:
https://msdn.microsoft.com/zh-tw/library/zes7xw0h.aspx
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.166.234.23
※ 編輯: sbrhsieh 來自: 118.166.234.23 (01/24 23:13)
有成功 register callback function 不表示 registered callback function
就會被執行,必須要碰到可觸發此 callback 的事件發生。
依照你下一篇的說明,成功註冊(登記) OnOpenInterestCallBack function 後,
必須要有執行 GetOpenInterest function,已登記的對應 callback 才會被調用。
(我在你的推文前的最後一段話,就是指這個)
我在你提供的測試程式中沒有看到有導致 GetOpenInterest 被調用的 statement,
即使登記 callback function 是成功的,你也不會觀察到 callback function
對 standard output 所作的輸出(因為 callback function 沒有執行過)。
※ 編輯: sbrhsieh 來自: 118.166.234.23 (01/25 21:55)
... <看更多>