Python 板


LINE

※ 引述《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 教學。 http://docs.python.org/release/2.5.4/lib/ctypes-callback-functions.html qsort: http://msdn.microsoft.com/zh-tw/library/zes7xw0h.aspx --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.166.234.23 ※ 編輯: sbrhsieh 來自: 118.166.234.23 (01/24 23:13)
1F:推 cobrasgo:官網的那個我之前就有看過,也參考了。不過還是不work 01/25 21:27
2F:→ cobrasgo:另外我確定程式已經有進行到register callback,因為回 01/25 21:28
3F:→ cobrasgo:傳值是0 01/25 21:28
有成功 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)
4F:推 cobrasgo:我眼殘了…拍謝,好像還要call另一個function,callback 01/25 22:01
5F:→ cobrasgo:才會被呼叫囧 01/25 22:01







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Soft_Job站內搜尋

TOP