我正在將一個古老的C++/Carbon程序移植到Obj-C和Cocoa。當前版本使用異步USB讀取和GetNextEvent來讀取數據。Cocoa中的GetNextEvent的現代等價物是什麼?
當我嘗試在Objective C中編譯它時,找不到GetNextEvent,因爲它在Carbon框架中。
搜索Apple支持不會產生任何用處。
編輯補充:
好了,所以我想要做的就是貫穿USB文檔掃描儀。我已經設置了USBDeviceInterface和USBInterfaceInterface(誰想出了這個這個名字???),並且我打電話給(*usbInterfaceInterface)->WritePipeTO()
要求掃描器掃描。我相信這是有效的。至少平板燈在頁面上移動...
然後我嘗試使用*(usbInterfaceInterface))->ReadPipeAsyncTO()
來讀取數據。我給這個函數一個回調函數,USBDoneProc()
。
的一般結構是:
StartScan()
WaitForScan()
StartScan()
調用WritePipeTO
和ReadPipeAsyncTO
WaitForScan()
具有這樣的:
while (deviceActive) {
EventRecord event;
GetNextEvent(0,&event);
if (gDataPtr != saveDataPtr) { // more data up the timeout
timeoutTicks = TickCount() + 60 * 60;
saveDataPtr = gDataPtr;
}
if (TickCount() > timeoutTicks) {
deviceActive = false;
}
}
同時,USBDoneProc
遞增gDataPtr是數據的末尾到目前爲止我們已經閱讀。據我所知,它在異步讀取期間會被調用多次,由回調自動調用。
如果我在工作代碼中調用GetNextEvent()
調用,則USBDoneProc
直到異步讀取管道超時纔會被調用。
所以在我看來,我需要的東西,把控制權返回給事件處理程序,以便USBRead中斷實際上中斷,使USBDoneProc
得到所謂...
這有任何意義嗎?
thanks.
我剛剛發現GetNextEvent在MacOS的系統7棄用!這個事實根本不能幫助我,但它確實給了我一個道德上的優越感,比我寫這個東西的同事還有道德上的優越感,並且在15年內沒有更新它。*嘆息* – 2010-07-23 20:12:25