『壹』 arm7 lpc2103 中斷 c語言
一下來自我的空間http://hi..com/ch314156/blog
注意要設定選項,不然中斷向量表不位於地址0出,也就無法進入中斷常式,具體設定方法是:Options for Target'???'->Linker->選中"Use Memory Layout from Target Dialog"
//*****************************************************************************************
//非向量外部中斷C常式
//P0.16做鍵盤輸入,P0.18做LED輸出
#include<LPC2103.H>
#define LED 1<<18
void __irq WaiBuZhongDuan(void) // 注意要加「__irq」,告訴編譯器,
{ //這是中斷常式
if((IOSET&LED)==0) IOSET=LED;
else IOCLR=LED; //將P0.0取反
EXTINT=0X01; //清除中斷標志,寫1清0
VICVectAddr=0; //清0,通知VIC中斷結束
}
int main(void)
{
PINSEL1=0X1; //P0.16選為外部中斷0引腳輸入
IODIR=LED; //P0.18作為LED輸出
EXTMODE=0X01; //邊沿觸發
VICDefVectAddr=(int)WaiBuZhongDuan; //填入中斷常式的地址
VICIntEnable=1<<14; //使能EINT0中斷
while(1) ;
}
//*****************************************************************************************
PROTEUS模擬見下:
硬體模擬:
補充說明:程序中沒有區分IRQ或FIQ,因為VICIntSelect默認為0即所有中斷源都是IRQ。
如果中斷不能進入,查看一下CPSR中的I位,如果是1,說明CPSR中斷標志禁止中斷,所以要將I清0,解決辦法是利用一個軟體中斷,進入管理模式,將SPSR的I清0,返回前將SPSR復制到CPSR中。具體做法有待以後解決。本來是想用內嵌匯編的,但是考慮到用戶模式不能對CPSR修改。或者修改一下啟動代碼。
VICDefVectAddr是非向量IRQ的中斷常式地址(與此相似的16個向量IRQ的中斷常式地址VICVectAddr0~15),中斷觸發後,VICDefVectAddr(同樣,如果是向量IRQ,相應的VICDefVectAddr0~15)中的值自動進入VICVectAddr,所以PC指向VICVectAddr後就進入相應的中斷常式。
那麼PC為什麼會指向VICVectAddr呢?與C51相似的是,ARM的IRQ觸發後,PC會跳到0x00000018地址處,查看Startup里的異常向量表,在地址0x00000018處有這樣一條指令: LDR PC, [PC, #-0x0FF0],計算一下 0x00000018+8-0x0FF0=0xFFFFF030,(+8是因為三級流水線),0xFFFFF030就是VICVectAddr的地址。
觀察一下異常向量表,和C51的中斷向量表比較一下,是不是有相似之處:
ARM:
Vectors LDR PC, Reset_Addr ;0x00000000復位
LDR PC, Undef_Addr ;0x00000004未定義異常
LDR PC, SWI_Addr ;0x00000008軟體中斷
LDR PC, PAbt_Addr ;0x0000000C預取指中止
LDR PC, DAbt_Addr ;0x00000010數據中止
NOP ;0x00000014保留
; LDR PC, IRQ_Addr
LDR PC, [PC, #-0x0FF0] ;0x00000018中斷
LDR PC, FIQ_Addr ;0x0000001C快速中斷
C51:
ORG 0003H
SJMP INT0
ORG 000BH
SJMP TIME0
ORG 0013H
SJMP INT1
ORG 001BH
SJMP TIME1
ORG 0023H
SJMP SERIAL
VICIntEnable=1<<14是因為外部中斷0的編號為14。
「__irq」如果不寫,編譯器無法正常處理此中斷常式,經測試,如果沒有,中斷常式不能返回正常,具體原因:若不加「__irq」,編譯器把此程序看作普通子程序,返回指令是BX RL,若加「__irq」,編譯器把此程序看作中斷常式,返回指令是SUBS PC,R14,#4,這才是中斷返回的正確指令。
EXTINT是外部中斷的中斷標志位,寫1才能清0,寫0無效,硬體模擬證明:如果不清0,中斷常式將無限循環。順便說一句:PROTEUS的虛擬模擬結果和事實(硬體模擬)有差異,比如對EXTINT、EXTMODE,VICVectAddr=0沒有真實表現,KEIL的軟體模擬效果和事實符合的很好。
經測定:如果沒有VICVectAddr=0;這一句代碼,程序將不會第二次進入中斷常式。
『貳』 如何打開VIC文件
我們經常不知道一些文件怎麼打開,來這里查查吧
http://www.gzhtcm.com/bbs/read.php?tid=7203
386 Windows虛擬設備驅動程序 CDX 復合索引文件
ABC ASCII編碼格式文件 CFG 配置文件,包含系統設備和環境信息
ACM 音頻壓縮管理驅動程序 CGM Paint Shop Pro映象文件
ACT 文檔向導 CHK 被CHKDSK/F命令恢復的由丟失的簇組成的文件
ADF 系統管理配置 CLP 剪貼板文件
AIF 聲音格式文件 CMD 命令文件
AIO 由APL文件轉換成的格式文件 CNF 配置文件,包含設備配置的有關信息
ANI 動畫滑鼠游標 CNT 幫助內容
APL APL工作區格式文件 COB COBOL語言源程序文件
APP 應用文件 COM DOS命令文件
ARC 壓縮文件 CPI 代碼字元集信息文件
ARJ 壓縮文件 CPL 控制面板應用程序
ART 圖像文件 CPP C/C++程序源文件
ASC ASC文本文件 CPT Macintosh Compact Pro文件庫
ASM MASM匯編語言源程序文件 CRD WINDOWS卡片
AU 聲音文件 CRF 交叉匯編文件,由MASM編譯器產生的程序列表
AVI Windows視頻文件 CRT INTERNET安全證書
AWD 傳真瀏覽文件 CSV 命令分割數據
AWP 傳真關鍵瀏覽器 CTL 控制文件
AWS 傳真簽名瀏覽器 CUR 滑鼠游標資源文件
BAD 錯誤文件 CUT Paint Shop Pro映象文件
BAK 備份文件 DAT 數據文件,包含程序中需處理或產生的一批數據
BAS BASIC語言源程序文件 DB dBASE或FoxBASE配置文件,包含運行環境的參數
BAT DOS批處理文件 DBC 資料庫
BCM WORKS通訊文件 DBF FoxBASE或FoxPro資料庫索引
BDB WORKS資料庫文件 DBS 資料庫
BFC 公文包 DBT 備注文件
BIN 二進制文件 DCT 字典文件
BMP WINDOWS點陣圖文件 DCX 傳真瀏覽文檔或資料庫索引
C C語言源程序文件 DDI 壓縮文件
CAB WINDOWS安裝程序 DEF 模式定義文件
CAL WINDOWS日歷文件 DER Internet安全證書
CDA CD音軌文件 DEV 設備驅動文件,包含安裝新設備時所需的參數
CDR Paint Shop Pro映象文件 DGS 設備診斷文件
MDB 擴展的瀏覽器 PCX 圖形數據文件
MEM FOXBASE內存變數文件 PDR 口驅動程序
MID MIDI序列 PF ICM描述文件
MIF MIDI樂器 PFM 列印機字形組合文件
MIV MCC訪問The Microsoft Network的快捷方式 PFO FORTRAN語言預編譯文件
MLV 電影剪輯 PGM 樣本或演示文件
MMF MICROSOFT郵件 PIC 圖形數據文件
MMM 動畫 PIF 程序信息文件
MNF 已存的MSN搜索 PIX 圖形數據文件
MNT 菜單備注 PJT 項目備注
MNU 菜單數據文件,包含有關菜單的定義 PJX 項目
MNX 表單 POT POWERPOINT模板
MOV 影片剪輯 PPD POSTSCRIPT列印機描述
MPA 運動圖形壓縮格式文件 PPT 圖片文件
MPD 驅動程序 PRG FOXBASE或FOXPRO過程或程序文件
MPE 運動圖形壓縮格式文件 PRJ 設計數據文件
MPG 運動圖形壓縮格式文件 PRN 列印格式文件
MPR 生成的菜單程序 PRO 說明文件
MPV 媒體剪輯 PRT 列印機格式
MPX 編譯後的菜單程序 PS 用於POSTSCRIPT的文檔
MSG 信息文件 PST MICROSOFT郵件
MSN MICROSOFT網路中心 PUB 通訊用公鑰文件
MSP WINDOWS畫筆圖像 PWL 口令列表
NAV MSN應用程序 PX 原始索引文件
NDX DBASE或FOXBASE索引數據文件 QIC MICROSOFT程序的備份集
NED MSN應用程序 QPR 生成的查詢程序
NET 網路配置文件 QPX 編輯後的查詢程序
NIS 自然語言服務驅動程序 QT 影片剪輯
NWS INTERNET新聞 RAS Paint Shop Pro映象文件
OBD OFFICE活頁夾 RAW Paint Shop Pro映象文件
OBJ 目標代碼文件 RBK WINDOWS設備配置備份文件
OBT OFFICE活頁夾模板 RC 資源文件
OBZ OFFICE活頁夾向導 RCF RICHWIN藝術漢字製作器
OCX OLE控制 REC 用RECOVER命令恢復的文件
OFN 其它OFFICE文檔 REG 應用程序注冊器
OUT C語言目標文件 REF 說明性的文本文件
OVD 覆蓋文件 REP 報表文件
OVL 覆蓋文件 RLE 壓縮格式化文件
OVR 覆蓋文件 RMI MIDI音序
PAB MICROSOFT郵件 RPF 報表正文格式化文件
PAS PASCAL語言源程序文件 RPT 報表生成文件
PBK NBN電話簿 RTF 文本格式文件
PBM PAINT SHOP PRO映象文件 SAV 拷貝文件
PC C語言預編譯文件 SCP 撥號網路腳本
SCR 正本文件 VBX Visual Basic控制文件
SCT 表單備注 VCT 可視類庫備注
SCX 表單 VCX 可視類庫
SEA MACINTOSH自我選用檔案庫文件 VER 版本描述
SEC 加密文件 VEW 報表視圖文件
SET 設置文件 VIR 被病毒感染文件的備份文件
SHB 指向一個文檔的快捷方式 VUE FoxPro 2.X視圖
SHL 批命令文件 VXD 虛擬設置驅動程序
SHS 碎片對象 WAV 聲音文件
SIT 壓縮文件 WBK WORD後備文檔
SLT 設置文件 WCM Works通訊文件
SND 聲音格式文件 WDB Works資料庫文件
SPD POSTSCRIPT列印機描述 WHT NetMeeting白板文檔
SPL 假離線文件 WIN 窗口文件
SPR 生成的屏幕程序 WIZ Word向導
SPT SUPER-STAR圖形版面文件 WLL Word載入項
SPX 編譯後的屏幕程序 WPC 寫字板文檔轉換
SQL SQL *PLUS命令文件 WPS 文字處理系統WPS建立的文件
SWP 虛擬內存交換文件 WRI Windows書寫器文檔
SYM 符號調試定義文件 WRL 虛擬現實模型語言對象
SYS 系統控制文件 XAB Microsoft郵件地址薄
TAR UNIX合並文件 XBM 圖形格式文件
TBK 備注備份 XLA Excel載入宏
TBL 詞典文件 XLB Excel工作表
TGZ 一種先合並後壓縮的文件 XLC Excel圖表
TIF 圖形圖像文件 XLD Excel對話框
TMP 臨時文件 XLK Excel備份文件
TRN 翻譯文件 XLM Excel宏文件
TQT 壓縮文件 XLS Excel工作表
TSP 電話服務提供者 XLT Excel模板
TTC TrueType合成文件 XLV Excel VBA模板
TTF True Type字體文件 XLW Excel工作表
TXT 文本文件 XSL 分層文件
ULS 用戶定位服務 ZIP 由PKZIP壓縮的文件
URL Internet快捷方式 ZOO 用於在互動式平台轉換的一種文件格式
DIB Paint Shop Pro映象文件 H C編譯頭文件
DIC 字典文件 HDX Macintosh BinHex文件
DIF 變化備份設置目錄文件 HEX 十六進制數據文件
DIR 目錄文件 HGL Paint Shop Pro映象文件
DLL WINDOWS動態鏈接庫文件 HIS 歷史文件
DMP Oracle二進制格式備份文件 HLP 圖形方式幫助文件
DOB 用戶文本文件 HPJ 幫助Project文件
DOC 文檔文件 HPP C/C++頭文件
DOS DOS文件 HT 超級終端文件
DOT 文檔文件 HTM Internet超文本標記語言
DOX 用戶文本文件 ICC 圖像配色描述文件
DRV 設備驅動文件 ICO 圖標文件
DRW Paint Shop Pro映象文件 IDE Borland C++ Project文件
DSN ODBC資料庫文件 IDF MIDI樂器文件
DUN 由撥號網路導出的文件 IDX 索引數據文件
DWG AUTOCAD圖形文件 IMD 編碼字典文件
DXF Paint Shop Pro映象文件 IME 輸入法文件
EML INTERNET電子郵件 IMG 磁碟鏡像文件
EPS 壓縮的附錄文件 INC 包含文件
ERR 出錯記錄文件 INF 安裝信息
EXC 文本文件 INI 初始化參數文件
EXE 可執行文件 INP SQL *FORMS正文文件
FKY 宏 INS INTERNET通訊設置文件
FLL FOXPRO動態鏈接庫 ISP INTERNET通訊設置文件
FMT dBASE或FoxBase屏幕格式文件 JOR 日誌文件
FND 保存的搜索結果 JPE JPEG圖像格式文件
FNT 字形數據文件 JPG 靜態圖形壓縮格式文件
FON 字形數據文件 KBD 鍵盤布局
FOR FORTRAN語言源程序文件 KEY 加密鑰文件
FOT 指向字體的快捷鍵 LBL dBASE標簽格式文件
FOX FOXBASE編譯目標文件 LBT 標簽備注
FPT 表備注 LBX 標簽
FRM 報表格式文件或SQL*FORMS二進制文件 LGO WINDOWS標識
FRT 報表備份 LHA 用LHARC壓縮的文件
FRX 報表 LIB 庫文件
FUL 全盤備份設置目錄文件 LNK 靜態快捷鍵
FUN 功能菜單文件 LOG 日誌文件
FXP Visual FoxPro 3.0編譯程序 LST 列表文件
GEM Paint Shox Pro映象文件 LZH 用LHARC壓縮的文件
GIF 圖形交換文件 MAC 宏定義文件
GR3 Windows 3.X屏幕捕捉器 MAP 映象文件
GRA 圖形數據文件 MB 碼表文件
GRP Microsoft程序組 MCC 訪問The Microsoft Network的快捷方式
GZ 用GNZ ZIP打包的文件 MCI MCI命令集
什麼是文件名後綴
說起來Windows工作界面下的文件名簡直是隨心所欲,比如:某編輯部的2000年工作計劃。文件名即可用中文直接表達,而且長度最長可達256個字元,讓人看起來真是一目瞭然。然而在Windows環境中,安裝的軟體中卻大量存在著類似CALENDAR.EXE、GAMES.GRP等等的文件名,這又是為什麼呢?原來這些文件名都是根據DOS環境的文件名命名規則而定的。
DOS環境下的文件名
在DOS 下,文件名採用8+3結構,即:最長8位的文件名,由小數點分隔後再跟上最長3位的後綴名,如:READ.ME、SETUP.EXE,一般情況下文件名不允許使用漢字,只能由字母、數字和一些符號組成。如READ.ME用中文理解就是"讀我",即提示用戶在使用軟體前先看看這個文件的內容,以獲取更多的提示信息。而更重要的是,DOS下規定用後綴名來區分各種不同的文件。
在DOS下最容易遇到的首先是可執行文件,後綴名有兩類:*.exe、*.com(此處的*表示文件名任意),它們是由匯編語言或其它高級語言編出的程序經過編譯後直接在DOS下運行的文件。有時由於軟體功能多、內存偏小,不能一次性全部調入內存還可能有同文件名的ovl文件,如ws.exe、 ws.ovl。另外還有一種文件可以直接運行,*.bat,即批處理文件,其中有許多命令或可執行文件名,主要用於提高工作效率,其中最有用的是 Autoexec.bat,這個文件在開機時會被自動執行(自動執行在英文中就是Automatically execute)。而另外一種可以載入但不能直接運行的文件即是系統擴展管理文件*.sys(sys即系統system),它主要提供某些非標准設備如滑鼠、擴充內存等的驅動程序,如mouse.sys、himem.sys。為了統一管理還專門規定了一個config.sys的文本文件來一次性地在開機時自動調入這些必需的設備驅動程序,這些文件一旦被誤刪或換名或被病毒侵襲則將直接導致系統工作不正常。
DOS下字處理產生的文件原本是可以不用後綴的,但人們常用*.txt表示(txt即文本text)。被所有的平台和所有應用程序支持。而為了管理方便,人們也可以用自己的名字做後綴來表示是自己建的文本文件,如我輸入的很多文章即為*.mcj,為了便於用戶在意外刪掉原文件的情況下能盡快恢復原文件,許多字處理系統都提供了一種自動備份的功能,如我第二次編輯JIHUA.MCJ時(JIHUA:計劃的漢語拼音),系統會先拷貝一份原文件為JIHUA.BAK。使用具有特殊格式功能的字處理軟體,如求伯君先生早年推出的WPS,就會規定其後綴為.wps,用以標識是用WPS生成的文本文件。當使用字處理軟體編輯高級語言程序時,後綴通常為相應語言的前三個字母(如:*.BAS即BASIC語言源程序,*.PAS為PASCAL語言程序,*.FOR為Fortran語言程序,*.C即為 C語言,*.ASM即為匯編語言程序)。
伴隨著可執行文件常附有以下幾類文件:*.HLP即幫助文件(help)、*.CFG即配置文件(config)、*.DAT即數據文件(data)、*.LOG即日誌文件(log)、*.TMP為臨時文件(temporal)。
Windows環境下的文件名
絕大多數DOS文件名後綴在Windows下繼續有效,但Windows本身也引出了許多種嶄新的後綴名,如:*.drv為設備驅動程序 (Driver)、*.fon和*.fot都是字型檔文件、*.grp為分組文件(Group)、*.ini為初始化信息文件 (Initiation)、*.pif為DOS環境下的可執行文件在Windows下執行時所需要的文件格式、*.crd即卡片文件(Card)、 *.rec即記錄器宏文件(Record)、*.wri即文本文件(Write),它是字處理write.exe生成的文件、*.doc和*.rtf也是文本文件(Document),它們是Word產生的文件、*.cal為日歷文件、*.clp是剪貼板中的文件格式、*.htm和 *.html即主頁文件、*.par為交換文件、*.pwl為口令文件(Password)等等。
圖像文件名後綴
進入多媒體世界後,大家會看到各種各樣精彩的圖片,會發現許多種後綴名。的確,由於各個公司在開發圖形有關的軟體時都自製標准,導致今日在圖形方面有太多的格式,以下就是常見的幾種格式: 首先是一種點陣圖文件格式,它是一組點(像素)組成的圖像,它們由圖像程序生成或在掃描圖像時創建。主要有Windows點陣圖(.BMP):由 Microsoft公司開發,它被Windows和Windows NT平台及許多應用程序支持。支持32位顏色,用於為Windows界面創建圖標的資源文件格式,游標(.CUR、.DLL、.EXE):資源文件格式,用於創建Windows界面的游標。OS/2點陣圖(.BMP):Microsoft公司和IBM開發的點陣圖文件格式。它為各種操作系統和應用程序所支持。支持壓縮,最大的圖像像素為64000×64000。畫筆(.PCX):由Zsoft公司推出,它對圖像數據也進行了壓縮,可由PCX生成。用於 Windows的畫筆。支持24位顏色,最大圖像像素是64000×64000。支持壓縮。圖形交換格式:
Graphics Interchage Format(.GIF):由Compu Serve創建,它能以任意大小支持圖畫,通過壓縮可節省存儲空間,還能將多幅圖畫存在一個文件中。支持256色,最大圖像像素是64000×64000。
Kodak Photo CD(.PCD):Eastman Kodak所開發的點陣圖文件格式,被所有的平台所支持,PCD支持24位顏色,最大的圖像像素是2048×3072,用於在CD-ROM上保存照片。
Adobe Photoshop(.PSD):Adobe Photoshop的點陣圖文件格式,被Macintosh和MS Windows平台所支持,最大的圖像像素是30000×30000,支持壓縮,廣泛用於商業藝術。
Macintosh繪畫(.MAC):Apple公司所開發的點陣圖文件格式。被Macintosh平台所支持,僅支持單色原圖,最大圖像像素是576×720。支持壓縮,主要用於在Macintosh圖形應用程序中保存黑白圖形和剪貼畫片。
動畫文件的後綴名
動畫文件格式用於保存包含動畫框架中的圖形信息。主要有:Autodesk FLIC(.FLC):即.FLI,Autodesk Animator和AnimatorPro的動畫文件格式。支持256色,最大的圖像像素是64000×64000,支持壓縮。廣泛用於動畫圖形中的動畫序列、計算機輔助設計和計算機游戲應用程序。不大適合製作真實世界圖像動畫。
MacPICTS(.PCS,.PIC):Macromedia開發的動畫文件格式,為Macintosh應用程序使用。支持256色,支持壓縮,用於保存動畫數據,是Quick Time的前身。
Microsoft資源互換文件格式,TIFF(.AVD):Microsoft公司開發的動畫文件格式,被Windows、Windows
NT平台和OS/2多媒體應用程序所支持,支持256色和壓縮,用於在多媒體應用程序中保存音頻、視頻和圖形信息。
MPEG(.MPEG):國際標准化組織的運動圖像專家小組開發的動畫文件格式。被所有平台和Xing Technologies
MPEG播放器及其它應用程序所支持,支持壓縮,最大圖像像素是4095×4094×30幀/每秒。用於編碼音頻、視頻、文本和圖形數據。
Quick Time(.QTM):Apple計算機公司開發的動畫文件格式。被Apple Macintosh和Microsoft
Windows平台所支持,支持25位顏色,最大圖像像素是64000×64000,支持壓縮,用於保存音頻和運動視頻信息。
聲音文件的後綴名
聲音文件格式是用於保存數字音頻信息的。它們主要有:
AIFF(.AIF):這是Apple計算機公司開發的聲音文件格式,被Macintosh平台和應用程序所支持。支持壓縮。
Amiga聲音(.SVX):Commodore所開發的聲音文件格式,被Amiga平台和應用程序所支持,不支持壓縮。
MAC聲音(.SND):Apple計算機公司開發的聲音文件格式,被Macintosh平台和多種Macintosh應用程序所支持,支持某些壓縮。
MIDI(.MID):國際MIDI協會開發的聲音文件格式,被Windows平台和許多應用程序所支持,用於為樂器創建數字聲音。
聲霸(.VOC):Creative Labs公司開發的聲音文件格式,被Windows和DOS平台所支持,支持壓縮。
WAVE(.WAV):微軟公司用作Windows平台上保存音頻信息的資源格式。 壓縮文件的後綴名
為了提高存儲效率,許多公司都推出了壓縮數據的方法和相應的軟體,這類文件的使用主要通過壓包和解包軟體來進行,主要的後綴有:*.zip、 *.arj、*.rar、*.lzh、*.jar。還有一些專用的壓縮文件,如:*.ex_、*.dl_、*.d3_、*.cab等。
資料庫類文件的後綴名
在Dbase、FoxBase、Foxpro系列軟體的環境下有以下幾類後綴:
.dbf 資料庫文件(databasefile) .prg 命令文件(即程序Program)
.fxp 編譯後的程序 .scx和.sct 屏幕文件
.fpt 備注欄位文件 .frx和.frt 報表文件
.cbx和.pjt 標簽文件 .mnx 和.mnt 菜單文件
.pjx和.pjt 工程文件 .app 應用文件
.cdx和.idx 索引文件 .qpr和.qpx SQL查詢文件
.fp 配置文件 .ap 生成應用
.err 編譯錯誤文件 .men 內存應用
.fky 鍵宏文件 .win 窗口文件
.pcb 庫文件 .tmp 臨時文件
.tbk 臨時資料庫文件
可安全刪除的文件類型
臨時文件:*.tmp,*.syd,*.$$$,*.@@@,*._mp,*.gid,*.~*,*.gts
備份文件:*.bak,*.old,*.wbk,*.xlk,*.ckr_
幫助文件:*.hlp、*.chm、*.cnt 後記
用戶要注意在不同的操作系統下,後綴名的約定會有所不同,如在Unix下,*.p代表Pascal語言程序,*.z代表壓縮文件,*.tar代表歸檔文件。另外,針對極特殊的設備,其驅動程序也會有特殊的後綴,如3DS顯示卡的驅動程序是*.exp。還有某些公司針對自己的產品也規定了文件名後綴,如方正公司的圖像排版文件規定用*.grh(即Graph)。
文件名的後綴代表著某一種類型的文件,一般會由某一種特定的軟體產生和處理。只有對這些後綴名的知識有一定的了解,才能在上機的過程中知道其所以然。這兒帶著大家看到了常見的一些後綴類型,實際上還有很多類型,不可能全部講完。常言說,師傅領進門,修行在個人,以後大家在計算機世界中自己轉著看吧。
常見的文件後綴名
.ACA
Microsoft的代理使用的角色文檔
.acf
系統管理配置
.acm
音頻壓縮管理驅動程序,為Windows系統提供各種聲音格式的編碼和解碼功能
.aif
聲音文件,支持壓縮,可以使用Windows Media Player和QuickTime Player播放
.AIF
音頻文件,使用Windows Media Player播放
.AIFC
音頻文件,使用Windows Media Player播放
.AIFF
音頻文件,使用Windows Media Player播放
.ani
動畫游標文件擴展名,例如動畫沙漏。 .ans
ASCII字元圖形動畫文件
.arc
一種較早的壓縮文件,可以使用WinZip,WinRAR,PKARC等軟體打開
.arj
壓縮文件。可以使用WinZip,WinRAR,PKARC等軟體打開
.asf
微軟的媒體播放器支持的視頻流,可以使用Windows Media Player播放
.asp
微軟的視頻流文件,可以使用Windows Media Player打開
.asp
微軟提出的Active Server Page,是伺服器端腳本,常用於大型網站開發,支持資料庫連接,類似PHP。可以使用Visual InterDev編寫,是目前的大熱門
.asx
Windows Media 媒體文件的快捷方式 .au
是Internet中常用的聲音文件格式,多由Sun工作站創建,可使用軟體Waveform Hold and Modify 播放。Netscape Navigator中的LiveAudio也可以播放.au文件
.avi
一種使用Microsoft RIFF規范的Windows多媒體文件格式,用於存儲聲音和移動的圖片
.bak
備份文件,一般是被自動或是通過命令創建的輔助文件,它包含某個文件的最近一個版本,並且具有於該文件相同的文件名
.bas
Basic 語言源程序文件,可編譯成可執行文件,目前使用Basic開發系統的是Visual Basic
.bat
批處理文件,在MS-DOS中,.bat文件是可執行文件,有一系列命令構成,其中可以包含對其他程序的調用 .bbs
電子告示板系統文章信息文件
.bfc
Windows的公文包文件
.bin
二進制文件,其用途依系統或應用而定
.bmp
Bitmap點陣圖文件,這是微軟公司開發Paint的自身格式,可以被多種Windows和Windows NT平台及許多應用程序支持,支持32位顏色,用於為Windows界面創建圖標的資源文件格式。
.c
C 語言源程序文件,在C語言編譯程序下編譯使用
.cab
Microsoft制訂的壓縮包格式,常用於軟體的安裝程序,使用Windows自帶的實用程序,Extract.exe可以對其解壓縮,WinZip,WinRAR等都支持這種格式
.cal
Windows 中的日歷文件
.cdf
Internet Explorer的頻道文件
.cdr
CorelDraw中的一種圖形文件格式,它是所有CorelDraw應用程序中均能夠使用的一種圖形圖像文件格式
.cdx
索引文件,存在於Dbase,Foxbase,Foxpro系統軟體環境下
.cfg
配置文件,系統或應用軟體用於進行配置自己功能,特性的文件
.chm
編譯過後的HTML文件,常用於製作幫助文件和電子文檔
.clp
在Windows下剪貼板中的文件格式
.cmd
用於Windows NT/2000的批處理文件,其實與BAT文件功能相同,只是為了與DOS/Windows 9x下的BAT有所區別
.cmf
音效卡標準的音樂文件,FM合成器等可以回放
.cnf
NetMeetting會議連接文件
.cnt
聯機幫助文件目錄索引文件,通常和同名的.hlp文件一起保存
.col
由Autodesk Animator,Autodesk Animator Por等程序創建的一種調色板文件格式,其中存儲的是調色板中各種項目的RGB值
.com
DOS可執行命令文件,一般小於64KB
.cpl
控制面板擴展文件,Windows操作系統使用
.cpp
C++語言源程序,非常強大的語言,在各種平台中都有相應的開發系統
.crd
Windows中的卡片文件
.crt
用於安全方面的證書認證文件
.cur
Windows下的游標資源文件格式,可用游標編輯軟體編輯
.css
Text/css文件
.dat
數據文件,在應用程序中使用
.dat
VCD中的圖象聲音文件,VCD播放軟體可調用,或是通過VCD機播放
.dbf
資料庫文件,Foxbase,Dbase,Visual FoxPro,等資料庫處理系統所產生的資料庫文件
.dcx
傳真瀏覽文檔文件
.ddi
映象文件,DUP,HD,IMG等工具可展開
.dev
設備驅動程序
.dib
設備無關點陣圖文件,這是一種文件格式,其目的是為了保證用某個應用程序創建的點陣圖圖形可以被其它應用程序裝載或顯示一樣
.dir
目錄文件
.dll
Windows動態連接庫,幾乎無處不在,但有時由於不同版本DLL沖突會造成敗各種各樣的問踢
.doc
是目前市場佔有率最高的辦公室軟體Microsoft Office中的字處理軟體Word創建的文檔
.dos
Windows保留的MS-DOS的某些系統文件
.dot
Microsoft Word的文檔模板文件,通過模板可以簡化一些常用格式文檔的創建工作,而且可以內嵌VBA程序來實現某些自動化功能
.drv
設備驅動程序文件,用在各種系統中
.dwg
AutoCAD的圖紙文件,也是許多繪圖軟體都支持的格式,常用於共享數據
.dxb
AutoCAD創建的一中圖形文件格式 .dxf
圖形交換格式,一種計算機輔助設計的文件格式,最初開發用來與AutoCAD一起使用,以便於圖形文件在應用程序之間的傳遞,它以ASCII方式儲存圖形,在表現圖形的大小方面十分精確
.der
Certiticate文件
.dic
Txt文件
.emf
由Microsoft公司開發的Windows 32位擴展圖元文件格式
『叄』 奢侈品vic是什麼意思
VIC是Very Important Client的縮寫,是指超級貴賓,其意義等同於VIP,即very important person,是指「貴賓」,「貴客」、「重要人士」、「高級用戶」、「高級會員」。成為奢侈品牌的VIP可以優先購買產品,也有權利購買本季度限量款。
VIP的起源:1、VIP的用語起源於上個世紀80年代,來源有幾種說法:據說在第二次世界大戰中,英國的運輸部隊用飛機運載許多重要人物前往中東時,基地的指揮官為了保護他們的身份秘密而創造了VIP這個簡稱。
2、當時電子郵件在美國一些發達地區很流行,人們沒事就發一封快捷簡單便宜的郵件向朋友問候,一些人在發送郵件的時候不想讓其他人知道郵件的內容所以就把郵件標名為Very important person。
3、Very Important Person是二戰時英國皇家空軍用來運送高級任務的代碼,最早是用於運送蒙哥馬利(非本人而是替身克利夫頓·詹姆斯)到非洲去。此計劃階段性影響了諾曼底登陸,展開盟軍反攻。
『肆』 keil編寫中斷向量服務地址時編譯提示中斷函數名未定義
Eint1_Init函數使用了ISR_Eint1標識符,但是該標識符聲明是在函數Eint1_Init下面的,所以會報ISR_Eint1未定義的錯,只要在函數Eint1_Init之前這樣聲明:void __irq ISR_Eint1 (void) ;就可以了.
另外:
for(j=0;j<5;j++;)
這句,j++後面多了一個分號
『伍』 vic什麼意思
VIC(Variable Infiltration Capacity)模型是由Washington大學、California大學Berkely分校以及Princeton大學的研究者基於Wood等人的思想共同研製出的大尺度分布式水文模型,也可以稱之為「可變下滲容量模型」。
VIC模型可同時對水循環過程中的能量平衡和水量平衡進行模擬,彌補了傳統水文模型對能量過程描述的不足。在實際應用中,VIC模型也可只進行水量平衡的計算,輸出每個網格上的徑流和蒸發,再耦合匯流模型將網格上的徑流轉化為流域出口斷面的流量過程。
(5)vic怎麼編譯源文件擴展閱讀:
水文現象和水文規律十分復雜,利用實體場景研究水文過程變化規律,以及某些要素物理性質的模型稱為水文物理模型。水文實驗是水文物理模型的核心環節,它是為探求和研究水文現象和過程並對其作出成因分析的科學實驗。
水文現象受許多自然因素制約和人類活動影響,一般的水文觀測和分析難以清楚地揭示其物理過程和相互關系,需要在野外或實驗室內用特定的程序、裝置和設備進行系統的、有控制的觀測和試驗。
水文實驗研究的主要目的在於揭示天然條件下和人類活動影響下水文現象的物理機制,以及各種水文要素之間的相互聯系;在研究現有水文學理論和應用中有待認識和解決的問題;檢驗已有的規律與理論。
『陸』 什麼是ⅴIc
vic是一個多義詞,所代表的意思分別是:
1、VIC指的是游戲軟體:
《VIC》是一款模擬器應用。1981年Commodore發布了家用計算機VIC-20,是Linux創始人托瓦茲第一台計算機。
2、VIC指的是VIC:
全稱為Variable Infiltration Capacity,是由Washington大學、California大學Berkely分校以及Princeton大學的研究者基於Wood等人的思想共同研製出的大尺度分布式水文模型。
3、V字隊形飛行
『柒』 學習ASP應該具備什麼知識
一、Application對象的成員概述
Application對象成員包括Application對象的集合、方法和事件。
⒈Application對象的集合
Contents集合:沒有使用元素定義的存儲於Applicaiton對象中的所有變數的集合
StaticObjects:使用元素定義的存儲於Application對象中的所有變數 的集合
例:在default.asp中有如下賦值
application("a")="a"
application("b")=128
application("c")=false
則有contents集合
application.contents(1)="a" '也可寫為application.contents("a")="a"
application.contents(2)=128 '也可寫為application.contents("b")=128
application.contents(3)=false '也可寫為application.contents("c")=false
在此筆者推薦你在調用時使用類如application.contents("a")的方法,因為這樣更為直觀,如果用序號來表示的話則要考慮賦值的先後順序。
⒉Application對象的方法
Contents.Remove("變數名"):從Application.Contents集合中刪除指定的變數
Contents.RemoveAll() :把Application.Contents集合中的所有變數刪除
Lock() :鎖定Application對象,使得只有當前的ASP頁對內容能進行訪問
Unlock() :解除對Application對象的鎖定
例:在default.asp中:
application("a")="a"
application("b")=128
application("c")=false
response.write application.contents(1)&"
"
response.write application.contents(2)&"
"
response.write application.contents(3)&"
"
response.write "After Remove b:"
application.contents.remove("b")
response.write application.contents(1)&"
"
response.write application.contents(2)&"
"
執行結果:
a
128
False
After Remove b:
a
False
如果要刪除集合中所有變數用application.contents.removeall即可,至於Lock和Unlock方法在實際中經常用到,讀者也比較熟悉,在此就不在累贅。
⒊Application對象事件
OnStart:第一個訪問伺服器的用戶第一次訪問某一頁面時發生
OnEnd :當最後一個用戶的會話已經結束並且該會話的OnEnd事件所有代碼已經執行完畢後發生,或最後一個用戶訪問伺服器一段時間(一般為20分鍾)後仍然沒有人訪問該伺服器產生。
想要定義application對象的OnStart和OnEnd事件里做什麼需要將代碼寫在Global.asa這個文件里(下文有舉例),並且將該文件放在站點的根目錄下(一般是Inetpub\wwwroot\)
二、Session對象的成員概述
Session對象的成員比Application對象多一項屬性,即:集合、屬性、方法、事件
⒈Session對象的集合
Contents :沒有使用元素定義的存儲於特定Session對象的所有變數的集合。
StaticObject:使用元素定義的、存儲於Session對象中的所有變數的集合。
例:在default.asp中有如下賦值
session("a")="a"
session("b")=128
session("c")=false
則有contents集合
session.contents(1)="a" '也可寫為session.contents("a")="a"
session.contents(2)=128 '也可寫為session.contents("b")=128
session.contents(3)=false '也可寫為session.contents("c")=false
⒉Session對象的屬性
CodePage: 可讀/可寫。整型。定義用於在瀏覽器中顯示頁內容的代碼頁。代碼頁是字元集的數字值,不同的語言使用不同的代碼頁。例如,ANSI代碼頁為1252,日文代碼頁為932,簡體中文代碼頁為936。
LCID : 可讀/可寫。整型。定義發送給瀏覽器的頁面地區標識。LCID是唯一地標識地區的一個國際標准縮寫,例如,2057定義當前地區的貨幣符號是"£"。
SessionID: 只讀。長整型。返回本會話的會話標識符。每創建一個會話,由伺服器自動分配一個標識符。可以根據它的值判斷兩個用戶是誰先訪問伺服器。
Timeout : 可讀/可寫。整型。為會話定義以分鍾為單位的超時限定。如果用戶在這個時間內沒有刷新或請求任何一個網頁,則該用戶產生的會話自動結束。預設值是20。
以上屬性在實際應用中作用不大,而且基本上不需要怎麼修改,這幾個屬性也沒什麼特殊的地方。
⒊Session對象的方法
Contents.Remove("變數名"): 從Session.contents集合中刪除指定的變數
Contents.Removeall() : 刪除Session.contents集合中的所有變數
Abandon() : 結束當前用戶會話並且撤消當前Session對象。
Session對象的Contents.Remove("變數名")和Contents.Removeall()方法與Application對象的基本上沒什麼區別,為幫助理解,大家可以參照上面的例子將Application改為Session。這里要說明一下的是Contents.Removeall()和Abandon()的區別,執行這兩個方法都會釋放當前
用戶會話的所有Session變數,不同的是Contents.Removeall()單純地釋放Session變數的值而不終止當前的會話,而Abandon()除了釋放Session變數外還會終止會話引發Session_OnEnd事件,希望大家注意兩者的區別。
⒋Session對象的事件
OnStart: 當ASP用戶會話產生時觸發,一旦有任一用戶對本伺服器請求任一頁面即產生該事件。
OnEnd : 當ASP用戶會話結束時觸發,當使用Abandon()方法或超時也會觸發該事件。
這兩個事件和Application的OnStart、OnEnd事件一樣,也是必須放在Global.asa文件里,下
面就重點和大家研究一下這四個事件的使用。
三、Global.asa
ASP的Application和Session對象體現了其他ASP內置對象所沒有的特徵--事件。每一個訪客訪問伺服器時都會觸發一個OnStart事件(第一個訪客會同時觸發Application和Session的OnStart事件,但Application先於Session),每個訪客的會話結束時都會觸發一個OnEnd事件(最後一個訪客會話結束時會同時觸發Application和Session的OnEnd事件,但Session先於Application)。
OnStart和OnEnd這兩個事件一般應用在虛擬社區中統計在線人數、修改用戶的在線離線狀態等。要具體定義這兩個事件,需要將代碼寫在Global.asa文件,並將該文件放在站點的根目錄下(預設是\Inetpub\wwwroot\)。另外,Application和Session對象規定了在OnEnd事件里除了Application對象外其他ASP內置對象(Response、Request、Server、Session...)一概不能使用。以下舉一個虛擬社區統計在線人數的例子來說明如何使用這兩個事件。
文件說明:
global.asa 位於d:\Inetpub\wwwroot\目錄下
default.asp 位於d:\Inetpub\wwwroot\目錄下,虛擬社區登錄頁面
login.asp 位於d:\Inetpub\wwwroot\目錄下,用於檢測用戶輸入的用戶名及密碼
index.asp 位於d:\Inetpub\wwwroot\目錄下,虛擬社區首頁
bbs.mdb 位於d:\Inetpub\wwwroot\目錄下,存儲用戶信息的資料庫
資料庫(ACCESS)結構:
===bbs表===
id 用戶ID,長整型
name 用戶名,文本型
code 密碼,文本型
online 在線狀態,是/否
===global.asa===
<script LANGUAGE="VBScript" RUNAT="Server">
Sub Application_OnStart
application("online")=0
End Sub
sub Application_OnEnd
nd Sub
Sub Session_OnStart
End Sub
Sub Session_OnEnd
if session.contents("pass") then '判斷是否為登錄用戶的Session_OnEnd
application.lock
application("online")=application("online")-1
application.unlock
end if
End Sub
</script>
===login.asp===
......'密碼驗證,連接資料庫,檢測用戶輸入的用戶名及密碼是否正確
if 密碼驗證通過 then
session("name")=rs("name")
session("id")=rs("id")
session("pass")=true
else
rs.close
conn.close
response.write "密碼錯誤!"
response.end
end if
application.lock
application("online")=application("online")+1
conn.Execute ("update bbs set online=1 where id="&session("id"))'將用戶的狀態設為在線
application.unlock
rs.close
conn.close
response.redirect "index.asp" '初始化數據後跳轉到社區首頁
===========
在本例中,用application("online")變數記錄已經登錄社區的在線人數,因為一旦有用戶訪問伺服器而不管用戶是否登錄,都會產生OnStart事件,所以不能在OnStart事件里使Applicaiton("online")加一。因為不管是否是登錄用戶的會話結束都會產生OnEnd事件(假如有訪客訪問了伺服器但並不登錄社區,他的會話結束後也會產生OnEnd事件),所以在Session_OnEnd事件里用了句if語句來判斷是否為已登錄用戶的OnEnd事件,如果是才將在線人數減一。
這只是一個統計在線人數的簡單例子,對於一個完整的虛擬社區來說,僅僅統計有多少人在線是不夠的,在本例中資料庫里有個online欄位是用來記錄用戶的在線狀態,用戶登錄的時候,在login.asp里將online設為1,但用戶離線時並沒有將online設為0,要完善它,就要修改一下Session_OnEnd事件,在該事件里將online設為0。
===global.sas===
<script LANGUAGE="VBScript" RUNAT="Server">
Sub Application_OnStart
application("online")=0
set application("conn")=Server.CreateObject("ADODB.Connection")
application("db")=Server.MapPath("\bbs.mdb") '此處最好使用絕對路徑\bbs.mdb,下文有詳細介紹
End Sub
sub Application_OnEnd
set application("conn")=nothing
End Sub
Sub Session_OnStart
End Sub
Sub Session_OnEnd
if session.contents("pass") then '判斷是否為登錄用戶的Session_OnEnd
application("con").open ="driver={Microsoft Access Driver (*.mdb)};dbq="&application("db")
application.lock
application("online")=application("online")-1
application("con").Execute ("update friends set online=0 where id="&session.contents("id"))
application.unlock
application("con").close
end if
End Sub
</script>
==============
至此,完整的代碼已經完成了。因為在Application和Session的OnEnd事件里不能使用Server對象,所以要將資料庫的連接及資料庫在伺服器上的物理地址(d:\inetpub\wwwroot\bbs.mdb)存儲在application變數中,並在Application_OnStart事件中預先處理。同理,在Session_OnEnd事件中不能用session("pass")來代替session.contents("pass")(以下有詳盡說明)。
四、本文實例中值得引起注意的兩點
⒈OnEnd事件里的session.contents
剛開始接觸global.asa的朋友經常會將上面Session_OnEnd事件里的
if session.contents("pass") then 寫成
if session("pass") then,
這樣的話系統不會提示錯誤,但是永遠也不會執行then後面的內容,這是因為在OnEnd事件里禁止使用Session對象,但是可以用Session對象的集合來調用session變數。因為IIS並沒提示任何錯誤信息,所以筆者曾經在這上面浪費了很多時間。在此希望大家引以為鑒!
⒉Application_OnStart事件里用Server.MapPath獲取資料庫的物理地址時應使用絕對地址為了說明這個問題,大家可以做個實驗:將上面Application_OnStart事件里的
application("db")=Server.MapPath("\bbs.mdb")改為:
application("db")=Server.MapPath("bbs.mdb")
然後在d:\inetpub\wwwroot\目錄下建立一個test子目錄,寫一個temp.asp在test目錄里。
====test.asp====
<%response.write application("db")%>
================
再將temp.asp拷貝一份放在根目錄下(d:\inetpub\wwwroot\)。用記事本打開global.asa,再打開兩個瀏覽器,瀏覽器A輸入地址http://localhost/temp.asp,按回車,將在瀏覽器上輸出:
d:\inetpub\wwwroot\bbs.mdb
然後,在記事本的窗口上點"文件"菜單,選"保存"(使global.asa的修改時間改變,從而使IIS重啟動所有服務),再在瀏覽器B輸入地址http://localhost/test/temp.asp,按回車,在瀏覽器上輸出的是:
d:\inetpub\wwwroot\test\bbs.mdb
global.asa文件雖然是放在站點根目錄下,但是如果在server.mappath中使用的是相對地址,而觸發Application_OnStart事件的用戶第一次訪問的頁面又不是屬於根目錄的話,得到資料庫的物理地址將不會是期望的結果,希望大家要特別小心。
類別:Web | 編輯 | 刪除
| 評論(0) | 瀏覽(0)
全面解析ASP Server對象
2007-07-27 12:40
Server對象提供對伺服器上訪問的方法和屬性.大多數方法和屬性是作為實用程序的功能提供的。
語法:
Server.property|method
屬性(property)
Server對象只有一個屬性:ScriptTimeout 程序能夠運行的最大時間
方法(Methods)
CreateObject 建立一個對象實例.
Execute 執行一個asp文件
GetLastError 返回一個錯誤代碼
HTMLEncode 對指定的HTML代碼進行轉換.
MapPath 將一個相對路徑轉化為一個絕對路徑.
Transfer 將當前的所有狀態信息發送給另一個asp文件
URLEncode 以URL形式轉化指定的代碼,包括空格
Server對象的方法詳細說明
CreateObject
語法
Server.CreateObject( progID )
參數
progID
指定要創建的組件名稱,格式如下: [Vendor.]Component[.Version].
要點:
一般來說,用由Server.CreateObject方法創建的對象擁有頁面的范圍.這就說,當這頁的asp程序執行完後,這種對象會自動地消失.
為了創建一個擁有Session或Application范圍的對象,你可以在Global.asa文件中使用
Execute
Execute 方法呼叫一個ASP文件並且執行它就像這個呼叫的ASP文件存在這個ASP文件中一樣。這很像許多語言中的類的調用。
語法
Server.Execute( Path )
參數
Path
指定執行的那個asp文件的路徑。如是它是一個絕對路徑,那麼它必須是一個在這個ASP應用程序相同的地方(目錄)。
講解
Server.Execute 方法提供了一種將一個復雜ASP應用程序分化為小塊單位來執行的方法。通過這種方法,你能夠建一個ASP圖書館,你能夠隨便在你需要時調用你圖書館中的ASP文件。這個就有點像SSI了!嘿嘿!
當IIS根據指定的ASP文件路徑執行完這個ASP文件之後,就會自動返回以前的ASP文件。這個剛剛執行完的ASP文件有可能改變了HTTP head.但是和其它的ASP文件一樣,當程序試圖改變http head時,就會報錯!
這個path參數可以包括一個詢問信息。
如果在被呼叫和呼叫的ASP文件中都含有相同的子函數,那麼這些子函數只在本ASP文件中起作用。舉個例子,如果在下面的ASP1和ASP2兩個文件中都含有放棄程序的子函數。首先ASP1呼叫ASP2,那麼ASP2中的的OnTransactionAbort開始執行,當ASP2執行完畢,ASP1中的OnTransactionAbort才開始執行。
ASP1:
< %@ Transaction=
Required
%>
< %
Server.Execute ("Page22.asp")
Sub OnTransactionAbort
Sub OnTransactionCommit
%>
Asp2.asp:
< %@
Transaction=Required
Sub OnTransactionAbort
Sub OnTransactionCommit
%>
Example
ASP1
< % Response.Write("I am going to execute ASP2 ")
Server.Execute("/myasps/asp2.asp")
%>
ASP2
< % Response.Write("Here I am")%>
GetLastError
GetLastError 方法返回一個ASPError Object 來描述一個錯誤信息.這個方法只適用於在asp文件發送任何內容給用戶機之前.
語法
Server.GetLastError ()
要點
如果一個500;100 用戶錯誤已經被定義在一個asp應用程序中,它是指的一個以.asp為後綴的文件。這種情況下,在這個程序運行時當一個錯誤發生時,伺服器就會自動的以Server.Transfer這種方式傳送到這個正在執行的ASP頁面。ASP應用程序就會將有效的處理這個錯誤。另外,這個ASPError Object一定要有效,這樣你就能夠看到伺服器提供給你的錯誤信息來改這個文件了!
一般的Web Site 都是根據文件\iishelp\common\500-100.asp來構造的。你能夠用它來執行一個asp錯誤,當然你能夠自己定義了!。如果你想改變為另外一個asp文件的來執行這些用戶錯誤。那麼你可以用IIS中的snap-in.
注意:當IIS發現了一個asp文件或者global.asa文件中的一個錯誤,那麼一個500;100用戶錯誤產生。以下的程序將不能執行!
Example
下面的三個例子證明不同的錯誤會產生的用戶錯誤。三個錯誤是:
編譯錯誤
運行錯誤
邏輯錯誤
第一個例子證明了一個編譯錯誤,就是當IIS試圖包含一個文件時產生的。這個錯誤會產生是因為在這個包含文件中沒有定義所需的參數。第二個例子顯示的是一個運行錯誤,這個程序中斷的原因是程序中沒有「next".第三個例子顯示的是一個邏輯錯誤,因為這個程序試圖除以一個0. 不行啦!
Example 1
< %
response.write "hello"
%>
Example 2
< %
dim I
for i=1 to 1
nxt
%>
Example 3
< %
dim i,j
dim sum
sum=0
j=0
for i=1 to 10
sum=sum+1
next
sum=sum/j
%>
HTMLEncode
HTMLEncode方法對指定的字元串進行HTML編碼.
語法
Server.HTMLEncode( string )
參數
string 要進行編碼的字元
例子
下面的程序:
< %= Server.HTMLEncode("The paragraph tag: ") %>
輸出為:
The paragraph tag:
注意 程序執行後在瀏覽器中看到的是:
The paragraph tag:
但是如果你用"查看源文件"看一下的話,源代碼就不是了.
MapPath
MapPath 方法將相對路徑轉化為伺服器上的物理路徑
語法
Server.MapPath( Path )
參數
Path
相對路徑。這個路徑是以"/"或"\"開頭的路徑,如果這個路徑中沒有"\",那麼MapPath方法就會返回以當前目錄為基礎的路徑。
講解
MapPath 方法不能檢查路徑在這個伺服器下是否存在。因為 MapPath 轉化路徑時是不管這個路徑是否在這個伺服器下存在的。
你能夠用它來將一個相對路徑轉化為一個物理路徑,然後再在這個路徑下進行各種操作。
Example
在下面的例子中,data.txt文件存在 C:\Inetpub\Wwwroot\Script 目錄中,而且一個test.asp 文件包括下面的代碼。C:\Inetpub\Wwwroot 是該伺服器的主目錄 。
下面的例子中,首先用環境變數"PATH_INFO"獲得當前文件的物理路徑。
下面是Script 代碼:
< %= server.mappath(Request.ServerVariables("PATH_INFO"))%>
顯示為:
c:\inetpub\wwwroot\script\test.asp
因為下面的例子中路徑參數沒有以"/"開頭,所以它是以當前目錄轉化的,asp文件是放在C:\Inetpub\Wwwroot\Script中的.以下是 scripts的內容:
< %= server.mappath("data.txt")%>
< %= server.mappath("script/data.txt")%>
顯示為:
c:\inetpub\wwwroot\script\data.txt
c:\inetpub\wwwroot\script\script\data.txt
以下的兩個例子是以"/"開頭的.以下是scripts的內容:
< %= server.mappath("\script")%>
顯示為:
c:\inetpub\wwwroot\script\data.txt
c:\inetpub\wwwroot\script
直接用"/"或"\"就會得到伺服器的主目錄:
< %= server.mappath("\")%>
顯示為:
c:\inetpub\wwwroot
c:\inetpub\wwwroot
Transfer
transfer 方法會把一個正在執行的asp文件的所有信息傳給另外一人asp文件。
語法
Server.Transfer (path)
參數
Path
將要接收信息的asp文件的位置。
要點
當你調用Server.Transfer時,所有內建對象的狀態信息都會包含在這次傳送之中。這就是說,所有在保存在Session或Application中的信息都會被傳送,而且,所有當前請求的信息都會被接收信息的asp文件所接受。
Example
下面的例子示範了從一個asp文件傳送到另一個asp文件例子!
ASP1
< % Dim sessvar1 Response.Write Session.SessionID
Response.Write ("")
Response.Write("I am going to ASP2 ")
Server.
Transfer
("/Myasps/ASP2.asp")
% >
ASP2
< % Response.Write Session.SessionID %>
URLEncode
URLEncode 方法可以將指定字元串進行URL編碼。
語法
Server.URLEncode( string )
參數
string 指定要轉化的字元串
Example
下面是代碼:
< % Respones.Write(Server.URLEncode("http://www.microsoft.com")) % >
顯示為:
http%3A%2F%2Fwww%2Emicrosoft%2Ecom
屬性:ScriptTimeout
ScriptTimeout 屬性規定了程序的最大運行時間。
語法
Server.ScriptTimeout = NumSeconds
參數
NumSeconds
規定了程序的最大的運行時間(以秒計算)。預設值是90秒
Remarks
一個預設的Scritpt Timeout的值會能過ASPScriptTimeOUT屬性來設置在Web sertvic 或 Web server上。在程序中,ScriptTimeout屬性的值不能小於這個預設值。舉個例子吧,如果NumSeconds我們設置為10秒,而預設值為90秒,那麼程序就會中止在90秒以後,而不是10秒以後的。同樣,如果我們設置ScriptTimeout的值為100秒,那麼,程序就會在100秒之後中止,而不是90秒。
Example
下面的例了中程序將被設置為100秒後自動中止。
< % Server.ScriptTimeout = 100 %>
下面的例子中將重新得到ScriptTimeout的值,然後把它存在Timout變數中
< % TimeOut = Server.ScriptTimeout %>
『捌』 如何編譯c文件中調用 cython
以下總結出幾種在python 中調用 C/C++ 代碼的方法
--------------------------------------------------------------------
發現做便捷的是使用popen
from os import popen
popen('/home/pengyan/Downloads/VIC/sanxia/vicNl -g /home/pengyan/Downloads/VIC/sanxia/xings_global')
popen('/home/pengyan/Downloads/VIC/sanxia/rout /home/pengyan/Downloads/VIC/sanxia/xings_rout')
?? 目前還不會用python 切換文件目錄
可以採用絕對路徑,但是好像絕對路徑時,計算速度變慢
-------------------------------------------------------------------
使用ctypes 模塊調用 C 動態庫
從Python2.5 開始, Python 開始提供 ctypes 模塊來提供對 C 語言編譯的動態庫文件的調用。注意, 這里特指C 的動態庫 ,用C++ 編譯的動態庫 ctypes 雖然能夠載入,但調用時的函數名已經由於 C++ 的重載特性被加以修改,難以調用。 使用 ctypes 調用 C 動態庫的好處在於不用進行額外的開發,可以直接使用編譯好的動態庫。 ctypes 提供了完整的 C 類型封裝,也支持自定義類型,大大減少在調用過程中的工作量。 ctypes 的使用很簡單,只需熟悉 python 封裝與 C 中的對應關系即可。以下用一個簡單的例子來說明:
from ctypes import * #導入ctypes模塊
libc = cdll.LoadLibrary("libc.so.6") #載入libc動態庫
str = c_char_p(' Hello World! ') #使用char *在ctypes中的對應封裝c_char_p,相當於char* str=」Hello World!」
libc.printf(「yell: %s\n」, str ) #調用printf函數
ctypes的功能當然遠不止這些,有興趣的同學可以參考這里 http://docs.python.org/library/ctypes.html
使用Python 的擴展( Extending )機制
ctypes很方便地可以調用 C 的動態庫,但是對 C++ 編譯的動態庫,調用起來很困難。這種情況利用 Python 的 Extending 機制就可以解決。 Python 提供了一套完整的框架來使用 C/C++ 編寫擴展庫,可以很靈活的開發 C++ 擴展模塊。這種方法的缺點是工作量比較大,需要為每一個方法編寫介面,這里不做詳細介紹,可以參考: http://docs.python.org/extending/extending.html#writing-extensions-in-c
那麼有什麼辦法可以高效的調用C++ 動態庫呢,答案是 SWIG 。
使用SWIG 生成擴展模塊
上面提到了Python 的擴展機制,缺點是工作量比較大,這里介紹一個工具 SWIG 。 SWIG 是一種簡化腳本語言與 C/C++ 介面的開發工具,通過包裝和編譯 C 語言程序來達到與腳本語言通訊目的的工具。它正是基於 Python 的擴展機制,自動生成介面文件,再編譯成可以被 Python 調用的動態庫擴展模塊。
使用SWIG 生成擴展模塊分為以下幾步:
將需要調用的代碼編譯成目標文件(.o) ;
用SWIG 讀取編寫描述文件 (.i) ,生成介面文件 (.cxx) ;
將介面文件編譯為目標文件(.o) ;
將介面文件的目標文件和原代碼段的目標文件一起編譯成動態庫 ;
假設有如下文件
swig_ex.cpp 需要轉換成擴展庫的原始代碼,包含一個int fact(int) 函數
swig_ex.h 原始代碼的頭文件
swig_ex.i SWIG描述文件
swig_ex.i是一個描述文件,有 SWIG 自己的語法,比較簡單,內容如下:
%mole swig_ex
%{
#define SWIG_FILE_WITH_INIT
#include "swig_ex.h"
%}
int fact(int n);
再寫一個Makefile 來把這些文件編譯成動態庫 :
all: swig_ex.o swig_ex_wrap.o _swig_ex.so
swig_ex.o: swig_ex.cpp swig_ex.h #編譯源文件
g++ -fPIC -c swig_ex.cpp
swig_ex_wrap.o: swig_ex.i swig_ex.o #根據 SWIG 描述文件 (.i) 生成介面文件 (.cxx) ,再編譯之
swig -c++ -python swig_ex.i
g++ -O2 -fPIC -c swig_ex_wrap.cxx -I/home/work/linyi/autoframe/tool/python/include/python2.6/
_swig_ex.so: swig_ex_wrap.o #將目標文件打包成動態庫
g++ -shared swig_ex.o swig_ex_wrap.o -o _swig_ex.so
.PHONY: clean
clean:
rm -rf swig_ex_wrap.* swig_ex.py _swig_ex.so
編譯好以後會有一個so 和 py 文件,寫一個 setup.py 把他們安裝到 python 目錄就可以和其他模塊一樣被 python 調用了:
Import swig_ex
swig_ex.fact(10)
參考文檔地址:http://www.swig.org/Doc1.3/SWIGDocumentation.html
原始但有效的方法
除了上面這些方法,在Python 中借用 C/C++ 代碼最原始有效的方法就是將代碼編譯成可執行程序,從 Python 里用 Popen 方法來調用獲取輸出。這種方法簡單有效,缺點是不夠靈活,有比較大的局限性,不過在很多情況下也已經足夠了。
pipe = os.popen('./tool –a %s –b %s' % (「hello」, 「world」))
re = pipe.read()
其他方法
以上這些方法基本上已經能滿足Python 調用 C/C++ 的需求了,此外還有一些方法,例如使用 Boost.Python ,使用 Pyrex ,這些方法都能提供 Python 與 C/C++ 的交互。
總結
在Python 中引用 C/C++ 模塊的方法較多,根據需要從中選擇恰當的方法可以減少很多工作量。
在Python 中引用 C/C++ 模塊彌補了 Python 腳本測試框架的很多不足,在提高代碼復用率的同時,模塊的性能也大大提高。
『玖』 vcs是什麼
病毒構造集
VCS(Virus Construction Set),病毒構造集,於1991年3月發布,這一工具出現在了公告版系統社區,它為有抱負的病毒編寫者提供了一個簡單的工具包,用於創建他們自己定製的惡意代碼。編譯型Verilog模擬器
VCS是編譯型Verilog模擬器,它完全支持OVI標準的Verilog HDL語言、PLI和SDF。VCS具有目前行業中最高的模擬性能,其出色的內存管理能力足以支持千萬門級的ASIC設計,而其模擬精度也完全滿足深亞微米ASIC Sign-Off的要求。 VCS結合了節拍式演算法和事件驅動演算法,具有高性能、大規模和高精度的特點,適用於從行為級、RTL到Sign-Off等各個階段。VCS已經將CoverMeter中所有的覆蓋率測試功能集成,並提供VeraLite、CycleC等智能驗證方法。VCS和Scirocco也支持混合語言模擬。VCS和Scirocco都集成了Virsim圖形用戶界面,它提供了對模擬結果的交互和後處理分析。 手機中設置的「待辦事項」屬於.vcs格式。 VCS:罪惡都市物語(17張) (Grand Theft Auto:Vice City Stories) 游戲名稱 Grand Theft Auto : Vice City Stories(俠盜獵車手:罪惡都市物語) 游戲簡稱 GTA:VCS 製作廠商 Rockstar Leeds 代理發行 Rockstar Games 游戲人數 1人 游戲平台 Psp Ps2 發行日期 2006年11月03日 這次《俠盜獵車手:罪惡都市物語》雖然與 PS2 版的《俠盜獵車手:罪惡都市》(Grand Theft Auto: Vice City)幾乎同名,但其實故事內容是全新製作,背景設定於 1984年的罪惡都市,在這個光鮮麗亮的大都會里,潛藏著許多不堪的犯罪事件,這個城市恍如罪惡之都,充斥著販毒與暴力事件。 玩家將扮演主角 Vic Vance ,Vic 是名勇猛的鬥士,為了家人、國家和他自己而戰,在一個錯誤決定下,Vic 接下一項艱難的工作,而在這個充滿著誘惑與貪婪的城市中,究竟 Vic 該如何自處?他該融入其中還是冒著橫死街頭的風險?玩家必須得做出自己的抉擇。 《俠盜獵車手:罪惡都市物語》畫面較之前作《俠盜獵車手:自由城故事》有了一定的提升,游戲的光影效果更加出色,人物更加真實,而且在同屏幕顯示人物上也有了一定提升。游戲的禎數一直保持在40FPS左右,這點還是非常不錯的,可見廠商的製作誠意。超過90首80年代的經典歌曲將會在游戲中以背景音樂的形式出現,超經典系統「黑人電台」也將收錄本作,配合著那充滿hip-hop風格音樂展現給大家的將會是一款全新的《俠盜獵車手:罪惡都市物語》。 PSP版《俠盜獵車手:罪惡都市》將會採用全新的故事主線,任務和游戲方式,並且保留很多系列的經典的設定,而非單純的移植游戲,游戲中可以讓玩家體驗到前所未有的視覺享受,而且游戲中的主角將可以游泳。游戲里的場景比前作《俠盜獵車手:自由城故事》要足足大上兩倍,超過100種的交通工具可供玩家選用,其中更包括直升飛機和摩托車。而且本作將會增加PS2版《俠盜獵車手:罪惡都市》所沒有的新任務,任務,歌曲,交通工具等。游戲中的人物也將重新製作,就是算你玩過PS2版《俠盜獵車手:罪惡都市》也能在PSP版里找到全新的樂趣。 (可用PS2模擬器在PC上玩)
『拾』 ARM7在UCOS下如何使用中斷
這個有幾個原因,請參考下面分析:
1,ucos
是多任務操作系統,當系統正常運行時,必須建立一個以上的任務,否則系統處於死機崩潰狀態,程序運行出現異常。
2,你的系統時鍾中斷程序有問題,應該關中斷,調用過系統時鍾後再開中斷,否則系統時鍾異常導致程序運行異常,具體程序如下:
void
Tmr_TickISR_Handler
(void)
{
T0IR
=
0xFF;
//清零中斷標志位
OSIntEnter(
);
//
關中斷,必須有
OSTimeTick();
OSIntExit();
//臨界代碼完成,與關中斷成對使用
}
3,看你上面的程序裡面,你想使用定時器1中斷來處理一些信息,而程序無法運行到其中,可能的原因有:1)你的定時器1初始化異常。2)你系統裡面的中斷使能關掉了。其實多任務的時候,你完全可以將它分配到一個任務里處理,這樣既可以充分利用多任務,又不會因為中斷沒處理好而出現異常,如果你想要求實時性較高,那你可以將這個人物的優先順序設為最高。
4,UCOS初始化異常,UCOS系統初始化有固定的順序以及模式,顛倒了就會出現異常。
5,系統時鍾tick一般建議為10hz-50hz,太高的話在你初始化的時候,還沒創建任務的時候都已經進行任務切換了而導致ucos崩潰。