亚洲一级电影在线观看,九九精品无码专区免费,亚洲AV无码资源在线观看 ,欧美国产高清

微機UNIX直接視頻圖形程序設計理工論文

時間:2024-08-05 08:34:11 理工畢業論文 我要投稿
  • 相關推薦

微機UNIX直接視頻圖形程序設計理工論文

  一、圖形程序設計

微機UNIX直接視頻圖形程序設計理工論文

  1.檢測視頻適配器

  視頻顯示器是由視頻適配器硬件控制的,視頻適配器決定了圖形方式下顯示圖形的分辨率及可能的顏色[2]。利用系統調用ioctl中的CONS-CURRENT命令可以檢測到當前的視頻適配器,即:

  ioctl(0,CONS-CURRENT,NULL)

  返回-1時表示出錯,即沒有相應的視頻適配器硬件,如果檢測到VGA卡則返回值為VGA,如果檢測到EGA卡則返回值為EGA,……。

  2.初始化圖形系統

  初始化圖形必須完成下列任務。

  (1) 獲取當前的視頻顯示方式

  ioctl的CONS-GET命令用來判斷當前適配器的顯示方式,即:

  ioctl(0,CONS-GET,NULL)

  它返回顯示方式的值,這些值在包含文件vtkd.h中均有定義,如:SW-VAG640x480C為VGA適配器設置成640x480分辨率彩色圖形模式。

  (2) 設置圖形模式

  直接將圖形模式值放入ioctl中的命令項即可設置相應的圖形模式,如ioctl(0,SW-VGA640x480C,NULL)

  將VGA適配器設置成640x480分辨率的彩色圖形模式。

  (3) 獲取圖形模式下視頻緩沖區物理地址

  利用ioctl的MAPCONS命令可以實現此功能,即:

  char *scrnmem;

  scrnmem=(char *)ioctl(0,MAPCONS,NULL)

  所有實現基本圖素的操作都將針對scrnmem進行,scrnmem就是EGA/VGA相應的四個位平面的重疊地址,有關EGA/VGA的結構可參閱[2]。

  3.實現基本圖素

  DOS操作系統下,對EGA/VGA的各種視頻I/O寄存器進行操作是很方便的,可以直接使用匯編語言in和out指令進行讀寫。然而,UNIX操作系統下,對物理硬件的訪問都是由UNIX系統核心和設備驅動程序管理的,要訪問EGA/VGA的各種I/O寄存器,必須獲得對其訪問的特權,為了實現這種功能要求,可以使用下列ioctl系統調用方式:

  ioctl(0,VGA-IOPRIVL,1) 獲取VGA的各種I/O寄存器的訪問特權

  ioctl(0,EGA-IOPRIVL,1) 獲取EGA的各種I/O寄存器的訪問特權

  UNIX操作系統基本上是采用C語言編寫的,只是在低層的系統內核方面才使用低級的匯編語言,遵循這一原則,對EGA/VGA的I/O寄存器的訪問可以采用匯編語言,而實現圖形系統的基本圖素則采用C語言。

  如果用戶的UNIX系統中已有inb()和outb()函數(嵌入在/usr/include/sys/inline.h中),則可以直接使用它們完成對各種I/O寄存器的讀寫,否則,必須編寫下列低級匯編語言例程:

  /*向一端口輸出一字節*/

  /*從一端口輸入一字節 */

  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

  }

  基本圖素一般包括:設置顏色,對調色板的操作,畫點、線、弧、矩形、圓、橢圓、多邊形、畫扇形、餅圖,任意圖形填充,多邊形填充,保存屏幕,恢復屏幕等,這些操作均可用C語言實現,細節問題可參閱[2]。

  4.關閉圖形系統

  退出圖形系統之前必須恢復EGA/VGA各I/O寄存器的值,并將顯示模式恢復到進入圖形模式之前的模式。采用下列ioctl調用實現:

  ioctl(0,MODESWITCH | oldmode,NULL)

  oldmode是進入圖形方式之前獲取的方式,UNIX系統中,獲取的方式和設置的方式之間的關系為:

  設置方式值=獲取方式值|MODESWITCH

  二、虛擬終端的使用

  虛擬終端(Virtual Terminal,簡稱VT)加強了UNIX系統V/386的接口功能,它不僅允許單個用戶開發一個圖形應用軟件,而且允許多用戶、多道程序在同一個物理終端上運行,在開始一個用戶的應用程序之前不必停止另一個應用程序,而且各個用戶之間可以互相切換。

  虛擬終端有兩種操作方式[1],一種是自動操作方式(VT-AUTO),這是默認情況,比較簡單,應用程序并不了解終端用戶接受或放棄當前VT的請求,這意味著被切換掉的進程的任何輸入輸出都可能丟失。另一種方式是進程控制方式(VT-PROCESS),該方式支持應用程序與其它正在使用VT的進程之間同步,應用程序可以負責接受或放棄使用VT。

  [1]中介紹了以進程方式控制VT的過程,并以設備驅動程序方式介紹了接受和放棄對VT控制的信號處理例程。本文給出針對IBM標準終端編制VT的程序和相應的信號處理例程。

  /* 設置虛擬終端 */

  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; //設置進程控制方式

  vtmode.relsig=SIGUSR1;

  vtmode.acqsig=SIGUSR2;

  if (ioctl(0,VT-SETMODE,&vtmode)==-1) exit(1);//出錯即終止此進程

  }

  /* 放棄VT的信號處理例程 */

  void release-disp(void)

  {

  signal(SIGUSR1,release-disp);

  保存整個圖形屏幕于內部緩沖區videobuf中;

  ioctl(0),MODESWITCH | oldmode,NULL);

  //oldmode為進入圖形模式之前的顯示方式

  ioctl(0,VT-RELDISP,VT-TRUE);

  //VT-TRUE表明同意放棄VT,如果此項為0,則表示拒絕放棄VT.

  }

  /* 接受VT的信號處理例程 */

  void acquire-disp(void)

  {

  signal(SIGUSR2,acquire-disp);

  ioctl(0,newmode,NULL);//newmode為應用程序所處的圖形模式

  scrnmem=(char *)ioctl(0,MAPCONS,NULL);

  //重新獲取圖形緩沖區的物理地址

  從videobuf中恢復整個圖形屏幕,并釋放videobuf;

  ioctl(0,VT-RELDISP,VT-ACKACQ); //VT-ACKACQ表明接受VT

  }

  在微機UNIX操作系統下,針對EGA/VGA進行直接視頻程序設計,獨立開發一個圖形程序包,不僅小巧方便,而且可以重用以前在DOS下開發的圖形應用程序。筆者在SCO UNIX系統下開發了一個小的低層圖形軟件包,許多以前的DOS圖形應用程序都可以移植到UNIX系統下來。

  另外,本文介紹的程序在使用前還應包含下列文件,即:

  #include

  #include

  #include

  #include

  #include

  #include

  分配空間時還應加上#include

  參考文獻

  1 仲萃豪等.UNIX系統V/386第4版-集成軟件開發指南.北京:電子工業出版社,1992.8.

  2 張福炎等.微型計算機IBM PC的原理與應用(續二)-圖形顯示器及其程序設計.南京:南京大學出版社,1990.7.

【微機UNIX直接視頻圖形程序設計理工論文】相關文章:

微機UNIX直接視頻圖形程序設計07-05

UNIX網絡的服務器程序設計方法08-14

UNIX常用的管理命令的使用論文10-29

用SoC實現視頻圖形引擎功能的研究10-24

試論GlideScope®視頻喉鏡和Macintosh直接喉鏡顯露喉部結構比09-24

物理“實驗視頻”的定位略談論文08-08

關于醫學SCI論文寫作之直接材料收集06-29

最新物理“實驗視頻”的定位略談論文06-10

網絡經濟新模式——面向顧客的直接定制論文10-09

關于運用微機模擬物理演示實驗的物理教學論文07-31

主站蜘蛛池模板: 国产精品自产拍在线观看中文| 久久久亚洲欧洲日产国产成人无码 | 99在线精品一区二区三区| 汉寿县| 亚洲国产高清精品线久久| 无码免费午夜福利片在线| 久久精品亚洲成在人线av麻豆| 亚欧洲乱码视频一二三区| 欧美精品在线观看视频| 欧美人与动牲交zooz3d| 色av永久无码影院av| 亚洲性夜夜综合久久7777| 久久精品国产精品一区二区| 精品久久久久久中文字幕202| 久久精品成人免费观看| 国产乱子伦精品免费视频| а√天堂中文在线资源库免费观看 | 欧美疯狂xxxxxbbbbb| 亚洲无线码一区二区三区| 免费无码日产av| 亚洲综合无码无在线观看| 高清熟女国产一区二区三区| a级国产乱理伦片在线观看al| 色优久久久久综合网鬼色| 国产台湾无码av片在线观看| 潍坊市| 国产免费久久精品99久久| 巨爆乳中文字幕爆乳区| av无码精品一区二区三区三级| 日韩精品久久久久久免费 | 激情综合丁香五月| 成人国产精品日本在线观看| 欧美三级第一页| av人摸人人人澡人人超碰| 国产香蕉尹人视频在线 | 日韩欧美国产综合字幕| 国产精品日韩专区第一页| 正在播放熟妇群老熟妇456| 亚洲综合中文字幕国产精品欧美| 亚洲精品欧美综合四区| 嫖妓丰满肥熟妇在线精品|