[OK210開發(fā)板體驗]系統(tǒng)篇(4)基于OK210的智能家居系統(tǒng)之整合
- 
			1 對驅動的管理
 
- 
			2 對驅動的訪問
 
- 
			3 對界面的控制
 
前面對驅動的體驗都是通過手動加載上去的(insmod\rmmod\lsmod),現在要改成上電啟動后,自動加載,具體方法見【OK210試用體驗】入門篇(4)編程入門(NFS登錄、驅動入門)中的附錄模板,這里要加載的驅動有,LED驅動、Key按按驅動、DS18B20溫度傳感器驅動、PWM蜂鳴器驅動、ADC模數驅動等,具體的驅動代碼,見相關章節(jié)。
二、對驅動的訪問
1 新建文件和目錄:對驅動的訪問,通過接口函數來實現,
首先在Boa服務器的CGI目錄下,新建各自的源文件和頭文件,
其次,新建一配置文件config.ini,用來放置一些系統(tǒng)的初始化數據
再次,新建一控制文件main-cgi.c,用來響應或管理前端的數據
最后的文件目錄如下所示:
 
 2 關鍵代碼說明
- 
					if( (fp_html=fopen("./../main.html","r")) == NULL)//打開網頁主頁面
 
- 
					        {
 
- 
					                exit(1);//如果打不開,直接退出
 
- 
					        }
 
- 
					        while(fgets(buf,512,fp_html))//每次獲取主頁面上的512個字符,直到讀取完
 
- 
					        {
 
- 
					                if(strncmp(buf,"$CurTemp$",9)==0)//如果找到溫度的顯示位置
 
- 
					                {
 
- 
					                        ds18b20_fun(temperation);//讀取OK210上的DS18B20的數據
 
- 
					                        if (temperation[0]>0&&temperation[1]>0)
 
- 
					                                printf("  %2d.%d ℃\n", temperation[0], temperation[1]);//更新數據顯示
 
- 
					                        else
 
- 
					                                printf("  85.0 ℃\n");
 
- 
					                        //printf("  85.0 ℃\n");
 
- 
					                }
 
- 
					                else if(strncmp(buf,"$CurHumidity$",13)==0)<font size="2"><font face="Tahoma"><font size="3">//如果找到濕度的顯示位置</font></font></font>
 
- 
					                {
 
- 
					                        adc_data = adc_fun(0);//通過ADC模擬濕度,讀取模擬值
 
- 
					                        printf("     %2d %\n", (adc_data/100));<font size="2"><font face="Tahoma"><font size="3">//更新數據顯示</font></font></font>
 
- 
					                }
 
- 
					                else if(strncmp(buf,"$PWMMotor$",10)==0)//通過PWM模擬窗簾動作<font size="2"><font face="Tahoma"><font size="3"></font></font></font>
 
- 
					                {
 
- 
					                        if(pwm_config[0]==0)
 
- 
					            {
 
- 
					                printf("<img src=\"./../bootstrap-3.3.5-dist/image/off.png\" width=30 height=30 hspace=35 >");<font size="2"><font face="Tahoma"><font size="3"><font size="2"><font face="Tahoma"><font size="3">//更新顯示狀態(tài)</font></font></font></font></font></font>
 
- 
					            }
 
- 
					            else
 
- 
					            {
 
- 
					                printf("<img src=\"./../bootstrap-3.3.5-dist/image/on.png\" width=30 height=30 hspace=35 >");
 
- 
					            }
 
- 
					                }
 
- 
					                else if(strncmp(buf,"$LedSwitch$",11)==0)<font size="2"><font face="Tahoma"><font size="3">//通過LED模擬開關動作</font></font></font>
 
- 
					                {
 
- 
					                        int i=0;
 
- 
					                        for(i=0; i < 4; i++)
 
- 
					                        {
 
- 
					                                if(led_config[i]==1)
 
- 
					                                {
 
- 
					                                        printf("<img src=\"./../bootstrap-3.3.5-dist/image/off.png\" width=30 height=30 hspace=35 >");<font size="2"><font face="Tahoma"><font size="3"><font size="2"><font face="Tahoma"><font size="3"><font size="2"><font face="Tahoma"><font size="3">//更新顯示狀態(tài)</font></font></font></font></font></font></font></font></font>
 
- 
					                                }
 
- 
					                                else
 
- 
					                                {
 
- 
					                                        printf("<img src=\"./../bootstrap-3.3.5-dist/image/on.png\" width=30 height=30 hspace=35 >");
 
- 
					                                }
 
- 
					                        }
 
- 
					                }
 
- 
					                else
 
- 
					                        printf("%s",buf);<font size="2"><font face="Tahoma"><font size="3"><font size="2"><font face="Tahoma"><font size="3"><font size="2"><font face="Tahoma"><font size="3">//否則保護原來的數據</font></font></font></font></font></font></font></font></font>
 
- }
arm-linux-gcc -o main-cgi.cgi main-cgi.c ds18b20-cgi.c adc-cgi.c leds-cgi.c pwm-cgi.c
三、對界面的控制
1 界面設計
1)主要有3個界面,index.html,login.html,main.html
boa服務器首先啟動index.html文件(在boa.conf中設置),在該頁面,通過登錄按鍵,將頁面跳轉到login.html界面,如下代碼:
- <p><a class="btn btn-lg btn-success" href="login.html" role="button">登錄</a></p>
- <button class="btn btn-lg btn-primary btn-block" onclick="myFunction()" type="submit">登錄</button>
- 
					if(document.getElementById("inputEmail").value=="gjianw217@163.com"&&document.getElementById("inputPassword").value=="111111")
 
- 
					{
 
- 
					window.open("./cgi-bin/main-cgi.cgi");
 
- 
					}
 
2 主界面
主界面主要通過表單<form>和cgi進行數據的交互,如環(huán)境檢測表單,用來顯示溫度值和濕度值。其中濕度值是模擬值。代碼中有兩點值得注意
1)表單數據的提交方法,使用post
2)表單中通過變量$xx$來定位數據
- 
					     <font size="2"><font face="Tahoma"><font size="3"><FORM  class="form-horizontal" role="form" METHOD="post"></font></font></font>
 
- 
					<legend>環(huán)境檢測</legend>
 
- 
					           <div class="form-group">
 
- 
					                    <label class="col-sm-2 control-label" for="ds_id">溫度檢測</label>
 
- 
					                    <div class="col-sm-4">
 
- 
					                        <p><font color="red"><h5 align=center> 溫    度
 
- 
					$CurTemp[        DISCUZ_CODE_1046        ]lt;/h5><b>
 
- 
					                     </div>
 
- 
					           </div>
 
-            <div class="form-group">
 
- 
						                    <label class="col-sm-2 control-label" for="ds_id">濕度檢測</label>
 
- 
						                    <div class="col-sm-4">
 
- 
						                        <p><font color="red"><h5 align=center> 濕    度
 
- 
						$CurHumidity[        DISCUZ_CODE_1046        ]lt;/h5><b>
 
- 
						                     </div>
 
- 
						           </div>
 
- 
						                        
 
- </form>
- 
										<FORM  class="form-horizontal" role="form" METHOD="post">
 
- 
										<legend>燈光控制</legend>
 
- 
										$LedSwitch$
 
- 
										        <br>
 
- 
										        <input type="submit" name="led2" value=" 臥  室 "> 
 
- 
										        <input type="submit" name="led2" value=" 廚  房 "> 
 
- 
										        <input type="submit" name="led3" value=" 客  廳 "> 
 
- 
										        <input type="submit" name="led4" value=" 衛(wèi)生間 "> 
 
- 
										        <br>
 
- 
										
 
- </FORM>
最后附幾張調試圖片
1)下圖為登錄控制界面后,當前的溫度為32.10度,濕度為16%,默認為讀廚房和餐廳的燈亮

2)下圖對應上圖的控制信息,顯示讀廚房和餐廳的燈亮

3)下圖顯示窗簾正在運行,此時OK210的蜂鳴器在響
 
 相關產品 >
- 
                OKMX6UL-C開發(fā)板 飛凌嵌入式專注imx6系列imx6ul開發(fā)板、飛思卡爾imx6ul核心板等ARM嵌入式核心控制系統(tǒng)研發(fā)、設計和生產,i.mx6UL系列產品現已暢銷全國,作為恩智浦imx6ul,imx6ul開發(fā)板,i.mx6提供者,飛凌嵌入式提供基于iMX6 iMX6UL解決方案定制。 了解詳情 
- 
                OKMX6ULL-C開發(fā)板 40*29mm,雙網雙CAN,8路串口| i.MX6ULL開發(fā)板是基于NXP i.MX6ULL設計開發(fā)的的一款Linux開發(fā)板 ,主頻800MHz,體積小,其核心板僅40*29mm,采用板對板連接器,適應場景豐富。 了解詳情 

 
                                             換一批
換一批


