嵌入式软件设计第8次实验报告-140201235-陈宇
嵌入式軟件設(shè)計第8次實驗報告
?
學(xué)號:140201235 ? ? ? ? ? ? ? ? ? 姓名:陳宇
組別:3????????????????實驗地點:D19
?
一、實驗?zāi)康?#xff1a;
1.熟悉WWW技術(shù)中的CGI(公共網(wǎng)關(guān)接口)技術(shù)。
2.學(xué)會使用CGI技術(shù)編寫C語言代碼驅(qū)動嵌入式開發(fā)板的LED燈和蜂鳴器。
二、實驗內(nèi)容:
1.編寫代碼完成Web服務(wù)器端蜂鳴器的驅(qū)動。
2.編寫代碼完成Web服務(wù)器端LED燈的驅(qū)動。
?
三、實驗過程描述:
1、實驗原理
CGI技術(shù)簡介:公共網(wǎng)關(guān)接口CGI(Common Gateway Interface)是WWW技術(shù)中最重要的技術(shù)之一。CGI是外部應(yīng)用程序與Web服務(wù)器之間的接口標(biāo)準(zhǔn),是在CGI程序和Web服務(wù)器之間傳遞信息的規(guī)程。CGI規(guī)范允許Web服務(wù)器執(zhí)行外部程序,并將它們的輸出發(fā)送給Web瀏覽器,CGI在物理上是一段程序,運行在服務(wù)器上,提供同客戶端HTML頁面的接口。絕大多數(shù)的CGI程序被用來解釋處理來自表單的輸入信息,并在服務(wù)器產(chǎn)生相應(yīng)的處理,或?qū)⑾鄳?yīng)的信息反饋給瀏覽器,CGI程序使網(wǎng)頁具有交互功能。
?
LED及蜂鳴器管腳連接圖
從圖中可以看出:
PF9,PF10為低電平時,LED0與LED1亮;
PF9,PF10為高電平時,LED0與LED1滅。
PF8為高電平時,蜂鳴器響;為低電平時,蜂鳴器不響。
????2、設(shè)計流程圖:
?
?
3、程序代碼
(運行代碼)
#include "sys.h"
#include <string.h>
#include "lwip_comm.h"
//LED燈端口和BEEP端口定義
#define LED1 PFout(10)
#define BEEP PFout(8)
void system_init(void);//系統(tǒng)初始化函數(shù)
//控制LED和BEEP的CGI handle;
const char* LEDS_CGI_Handler(int iIndex,\
int iNumParams,\
char *pcParam[],\
char * pcValue[]);
?
const char* BEEP_CGI_Handler(int iIndex,\
int iNumParams,\
char *pcParam[],\
char * pcValue[]);
?
//當(dāng)WEB客戶端請求瀏覽器的時候,此函數(shù)被CGI handle調(diào)用
extern int FindCGIParameter(const char *pcToFind,\
char *pcParam[],\
int iNumParams);
?
int main(void)
{
system_init();//系統(tǒng)初始化(總)
?
//以下代碼對蜂鳴器進(jìn)行初始化
{
GPIO_InitTypeDef GPIO_InitStructure;
?
//使能GPIOF管腳時鐘
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);
?
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;//蜂鳴器管腳
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;//輸出模式
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;//最大速度
GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;//推挽輸出
GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;//電阻
GPIO_Init(GPIOF,&GPIO_InitStructure);//調(diào)用函數(shù)對管腳初始化
?
GPIO_ResetBits(GPIOF,GPIO_Pin_8);//PF8拉低
? ? ? ? ? ? ? ? ? ? ? ? ?
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;//輸出模式
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;//最大速度
GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;//推挽輸出
GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;//上拉電阻
GPIO_Init(GPIOF,&GPIO_InitStructure);//調(diào)用函數(shù)對管腳初始化
?
GPIO_ResetBits(GPIOF,GPIO_Pin_10);//PF10拉低
?
}
?
while(1)
{
lwip_periodic_handle();//LWIP輪詢?nèi)蝿?wù)
?
}?
}
?
//BEEP的CGI控制句柄
const char* BEEP_CGI_Handler(int iIndex,\
int iNumParams,\
char *pcParam[],\
char * pcValue[])
{
unsigned char i=0;
//u8 i=0;
?
//找到BEEP的索引號
iIndex= FindCGIParameter("BEEP_TEST",pcParam,iNumParams);
if(iIndex !=-1)
{
BEEP = 0;
for(i=0;i<iNumParams;i++)
{
if(strcmp(pcParam[i],"BEEP_TEST")==0)//查找CGI
{
if(strcmp(pcValue[i],"BEEP_START")==0)
BEEP =1;//打開蜂鳴器
else if(strcmp(pcValue[i],"BEEP_STOP")==0)
BEEP =0;//關(guān)閉蜂鳴器÷
?
}
}
}
?
if(BEEP==1 && LED1==1) return "/BEEP_ON_LED_OFF.html";
else if(BEEP==1 && LED1==0) return "/BEEP_ON_LED_ON.html";
else if(BEEP==0 && LED1==1) return "/BEEP_OFF_LED_OFF.html";
else if(BEEP==0 && LED1==0) return "/BEEP_OFF_LED_ON.html";
else return "/index.html";
//return 0;
}
?
//LED的CGI控制句柄
const char* LEDS_CGI_Handler(int iIndex,\
int iNumParams,\
char *pcParam[],\
char * pcValue[])
{
unsigned char i=0;
//u8 i=0;
?
//找到LED的索引號
iIndex= FindCGIParameter("LED_TEST",pcParam,iNumParams);
if(iIndex !=-1)
{
LED1 = 0;
for(i=0;i<iNumParams;i++)
{
if(strcmp(pcParam[i],"LED_TEST")==0)//查找CGI
{
if(strcmp(pcValue[i],"LED_START")==0)
LED1 =0;//打開LED
else if(strcmp(pcValue[i],"LED_STOP")==0)
LED1 =1;//關(guān)閉LED
?
}
}
}
if(LED1==0 && BEEP==0) return "/BEEP_OFF_LED_ON.html";
else if(LED1==0 && BEEP==1) return "/BEEP_ON_LED_ON.html";
else if(LED1==1 && BEEP==0) return "/BEEP_OFF_LED_OFF.html";
else if(LED1==1 && BEEP==1) return "/BEEP_ON_LED_OFF.html";
else return "/index.html";
//return 0;
?
}
?
蜂鳴器不響?LED滅
<HTML>
<HEAD>
<TITLE>嵌入式Web服務(wù)器測試網(wǎng)頁</TITLE>
</HEAD>
<BODY>
<P>
<IMG src="./image/photo.jpg" alt="耿丹櫻花" align="right">
</P>
<H1 align="center">嵌入式Web服務(wù)器LED及BEEP測試</H1>
?
<DIV style="margin-top:1cm; text-align:center;">
<FORM method="get" action="./leds.cgi">
??LED:
?<input type="radio" name="LED_TEST" value="LED_START">ON
?<input type="radio" name="LED_TEST" value="LED_STOP" checked>OFF
<BR> <BR>
?<input type="submit" name="button1" value="SEND">
</FORM>
</DIV>
<DIV style="margin-top:3cm; text-align:center;">
<FORM method="get" action="./beep.cgi">
??BEEP:
<select name="BEEP_TEST" >
<option value="BEEP_START">ON
<option value="BEEP_STOP" selected = "selected">OFF
</select>
<BR> <BR>
?<input type="submit" name="button2" value="SEND">
</FORM>
</DIV>
</BODY>
</HTML>
?
蜂鳴器不響?LED亮
<HTML>
?
<HEAD>
<TITLE>嵌入式Web服務(wù)器測試網(wǎng)頁</TITLE>
</HEAD>
?
<BODY>
?
<P>
<IMG src="./image/photo.jpg" alt="耿丹櫻花" align="right">
</P>
?
?
<H1 align="center">嵌入式Web服務(wù)器LED及BEEP測試</H1>
?
<DIV style="margin-top:1cm; text-align:center;">
<FORM method="get" action="./leds.cgi">
??LED:
?<input type="radio" name="LED_TEST" value="LED_START" checked>ON
?<input type="radio" name="LED_TEST" value="LED_STOP">OFF
<BR> <BR>
?<input type="submit" name="button1" value="SEND">
</FORM>
</DIV>
?
?
<DIV style="margin-top:3cm; text-align:center;">
<FORM method="get" action="./beep.cgi">
??BEEP:
<select name="BEEP_TEST" >
<option value="BEEP_START">ON
<option value="BEEP_STOP" selected = "selected">OFF
</select>
<BR> <BR>
?<input type="submit" name="button2" value="SEND">
</FORM>
</DIV>
</BODY>
?
</HTML>
蜂鳴器響?LED滅
<HTML>
?
<HEAD>
<TITLE>嵌入式Web服務(wù)器測試網(wǎng)頁</TITLE>
</HEAD>
?
<BODY>
<P>
<IMG src="./image/photo.jpg" alt="耿丹櫻花" align="right">
</P>
?
?
<H1 align="center">嵌入式Web服務(wù)器LED及BEEP測試</H1>
?
<DIV style="margin-top:1cm; text-align:center;">
<FORM method="get" action="./leds.cgi">
??LED:
?<input type="radio" name="LED_TEST" value="LED_START" >ON
?<input type="radio" name="LED_TEST" value="LED_STOP" checked>OFF
<BR> <BR>
?<input type="submit" name="button1" value="SEND">
</FORM>
</DIV>
?
?
<DIV style="margin-top:3cm; text-align:center;">
<FORM method="get" action="./beep.cgi">
??BEEP:
<select name="BEEP_TEST" >
<option value="BEEP_START" selected = "selected">ON
<option value="BEEP_STOP">OFF
</select>
<BR> <BR>
?<input type="submit" name="button2" value="SEND">
</FORM>
</DIV>
</BODY>
?
</HTML>
?
蜂鳴器響?LED亮
<HTML>
<HEAD>
<TITLE>嵌入式Web服務(wù)器測試網(wǎng)頁</TITLE>
</HEAD>
<BODY>
<P>
<IMG src="./image/photo.jpg" alt="耿丹櫻花" align="right">
</P>
?
<H1 align="center">嵌入式Web服務(wù)器LED及BEEP測試</H1>
?
<DIV style="margin-top:1cm; text-align:center;">
<FORM method="get" action="./leds.cgi">
??LED:
?<input type="radio" name="LED_TEST" value="LED_START" checked>ON
?<input type="radio" name="LED_TEST" value="LED_STOP">OFF
<BR> <BR>
?<input type="submit" name="button1" value="SEND">
</FORM>
</DIV>
?
?
<DIV style="margin-top:3cm; text-align:center;">
<FORM method="get" action="./beep.cgi">
??BEEP:
<select name="BEEP_TEST" >
<option value="BEEP_START" selected = "selected">ON
<option value="BEEP_STOP" >OFF
</select>
<BR> <BR>
?<input type="submit" name="button2" value="SEND">
</FORM>
</DIV>
</BODY>
?
</HTML>
?
四、總結(jié)及實驗心得:
? ? ?這節(jié)課的任務(wù)是在第7次的實驗基礎(chǔ)上,增加一個蜂鳴器和LED燈。采用CGI(公共網(wǎng)關(guān)接口)技術(shù),使用CGI技術(shù)編寫C語言代碼驅(qū)動嵌入式開發(fā)板的LED燈和蜂鳴器。首先是跟著老師編寫代碼完成蜂鳴器的實驗,之后配置電腦的IP,編譯代碼嵌入開發(fā)板中,從而顯示效果。LED燈的實驗在蜂鳴器的基礎(chǔ)上編寫代碼,也很快的完成。
轉(zhuǎn)載于:https://www.cnblogs.com/gdcy/p/6581569.html
總結(jié)
以上是生活随笔為你收集整理的嵌入式软件设计第8次实验报告-140201235-陈宇的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 洛谷 P1690 贪婪的Copy
- 下一篇: leetcode : Reverse L