中文字幕在线一区二区在线,久久久精品免费观看国产,无码日日模日日碰夜夜爽,天堂av在线最新版在线,日韩美精品无码一本二本三本,麻豆精品三级国产国语,精品无码AⅤ片,国产区在线观看视频

      微機UNIX直接視頻圖形程序設(shè)計

      時間:2024-07-05 14:34:15 計算機畢業(yè)論文 我要投稿
      • 相關(guān)推薦

      微機UNIX直接視頻圖形程序設(shè)計

      UNIX操作系統(tǒng)提供了X-Window圖形窗口系統(tǒng)和OPENLOOK圖形用戶界面,這些系統(tǒng)不僅昂貴、龐大,而且不便于移植以前開發(fā)的DOS圖形應(yīng)用程序。本文介紹利用微機內(nèi)部硬件控制,針對EGA/VGA圖形適配器,進行直接視頻圖形程序設(shè)計。對于比較熟悉PC-AT體系結(jié)構(gòu)和視頻程序設(shè)計知識的程序員來說,更喜歡后者,因為能有效地利用硬件特性,加快圖形處理速度。
      進行圖形程序設(shè)計時,還須考慮視頻接口的一個重要特性——虛擬終端功能,因為它允許控制幾個獨立的圖形應(yīng)用窗口,允許多個應(yīng)用程序在同一個終端上進行切換。本文提供針對IBM標(biāo)準(zhǔn)終端對虛擬終端進行有效管理的手段。
      微機UNIX直接視頻圖形程序設(shè)計有兩種方法,一種是利用設(shè)備驅(qū)動程序(見參考文獻1),另一種是針對IBM標(biāo)準(zhǔn)終端進行編程,本文介紹后者。
      一、圖形程序設(shè)計
      1.檢測視頻適配器
      視頻顯示器是由視頻適配器硬件控制的,視頻適配器決定了圖形方式下顯示圖形的分辨率及可能的顏色[2]。利用系統(tǒng)調(diào)用ioctl中的CONS-CURRENT命令可以檢測到當(dāng)前的視頻適配器,即:
      ioctl(0,CONS-CURRENT,NULL)
      返回-1時表示出錯,即沒有相應(yīng)的視頻適配器硬件,如果檢測到VGA卡則返回值為VGA,如果檢測到EGA卡則返回值為EGA,……。
      2.初始化圖形系統(tǒng)
      初始化圖形必須完成下列任務(wù)。
      (1) 獲取當(dāng)前的視頻顯示方式
      ioctl的CONS-GET命令用來判斷當(dāng)前適配器的顯示方式,即:
      ioctl(0,CONS-GET,NULL)
      它返回顯示方式的值,這些值在包含文件vtkd.h中均有定義,如:SW-VAG640x480C為VGA適配器設(shè)置成640x480分辨率彩色圖形模式。
      (2) 設(shè)置圖形模式
      直接將圖形模式值放入ioctl中的命令項即可設(shè)置相應(yīng)的圖形模式,如ioctl(0,SW-VGA640x480C,NULL)
      將VGA適配器設(shè)置成640x480分辨率的彩色圖形模式。
      (3) 獲取圖形模式下視頻緩沖區(qū)物理地址
      利用ioctl的MAPCONS命令可以實現(xiàn)此功能,即:
      char *scrnmem;
      scrnmem=(char *)ioctl(0,MAPCONS,NULL)
      所有實現(xiàn)基本圖素的操作都將針對scrnmem進行,scrnmem就是EGA/VGA相應(yīng)的四個位平面的重疊地址,有關(guān)EGA/VGA的結(jié)構(gòu)可參閱[2]。
      3.實現(xiàn)基本圖素
      DOS操作系統(tǒng)下,對EGA/VGA的各種視頻I/O寄存器進行操作是很方便的,可以直接使用匯編語言in和out指令進行讀寫。然而,UNIX操作系統(tǒng)下,對物理硬件的訪問都是由UNIX系統(tǒng)核心和設(shè)備驅(qū)動程序管理的,要訪問EGA/VGA的各種I/O寄存器,必須獲得對其訪問的特權(quán),為了實現(xiàn)這種功能要求,可以使用下列ioctl系統(tǒng)調(diào)用方式:
      ioctl(0,VGA-IOPRIVL,1) 獲取VGA的各種I/O寄存器的訪問特權(quán)
      ioctl(0,EGA-IOPRIVL,1) 獲取EGA的各種I/O寄存器的訪問特權(quán)
      UNIX操作系統(tǒng)基本上是采用C語言編寫的,只是在低層的系統(tǒng)內(nèi)核方面才使用低級的匯編語言,遵循這一原則,對EGA/VGA的I/O寄存器的訪問可以采用匯編語言,而實現(xiàn)圖形系統(tǒng)的基本圖素則采用C語言。
      如果用戶的UNIX系統(tǒng)中已有inb()和outb()函數(shù)(嵌入在/usr/include/sys/inline.h中),則可以直接使用它們完成對各種I/O寄存器的讀寫,否則,必須編寫下列低級匯編語言例程:
      /*向一端口輸出一字節(jié)*/
      /*從一端口輸入一字節(jié) */
      void outb(int port,uchar value)
      {
      -asm push edx
      -asm mov edx,port
      -asm mov al,value
      -asm out dx,al
      -asm pop edx
      }
      uchar inb(int port)
      {
      -asm push edx
      -asm mov edx,port
      -asm in al,dx
      -asm pop edx
      }
      基本圖素一般包括:設(shè)置顏色,對調(diào)色板的操作,畫點、線、弧、矩形、圓、橢圓、多邊形、畫扇形、餅圖,任意圖形填充,多邊形填充,保存屏幕,恢復(fù)屏幕等,這些操作均可用C語言實現(xiàn),細(xì)節(jié)問題可參閱[2]。
      4.關(guān)閉圖形系統(tǒng)
      退出圖形系統(tǒng)之前必須恢復(fù)EGA/VGA各I/O寄存器的值,并將顯示模式恢復(fù)到進入圖形模式之前的模式。采用下列ioctl調(diào)用實現(xiàn):
      ioctl(0,MODESWITCH | oldmode,NULL)
      oldmode是進入圖形方式之前獲取的方式,UNIX系統(tǒng)中,獲取的方式和設(shè)置的方式之間的關(guān)系為:
      設(shè)置方式值=獲取方式值|MODESWITCH
      二、虛擬終端的使用
      虛擬終端(Virtual Terminal,簡稱VT)加強了UNIX系統(tǒng)V/386的接口功能,它不僅允許單個用戶開發(fā)一個圖形應(yīng)用軟件,而且允許多用戶、多道程序在同一個物理終端上運行,在開始一個用戶的應(yīng)用程序之前不必停止另一個應(yīng)用程序,而且各個用戶之間可以互相切換。
      虛擬終端有兩種操作方式[1],一種是自動操作方式(VT-AUTO),這是默認(rèn)情況,比較簡單,應(yīng)用程序并不了解終端用戶接受或放棄當(dāng)前VT的請求,這意味著被切換掉的進程的任何輸入輸出都可能丟失。另一種方式是進程控制方式(VT-PROCESS),該方式支持應(yīng)用程序與其它正在使用VT的進程之間同步,應(yīng)用程序可以負(fù)責(zé)接受或放棄使用VT。
      [1]中介紹了以進程方式控制VT的過程,并以設(shè)備驅(qū)動程序方式介紹了接受和放棄對VT控制的信號處理例程。本文給出針對IBM標(biāo)準(zhǔn)終端編制VT的程序和相應(yīng)的信號處理例程。
      /* 設(shè)置虛擬終端 */
      void setvirtualterm(void)
      {
      struct vt-mode vtmode;
      signal(SIGUSR1,release-disp); //release-disp為放棄VT的信號處理例程
      signal(SIGUSR2,acquire-disp); //acquire-disp為接受VT的信號處理例程
      vtmode.mode=VT_PROCESS; //設(shè)置進程控制方式
      vtmode.relsig=SIGUSR1;
      vtmode.acqsig=SIGUSR2;
      if (ioctl(0,VT-SETMODE,

      【微機UNIX直接視頻圖形程序設(shè)計】相關(guān)文章:

      UNIX網(wǎng)絡(luò)的服務(wù)器程序設(shè)計方法03-20

      試論GlideScope®視頻喉鏡和Macintosh直接喉鏡顯露喉部結(jié)構(gòu)比03-08

      氣柜直接置換-03-20

      Windows 中斷程序設(shè)計03-28

      靜態(tài)圖像的直接顯示03-06

      C語言程序設(shè)計 (一)12-26

      分枝結(jié)構(gòu)的程序設(shè)計 (一)03-07

      論Unix環(huán)境下程序和業(yè)務(wù)數(shù)據(jù)安全性探析01-06

      論微機頻頻死機的原因及處理03-26

      主站蜘蛛池模板: 亚洲天堂日韩av在线综合| 精品一区二区三区四区少妇| 亚洲综合精品在线观看中文字幕| 亚洲日本视频一区二区三区| 91丝袜美腿高跟国产老师在线| 久久婷婷国产精品简爱av| 一区二区久久不射av| 色婷婷久久一区二区三区| 国产无遮挡又黄又爽无VIP| 五月婷婷激情六月开心| 乐业县| 999久久久免费精品国产牛牛| 久久久国产不卡一区二区| 国产伦一区二区三区精品| 无码人妻精品中文字幕免费| 普陀区| 南昌县| 会同县| 东兴市| 花莲县| 斗六市| 国产自产拍精品视频免费看| 99久久久国产精品丝袜| 亚洲av熟女天堂系列| 在线观看国产内射视频| 99综合精品久久| 日韩av一区二区三区在线播放| 网友自拍人妻一区二区三区三州| 亚洲高清一区二区三区在线观看| 固镇县| 辛集市| 国产人妖av一级黄片| 麻豆av一区二区天堂| 亚洲AV无码一区二区一二区教师| 唐河县| 河津市| 日韩美女高潮流白浆视频在线观看| 国产精品亚洲ΑV天堂无码| 亚洲先锋影院一区二区| 亚洲欧洲综合有码无码| 亚洲av综合日韩精品久久久|