欧美一区二区三区四区五区,人人看人人艹,亚洲一区二区中文,99精品视频99,亚洲精品欧美综合四区,国产三区视频在线观看,日韩在线观看一区二区,久久精品色
主辦單位:全國創爭活動指導協調小組 中華職工學習網首頁 情景站 聯系電話:010-68232149
科學研究人員 | 工程技術人員 | 購銷人員 | 倉儲人員 | 運輸服務人員 | 體育工作人員 | 教學人員 | 購銷人員

中文全文信息檢索系統中索引項技術及分詞系統的實現

http://www.dcyhziu.cn  2007/6/5 源自:中華職工學習網 【字體: 字體顏色
一、前 言
  計算機的日益普及和計算機技術日益成熟,使得計算機在工業控制監測中的應用漸漸深入。但工業應用不同于其它方面,它要求有較強的實時性。現在有很多的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用作入口點的函數。
  三、通信機制
  編寫實時通信例程關鍵在于必須認識到,異步事件對應用程序的觸發是異步發生的,不在Windows的消息處理機制和多任務范圍內。為了使通信例程能夠正確地工作,通信例程必須通知Windows有異步事件發生,且不能打斷應用程序的任務管理或消息流。要作到這一點,通信例程必須通過調用PostMessage或PostAppMessage函數向應用程序的消息隊列中加入一條消息。
  需要注意的是,在DLL中調用PostMessage(HWND hwnd, …)時,必須先確定hwnd的實際值,可以通過使用引出函數的辦法來實現,如下所示:
  static HWND hWndApp;
  void FAR PASCAL SetIsrWin(HWND hwnd)
  {
  hWndApp=hwnd;
  }
  然后在應用程序的窗口函數中,對WM-CREATE消息進行處理時調用此函數來初始化DLL中的靜態變量hWndApp:
  CASE WM-CREATE:
  …
  SetIsrWin(hwnd); /* hwnd指應用程序窗口句柄 */
  定義一個在應用程序中使用的消息:
  #define ISRM-RUPT WM-USER+255最后在DLL中的中斷服務程序代碼中,調用PostMessage即可完成Windows應用程序和中斷服務程序代碼相互的信息交流:
  void interrupt newIsr(--CPPARGS)
  {
  …
  PostMessage(hWndApp,WM-RUPT,wParam,lParam);
  …
  }
  
  四、程序實例
  本示例先安裝在DLL中的外中斷服務代碼,通過386/AT總線上的中斷申請線(IRQ12)外觸發,由中斷服務代碼發送一條消息WM-RUPT通知Windows應用程序外設有實時通信請求,應用程序收到這條消息后,在窗口用戶區顯示一條信息,表明已和外設聯絡上,并同時鳴叫一聲喇叭。
  程序分為兩部分:DLL庫代碼和Windows應用程序代碼。
  
  1.DLL庫代碼
  /*----------*
  * interrupt include file,named handle.h*
  *----------*/
  void FAR PASCAL SetIsrWin(HWND hwnd);
  void FAR PASCAL SetIRQNum(unsigned char IRQ);
  /*----------*
  * module defination file, named handle.def *
  *----------*/
  LIBRARY HANDLE
  EXETYPES WINDOWS
  STUB 'WINSTUB.EXE'
  CODE PRELOAD FIXED
  DATA PRELOAD SINGLE
  HEAPSIZE 1024
  EXPORTS
  WEP
  @1 RESIDENTNAME
  SetIRQNum @3
  /*----------*
  * interrupt service program in dll,named handle.dll *
  相關鏈接
  相關評論
主站蜘蛛池模板: 精品在线观看一区二区| 97精品国产97久久久久久免费| 精品三级一区二区| 亚洲一区精品视频| 亚洲乱小说| 国产精品久久久久久久久久嫩草| 91性高湖久久久久久久久_久久99| 亚洲国产偷| 97欧美精品| 国产欧美一区二区三区沐欲| 久久国产麻豆| 一区二区三区免费高清视频| 国内久久久| 97人人模人人爽视频一区二区| 午夜av男人的天堂| 欧洲精品一区二区三区久久| 国产一区网址| 99久久免费毛片基地| 公乱妇hd在线播放bd| 欧美精品在线观看视频| 国产精品日韩电影| 一区二区三区免费高清视频| 国产美女三级无套内谢| 午夜影院毛片| 国产精品乱码一区| 国产精品麻豆自拍| 欧美网站一区二区三区| 高清欧美精品xxxxx| 久久国产精品麻豆| 午夜激情在线播放| 欧美日韩一二三四区| 国产精品一二二区| 狠狠色噜噜狠狠狠狠2021天天| 国产日韩欧美不卡| 国产日产高清欧美一区二区三区| 国产一级二级在线| 欧美在线免费观看一区| 国产精品国产三级国产aⅴ下载| 国偷自产一区二区三区在线观看| 69xx国产| 国产无遮挡又黄又爽又色视频| 久久精品国产亚洲一区二区| 午夜影院你懂的| 精品国产伦一区二区三区| 国产一区二区三区四| 中文字幕日韩精品在线| 国产aⅴ精品久久久久久| 国产一区二区极品| 一区二区中文字幕在线观看| 日韩久久电影| 狠狠色狠狠色综合久久第一次| 免费欧美一级视频| 国产色婷婷精品综合在线手机播放| 日本边做饭边被躁bd在线看 | 日日夜夜一区二区| 国产性猛交| 国产精品视频一二区| 亚洲久色影视| 日本一二三区视频在线| 国产偷亚洲偷欧美偷精品| 国产69精品久久久久777糖心| 欧美一区二区伦理片| 日韩精品一区在线观看| 久久久久久久国产| 欧美精品久| 午夜a电影| 欧美亚洲精品一区二区三区| 99精品国产99久久久久久97| а√天堂8资源中文在线| 国产精品久久91| 91看片免费| 日本免费电影一区二区三区| 欧美一级免费在线视频| 日韩欧美国产精品一区| 国产色午夜婷婷一区二区三区| 欧美精品在线一区二区| 欧美一区二区三区日本| 午夜无人区免费网站| 狠狠色综合欧美激情| 在线观看v国产乱人精品一区二区| 国产伦精品一区二区三区免费下载 | 国产一区二区免费电影|