版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 目錄</b></p><p><b> 設(shè)計(jì)任務(wù)及要求</b></p><p><b> 設(shè)計(jì)步驟和具體實(shí)現(xiàn)</b></p><p> 1. IIS服務(wù)器的配置……………………………………………………1</p><p> 虛擬目錄網(wǎng)頁(yè)應(yīng)用程
2、序的映射……………………………………2</p><p> HTML表單的制作…………………………………………………3</p><p> CGI程序的編寫(xiě)……………………………………………………5</p><p> WinIo的基本使用…………………………………………………7</p><p> 計(jì)算機(jī)并口的基本知識(shí)……………………………
3、………………8</p><p> 實(shí)際調(diào)試……………………………………………………………9</p><p><b> 三、設(shè)計(jì)總結(jié)</b></p><p><b> 一、設(shè)計(jì)任務(wù)</b></p><p> 網(wǎng)絡(luò)在測(cè)控領(lǐng)域前景廣闊,在辦公室如何通過(guò)網(wǎng)絡(luò)開(kāi)關(guān)家里的空調(diào)?一個(gè)實(shí)現(xiàn)的方法是在家用電腦
4、上安裝IIS把家用電腦變成服務(wù)器,在網(wǎng)頁(yè)上通過(guò)CGI技術(shù)利用WINIO空間控制并口輸出高低電平來(lái)開(kāi)關(guān)空調(diào)。</p><p> 設(shè)計(jì)步驟和具體實(shí)現(xiàn) </p><p> 從微軟下載IIS6.0軟件,并安裝到臺(tái)式計(jì)算機(jī)上,將計(jì)算機(jī)配置成為可以支持CGI的服務(wù)器,制作一個(gè)簡(jiǎn)單的網(wǎng)頁(yè)表單,編寫(xiě)CGI程序,通過(guò)網(wǎng)絡(luò)訪問(wèn)服務(wù)器上的網(wǎng)頁(yè),CGI程序根據(jù)服務(wù)器的環(huán)境變量檢測(cè)開(kāi)關(guān)空調(diào),執(zhí)行完程序之后CGI
5、通過(guò)服務(wù)器向網(wǎng)頁(yè)輸出開(kāi)關(guān)信息。</p><p> IIS服務(wù)器的配置:</p><p><b> 1、IIS的添加</b></p><p> 進(jìn)入“控制面板”,依次選“添加/刪除程序→添加/刪除Windows組件”,將“Internet信息服務(wù)(IIS)”前的小鉤去掉(如有),重新勾選中后按提示操作即可完成IIS組件的添加。用這種方法添
6、加的IIS組件中將包括Web、FTP、NNTP和SMTP等全部四項(xiàng)服務(wù)。</p><p><b> 2、IIS的運(yùn)行</b></p><p> 當(dāng)IIS添加成功之后,再進(jìn)入“開(kāi)始→程序→管理工具→Internet服務(wù)管理器”以打開(kāi)IIS管理器,對(duì)于有“已停止”字樣的服務(wù),均在其上單擊右鍵,選“啟動(dòng)”來(lái)開(kāi)啟。</p><p> 3、建立第一
7、個(gè)Web站點(diǎn)</p><p> 比如本機(jī)的IP地址為172.29.XXX.XXX,自己的網(wǎng)頁(yè)放在D:\Wy目錄下,網(wǎng)頁(yè)的首頁(yè)文件名為Index.html,現(xiàn)在根據(jù)這些建立好自己的Web服務(wù)器。</p><p> 對(duì)于此Web站點(diǎn),我們可以用現(xiàn)有的“默認(rèn)Web站點(diǎn)”來(lái)做相應(yīng)的修改后,就可以輕松實(shí)現(xiàn)。先在“默認(rèn)Web站點(diǎn)”上單擊右鍵,選“屬性”,以進(jìn)入名為“默認(rèn)Web站點(diǎn)屬性”設(shè)置界面。&
8、lt;/p><p> 一、修改綁定的IP地址:轉(zhuǎn)到“Web站點(diǎn)”窗口,再在“IP地址”后的下拉菜單中選擇所需用到的本機(jī)IP地址“172.29.XXX.XXX”。</p><p> 二、修改主目錄:轉(zhuǎn)到“主目錄”窗口,再在“本地路徑”輸入(或用“瀏覽”按鈕選擇)好自己網(wǎng)頁(yè)所在的“D:\Wy”目錄。</p><p> 三、添加首頁(yè)文件名:轉(zhuǎn)到“文檔”窗口,再按“添加”
9、按鈕,根據(jù)提示在“默認(rèn)文檔名”后輸入自己網(wǎng)頁(yè)的首頁(yè)文件名“Index.htm”。</p><p> 四、添加虛擬目錄:比如你的主目錄在“D:\Wy”下,而你想輸入“172.29.XXX.XXX/test”的格式就可調(diào)出“E:\All”中的網(wǎng)頁(yè)文件,這里面的“test”就是虛擬目錄。請(qǐng)?jiān)凇澳J(rèn)Web站點(diǎn)”上單擊右鍵,選“新建→虛擬目錄”,依次在“別名”處輸入“test”,在“目錄”處輸入“E:\All”后再按提示
10、操作即可添加成功。</p><p> 五、效果的測(cè)試:打開(kāi)IE瀏覽器,在地址欄輸入“172.29.XXX.XXX”之后再按回車(chē)鍵,此時(shí)就能夠調(diào)出你自己網(wǎng)頁(yè)的首頁(yè),則說(shuō)明設(shè)置成功!</p><p> 虛擬目錄網(wǎng)頁(yè)應(yīng)用程序的映射:</p><p> 可以使用多種編程和腳本語(yǔ)言來(lái)開(kāi)發(fā) Web 應(yīng)用程序。因此,IIS 使用網(wǎng)站上請(qǐng)求資源的文件擴(kuò)展名來(lái)確定運(yùn)行哪個(gè) In
11、ternet 服務(wù)器 API (ISAPI) 或通用網(wǎng)關(guān)接口 (CGI) 程序處理請(qǐng)求。例如,以 .aspx 擴(kuò)展名結(jié)尾的文件請(qǐng)求將導(dǎo)致 Web 服務(wù)器調(diào)用 ASP.NET 程序 (aspnet_isapi.dll) 來(lái)處理請(qǐng)求。文件擴(kuò)展名與 ISAPI 或 CGI 程序的關(guān)聯(lián)稱(chēng)為“應(yīng)用程序映射”?! ☆A(yù)先配置 IIS 6.0 以支持公共應(yīng)用程序映射??梢蕴砑踊騽h除網(wǎng)站上所有應(yīng)用程序或單個(gè)應(yīng)用程序的映射?! U(kuò)展名映射到應(yīng)用程
12、序,在 IIS 管理器中,展開(kāi)本地計(jì)算機(jī),然后單擊要配置的應(yīng)用程序的開(kāi)始位置目錄。右鍵單擊該目錄,然后單擊“屬性”。單擊相應(yīng)的選項(xiàng)卡:“主目錄”、“虛擬目錄”或“目錄”。在“應(yīng)用程序設(shè)置”區(qū)域中,單擊“配置”,然后單擊“映射”選項(xiàng)卡。在“映射”選項(xiàng)卡上,單擊“添加”。在“可執(zhí)行文件”框中,鍵入將處理文件的 ISAPI 或 CGI 程序的路徑。必須在 Web 服務(wù)器的本地目錄中指定程序。在“擴(kuò)展名”框中,鍵入要與 ISAPI 或 CGI
13、程序</p><p><b> 網(wǎng)頁(yè)表單的制作:</b></p><p> GET對(duì)于那些使用了屬性“METHOD=GET”的表單(或者沒(méi)有METHOD屬性,這時(shí)候GET是其缺省值),CGI定義為:當(dāng)表單被發(fā)送到服務(wù)器斷后,表單中的數(shù)據(jù)被保存在服務(wù)器上一個(gè)叫做QUERY_STRING的環(huán)境變量中。這種表單的處理相對(duì)簡(jiǎn)單,只要讀取環(huán)境變量就可以了。這一點(diǎn)對(duì)不同的語(yǔ)言
14、有不同的做法。在C語(yǔ)言中,你可以用庫(kù)函數(shù)getenv(定義在標(biāo)準(zhǔn)庫(kù)函數(shù)stdlib中)來(lái)把環(huán)境變量的值作為一個(gè)字符串來(lái)存取。你可以在取得了字符串中的數(shù)據(jù)后,運(yùn)用一些小技巧進(jìn)行類(lèi)型的轉(zhuǎn)換,這都是比較簡(jiǎn)單的了。在CGI程序中的標(biāo)準(zhǔn)輸出(output)(比如在C中的stdout文件流)也是經(jīng)過(guò)重定義了的。它并沒(méi)有在服務(wù)器上產(chǎn)生任何的輸出內(nèi)容,而是被重定向到客戶(hù)瀏覽器。這樣,如果編寫(xiě)一個(gè)C的CGI程序的時(shí)候,把一個(gè)HTML文檔輸出到它的stdo
15、ut上,這個(gè)HTML文檔會(huì)被在客戶(hù)端的瀏覽器中顯示出來(lái)。這也是CGI程序的一個(gè)基本原理。 下面是一段HTML表單: </p><p> 我們要實(shí)現(xiàn)的功能很簡(jiǎn)單,就是把表單中輸入的數(shù)值乘起來(lái),然后輸出結(jié)果。</p><p> 下面就是處理這個(gè)表單的CGI程序,對(duì)應(yīng)于FORM標(biāo)簽中的ACTION屬性值。</p><p> #include < stdio.
16、h > #include < stdlib.h > int main(void) { char *data; long m,n; printf("%s%c%c ","Content-Type:text/html;charset=gb2312",13,10); printf("< TITLE >乘法結(jié)果< /TITLE > &
17、quot;); printf("< H3 >乘法結(jié)果< /H3 > "); data = getenv("QUERY_STRING"); if(data == NULL) printf("< P >錯(cuò)誤!數(shù)據(jù)沒(méi)有被輸入或者數(shù)據(jù)傳輸有問(wèn)題"); else if(sscanf(data,"m=%ld&n=%
18、ld",&m,&n)!=2) printf("< P >錯(cuò)誤!輸入數(shù)據(jù)非法。表單中輸入的必須是數(shù)字。"); else printf("< P >%ld和%ld的成績(jī)是:%ld。",m,n,m*n); return 0; } </p><p> 前面已經(jīng)提到標(biāo)準(zhǔn)輸出的內(nèi)容就是要被顯示在瀏覽器中的內(nèi)容。
19、第一行的輸出內(nèi)容是一個(gè)CGI程序所特有的printf("Content-Type:text/html\n\n"),這個(gè)輸出是作為HTML的文件頭。因?yàn)镃GI不僅可以像瀏覽器輸出HTML文本,而且可以輸出圖像,聲音之類(lèi)的東西。這一行告訴瀏覽器如何處理接受到的內(nèi)容。在Content-Type的定義后面跟有兩行的空行,這也是不可缺少的。因?yàn)樗蠧GI程序的頭部輸出都是相近的,因而可以為其定義一個(gè)函數(shù),來(lái)節(jié)省編程的時(shí)間。這是
20、CGI編程常用的一個(gè)技巧。</p><p> 程序在后面調(diào)用了用了庫(kù)函數(shù)getevn來(lái)得到QUERY_STRING的內(nèi)容,然后使用sscanf函數(shù)把每個(gè)參數(shù)值取出來(lái),要注意的是sscanf函數(shù)的用法。把程序編譯后,改名為mult.cgi放在/cgi-bin/目錄下面,就可以被表單調(diào)用了。這樣,一個(gè)處理GET方式表單的CGI程序就大功告成了。</p><p> 本設(shè)計(jì)中使用記事本編寫(xiě)HT
21、ML表單程序并另存為HTML格式,編寫(xiě)如下:</p><p><b> <html></b></p><p><b> <body></b></p><p> <form name="input" action="cgi/getcgi.exe" m
22、ethod="get"></p><p> 關(guān)閉空調(diào): <input type="radio" name="a" value="0" checked="checked"></p><p><b> <br /></b></p>
23、;<p> 打開(kāi)空調(diào): <input type="radio" name="a" value="1"></p><p><b> <br /></b></p><p> <input type ="submit" value ="
24、確定"></p><p><b> </form></b></p><p><b> </body></b></p><p><b> </html></b></p><p> 當(dāng)訪問(wèn)服務(wù)器主頁(yè)時(shí),運(yùn)行效果圖如下:&l
25、t;/p><p><b> HTML表單效果圖</b></p><p><b> CGI程序的編寫(xiě):</b></p><p> 參照上面的方法,根據(jù)已經(jīng)制作好的網(wǎng)頁(yè)編寫(xiě)CGI服務(wù)程序,源代碼如下:</p><p> #include <windows.h></p>&l
26、t;p> #include <stdio.h> //添加標(biāo)準(zhǔn)輸入輸出頭文件</p><p> #include "winio.h" //添加winio.h,直接對(duì)計(jì)算機(jī)并口控制</p><p> int main()</p><p><b> {</b></p>
27、<p> char *data; //存放從服務(wù)器讀取的URL編碼(字符串格式)</p><p> char b[2]; //存放URL編碼中截取的字符串</p><p> bool fla; //winio初始化函數(shù)標(biāo)志位</p><p> printf("Content-Type:te
28、xt/html\n\n");</p><p> printf("<HTML>\n");</p><p> printf("<HEAD>\n<TITLE >Get Method</TITLE>\n</HEAD>\n");</p><p> printf(
29、"<BODY>\n");</p><p> printf("<div style=\"font-size:12px\">\n");</p><p> data = getenv("QUERY_STRING"); //獲取環(huán)境變量QUERY_STRING</p>&
30、lt;p> if(data==NULL)</p><p><b> {</b></p><p> printf("<DIV STYLE=\"COLOR:RED\">Error</DIV>\n");</p><p><b> }</b></p
31、><p><b> else </b></p><p><b> { </b></p><p> sscanf(data,"a=%s",b); //提取URL編碼中的“開(kāi)關(guān)量('0'/'1')”</p><p> if(b[0]=='
32、0') //如果是'0'(關(guān)閉空調(diào))則控制并口輸出低電平</p><p><b> { </b></p><p> fla=InitializeWinIo();</p><p><b> if(fla)</b></p><p><b> {</
33、b></p><p> SetPortVal(0x378, 0x00, 1); </p><p> printf("<DIV STYLE=\"COLOR:RED\">空調(diào)已經(jīng)關(guān)閉</DIV>\n");</p><p><b> }</b></p><
34、p><b> }</b></p><p> else if(b[0]=='1') //如果是'1'(打開(kāi)空調(diào))則控制并口輸出高電平</p><p><b> { </b></p><p> fla=InitializeWinIo();</p><p
35、><b> if(fla)</b></p><p><b> { </b></p><p> SetPortVal(0x378, 0xff, 1);</p><p> printf("<DIV STYLE=\"COLOR:GREEN; font-size:15px;font-wei
36、ght:bold\">空調(diào)已經(jīng)打開(kāi)</DIV>\n");</p><p> } </p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p&g
37、t;<p> printf("<DIV STYLE=\"COLOR:RED\">讀取錯(cuò)誤</DIV>\n");</p><p><b> }</b></p><p><b> }</b></p><p> printf("<
38、;HR COLOR=\"blue\" align=\"left\" width=\"100\">");</p><p> printf("</div>\n");</p><p> printf("</BODY>\n");</p>&l
39、t;p> printf("</HTML>\n");</p><p><b> return 0;</b></p><p><b> }</b></p><p> 以上程序必須在.CPP中編譯和運(yùn)行,如果使用.C會(huì)報(bào)錯(cuò)。</p><p> WinIo的基
40、本使用:</p><p> WinIo庫(kù)在VC應(yīng)用程序中的使用(WinIo庫(kù)下載)</p><p> 為了在VC中能正常使用WinIo庫(kù),必須按以下步驟進(jìn)行配置:</p><p> (1):將WinIo.dll、WinIo.sys、WINIO.VXD三個(gè)文件放在程序可執(zhí)行文件所在目錄下;</p><p> (2):將WinIo.lib
41、添加到工程中,WinIo.lib及winio.h文件必須放在工程目錄下;</p><p> (3):在StdAfx.h頭文件中加入#include "winio.h"語(yǔ)句;</p><p> (4):調(diào)用InitializeWinIo函數(shù)初始化WinIo驅(qū)動(dòng)庫(kù);</p><p> (5):調(diào)用讀寫(xiě)IO口的GetPortVal或SetPort
42、Val函數(shù);</p><p> (6):調(diào)用ShutdownWinIo函數(shù);</p><p> WinIo庫(kù)中幾個(gè)函數(shù)說(shuō)明: </p><p> (1):初始化與終止</p><p> bool _stdcall InitializeWinIo();void _stdcall ShutdownWinIo();</p>&
43、lt;p><b> (2):安裝與卸載</b></p><p> bool _stdcall InstallWinIoDriver(PSTR pszWinIoDriverPath, bool IsDemandLoaded = false);bool _stdcall RemoveWinIoDriver();</p><p> (3):讀寫(xiě)I/O口</
44、p><p> bool _stdcall GetPortVal(WORD wPortAddr, PDWORD pdwPortVal, BYTE bSize);bool _stdcall SetPortVal(WORD wPortAddr, DWORD dwPortVal, BYTE bSize);</p><p> GetPortVal函數(shù)從指定端口讀取一個(gè)BYTE/WORD/DWORD類(lèi)
45、型的值;</p><p> wPortAddr是指定一個(gè)端口地址值;</p><p> pdwPortVal為指向一雙字節(jié)型變量的指針,該變量存儲(chǔ)從wPortAddr端口讀取的值;</p><p> bSize指定讀取字節(jié)數(shù),值可以為1,2或4。 </p><p> SetPortVal函數(shù)向指定端口寫(xiě)入一個(gè)BYTE/WORD/DWO
46、RD類(lèi)型的值;</p><p> 除dwPortVal為輸入?yún)?shù),表示待寫(xiě)入外,其余個(gè)變量含義與GetPortVal相似。</p><p> 數(shù)據(jù)端口數(shù)字輸出的VC實(shí)現(xiàn)</p><p> //獲得數(shù)據(jù)端口地址WORD m_nport=(WORD)0x378;//獲得要寫(xiě)入數(shù)據(jù)端口的值WriteValue(數(shù)據(jù)范圍為0~255)DWORD m_nValue=(D
47、WORD)WriteValue;//調(diào)用WinIo庫(kù)函數(shù)SetPortVal寫(xiě)端口值SetPortVal(m_nport, m_nValue, 1);//write a BYTE value to an I/O port,可以使用winio中的例子,將自己的C程序放在例子中的工程中編譯,免去以上配置的繁瑣。</p><p> 6)計(jì)算機(jī)并口知識(shí):</p><p> 并行口通過(guò)8條數(shù)據(jù)線
48、一次傳輸一個(gè)字節(jié),25針并行口插口的針腳功能:</p><p> D0-D7為數(shù)據(jù)線,地址為0x378;S0-S7為狀態(tài)線,地址為0x379;C0-C7 為控制線,C4、C5、C6、C7是不可見(jiàn), 地址為0x37A;G0-G7為GND。</p><p> 7)綜合以上個(gè)步驟:</p><p> 第一,配置IIS服務(wù)器,在IIS服務(wù)器的“默認(rèn)站點(diǎn)”下右擊,建立
49、一個(gè)“虛擬目錄”(例 別名:wangye物理路徑:隨便一個(gè)路徑即可),將編寫(xiě)好的HTML表單放到該物理路徑下;第二,再建一個(gè)“虛擬目錄”(例 別名:cgi(與表單中的Action后面虛擬路徑對(duì)應(yīng))物理路徑:最好是C盤(pán)中的Inetpub文件夾下的wwwroot文件夾),將編譯好的getcgi.exe程序放在wwwroot文件夾下;第三,設(shè)置應(yīng)用程序的映射,在wangye虛擬目錄上右擊選擇屬性,選擇配置—>添加,將路徑設(shè)置為C盤(pán)中的I
50、netpub文件夾下的wwwroot文件夾getcgi.exe并確定;第四,將硬件電路接好(可以先使用發(fā)光二極管接一個(gè)1K的電阻測(cè)試);第五,打開(kāi)瀏覽器輸入http://172.29.XXX.XXX(服務(wù)器電腦的IP地址)/wangye,回車(chē)后打開(kāi)網(wǎng)頁(yè),分別選擇“打開(kāi)空調(diào)”、“關(guān)閉空調(diào)”并確定進(jìn)行測(cè)試。</p><p><b> 三、設(shè)計(jì)總結(jié)</b></p><p>
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 計(jì)算機(jī)控制技術(shù)課程設(shè)計(jì)
- 計(jì)算機(jī)控制技術(shù)課程設(shè)計(jì)
- 計(jì)算機(jī)控制技術(shù)課程設(shè)計(jì)
- 計(jì)算機(jī)控制技術(shù)課程設(shè)計(jì)
- 計(jì)算機(jī)溫度控制課程設(shè)計(jì)
- 計(jì)算機(jī)控制課程設(shè)計(jì)
- 計(jì)算機(jī)控制_課程設(shè)計(jì)-
- 計(jì)算機(jī)控制技術(shù)課程設(shè)計(jì) (2)
- 計(jì)算機(jī)控制課程設(shè)計(jì)--智能路燈控制系統(tǒng)的設(shè)計(jì)
- 計(jì)算機(jī)控制技術(shù)課程設(shè)計(jì)--油庫(kù)計(jì)算機(jī)監(jiān)控系統(tǒng)硬件設(shè)計(jì)
- 水塔-計(jì)算機(jī)控制課程設(shè)計(jì)
- 控制儀表與計(jì)算機(jī)控制技術(shù)課程設(shè)計(jì)
- 微型計(jì)算機(jī)控制技術(shù)課程設(shè)計(jì)報(bào)告---電磁智能車(chē)舵機(jī)控制
- 計(jì)算機(jī)控制技術(shù)課程設(shè)計(jì)-溫度采集
- 計(jì)算機(jī)控制課程設(shè)計(jì)--啤酒發(fā)酵計(jì)算機(jī)溫度控制系統(tǒng)設(shè)計(jì)
- 計(jì)算機(jī)控制課程設(shè)計(jì)溫度控制
- 計(jì)算機(jī)控制技術(shù)課程設(shè)計(jì)---pid控制器
- 溫度控制系統(tǒng)設(shè)計(jì)-計(jì)算機(jī)控制技術(shù)課程設(shè)計(jì)
- 計(jì)算機(jī)c語(yǔ)言課程設(shè)計(jì)--鼠標(biāo)控制
- 計(jì)算機(jī)溫度控制系統(tǒng)課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論