- 相關推薦
中文全文信息檢索系統中索引項技術及分詞系統的實現
摘 要 該文提出了一種在Windows3.1保護模式下,通過動態連接庫(DLL)生成中斷服務程序代碼,實現外設與Windows應用程序實時通信的有效方法。
一、前 言
計算機的日益普及和計算機技術日益成熟,使得計算機在工業控制監測中的應用漸漸深入。但工業應用不同于其它方面,它要求有較強的實時性,F在有很多的DOS軟件在運行過程中通過掛接外部中斷方式實現DOS應用軟件與外設的實時通信,這種方法實現起來十分簡單。而在Windows中應用程序能否也能夠利用外部硬中斷實現外設與Windows應用程序的實時通信呢?答案是肯定的。這里的關鍵是要解決好中斷代碼與Windows應用程序相互之間交換信息的問題。
從外設發送異步的硬中斷,通過中斷處理程序傳遞一條信息給Windows應用程序。這時可以初始化相關端口,準備好數據,然后進行數據傳送,從而做到實時通信。
實現Windows應用程序響應外部中斷的方法有很多,如Microsoft公司自己開發的SDK、DDK軟件包,使用嵌入式匯編等等。本文將介紹一種在BC 3.1的基礎上利用Windows 3.1擁有的一些功能實現Windows實時通信的實例。
二、中斷代碼的位置
在Windows中,幾乎所有的異步事件都是由中斷處理程序來管理的。中斷處理程序包含在設備驅動程序中,由Windows在環境初始化中安裝。例如,KEYBOARD.DRV、MOUSE.DRV和COMM.DRV均含有中斷處理程序,以處理相應的鍵盤、鼠標和串行口的異步中斷。可以仿照標準設備驅動程序,編寫中斷處理代碼,以響應外設的通信請求,從而完成一次實時通信。
中斷代碼既可以包含在應用程序的可執行代碼中,也可以包含在動態連接庫(DLL)中。包含在應用程序中的代碼只能在一個程序中使用,而在動態連接庫中的代碼則可以在Windows系統中所有的應用程序所共享。這樣不僅在整個Windows系統中只有一個中斷代碼的副本,提高了內存的使用效率,更重要的是可以防止由于同時存在多個中斷代碼的副本而發生沖突。本文將在DLL中編制中斷處理程序。
當動態連接庫被裝入時,要調用DLL庫的入口點LibMain(),利用這一點可以執行一些初始化工作,可以分配一些內存塊,可以初始化一些全局變量或者靜態變量,可以安裝中斷服務程序的代碼等等。例如:
void interrupt (oldIsr)(--CPPARGS)
/* 舊的中斷服務程序地址 */
LibMain(HANDLE hInstance,WORD wDataSeg,WORD cbHeapSize,L
PSTR
lpszCmdLine)
{
…
oldIsr=getvect(IRQNum);
/* IRQNum指中斷號 */
setvect(IRQNum,newIsr);
/* newIsr指新中斷服務程序代碼 */
return(1);
}
函數setvect()既可在實模式下,也可在保護模式下設置中斷處理向量。
上述代碼也可以放在一個由用戶設置的引出(export)函數中,在應用程序中用戶可以調用此引出函數來安裝中斷服務程序代碼。
由于中斷可以在任何時刻發生,中斷代碼必須駐留在內存中,并且在應用程序運行的過程中一直處于某一固定內存中。這一點無論是在實模式還是在保護模式下都是一致的。
在DLL的模塊定義文件中應注意:
1.CODE語句為固定代碼段,即FIXED;
2.EXPORTS語句要引出被應用程序和其它DLL用作入口點的函數。
下一頁
【中文全文信息檢索系統中索引項技術及分詞系統的實現】相關文章:
小議人工智能技術在信息檢索系統中應用07-02
基于RSS技術的信息服務系統設計與實現08-04
漢語分詞在中文軟件中的廣泛應用06-29
無線巡更系統技術的實現09-17
高校信息查詢系統的設計與實現09-03
WDM-PON系統實現技術的研究10-16
關于設計管理系統信息需求的分析與實現09-30
論網絡教學中課件系統的設計與實現10-14
GSM系統中端到端的安全實現06-25
国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码