... <看更多>
「callback python」的推薦目錄:
- 關於callback python 在 Re: [問題] ctype註冊callback function - 看板Python - 批踢踢 ... 的評價
- 關於callback python 在 How to write a simple callback function? - Stack Overflow 的評價
- 關於callback python 在 Example of callbacks with Python - gists · GitHub 的評價
- 關於callback python 在 了解Python中的回调函数 的評價
- 關於callback python 在 Using callback with python gdal.RasterizeLayer? - GIS ... 的評價
callback python 在 Example of callbacks with Python - gists · GitHub 的推薦與評價
Example of using callbacks with Python. #. # To run this code. # 1. Copy the content into a file called `callback.py`. # 2. Open Terminal and type: `python ... ... <看更多>
callback python 在 了解Python中的回调函数 的推薦與評價
而旅客告诉旅馆怎么叫醒自己的动作,也就是把回调函数传入库函数的动作,称为登记回调函数(to register a callback function)。 回调机制提供了非常大的 ... ... <看更多>
callback python 在 Using callback with python gdal.RasterizeLayer? - GIS ... 的推薦與評價
In a QGis python plugin i rasterize a vector layer with this code. All work fine except the callback: no error but nothing happen. ... <看更多>
callback python 在 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)
... <看更多>