一、簡要說明
本文主要講解A40i Boa應用,適用于飛凌 A40i 系列FETA40i-C核心板 Linux3.10 操作系統,其他平臺也可以參考,但是不同平臺之間會存在差異,需客戶自行修改以適應自己的使用。編寫本文章的主要目的是協助客戶加速產品的研發速度,由于小編水平有限,在服務過程中所提供的任何資料和信息,都僅供參考,客戶有權不使用或自行參考修改,本文章參考資料和信息的完整性、可靠性等問題請自行驗證。 硬件平臺簡介: FETA40i-C核心板基于全志工控行業平臺級處理器四核Cortex-A7 A40i設計,主頻1.2GHz,集成MAli400MP2 GPU,內存1GB/2GB ddr3L,存儲8GB eMMC。支持絕大部分當前流行的視頻及圖片格式解碼,具有穩定可靠的工業級產品性能和高性價比低功耗等優勢,搭載Linux和Android操作系統,適用于基于視覺交互的工業控制產品,目標應用包含,嵌入式設備、智能終端、工業控制、數據采集、機器視覺 、工業物聯網 、移動互聯設備、數字標牌等。 <
第二章 A40i系列Boa應用Boa是一種非常小巧的Web服務器,其可執行代碼只有大約60KB左右。作為一種單任務Web服務器,Boa只能依次完成用戶的請求,而不會fork出新的進程來處理并發連接請求。但Boa支持CGI,能夠為CGI程序fork出一個進程來執行,Boa的設計目標是速度和安全。 1、Boa配置文件Boa配置文件在/etc/boa/boa.conf 常用配置說明: (可根據項目需要,將以下配置添加到配置文件里) Group nogroup User nobody 這兩個配置是配置boa的運行的屬主和屬組,如果cgi要配置網卡地址,就必須修改成User root CGIPath /bin:/usr/bin:/usr/local/bin:/sbin Cgi程序運行的一個程序搜索路徑;比如運行ifconfig eth0 192.169.0.232 就必須配置/sbin路徑;ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ /usr/lib/cgi-bin/ 是cgi程序放到boa中的絕對地址,/cgi-bin/ 是客戶在網頁中提交的cgi地址;例如:/usr/lib/cgi-bin/中放置一個app.cgi;網頁訪問時候使用/cgi-bin/app.cgi?type=conf&random=0.1111 DocumentRoot /var/www 這個是虛擬目錄在開發板中的真實目錄 /var/log/boa/access_log 日志需要的文件夾和名字 VerboseCGILogs 調試日志開關,正式運行時候關閉。 2、cgi應用測試demoCGI是Web服務器運行時外部程序的規范,按CGI編寫的程序可以擴展服務器功能。CGI 應用程序能與瀏覽器進行交互,還可通過數據庫API 與數據庫服務器等外部數據源進行通信,從數據庫服務器中獲取數據。格式化為HTML文檔后,發送給瀏覽器,也可以將從瀏覽器獲得的數據放到數據庫中。 2.1 配置服務器先運行#boa 之后電腦瀏覽器瀏覽http://192.168.0.232/ 正常瀏覽不報錯,說明boa運行ok。 把boa/boa.conf 放到A40i 開發板/etc/boa/boa.conf 替換原來的boa.conf 2.2 放置程序cgi-bin內部的文件放到 /usr/lib/cgi-bin/app.cgi index.html ,xmlhttpreq.js 放到 /var/www/ajax/文件夾下 修改權限 /etc/boa/boa.conf chown root:root /var/www/ajax/* chown root:root /usr/lib/cgi-bin/app.cgi chmod o+x /usr/lib/cgi-bin/app.cgi chmod o+r /usr/lib/cgi-bin/app.cgi 2.3 開啟boa測試先運行#boa 之后電腦瀏覽器瀏覽http://192.168.0.232/ajax/ 2.4 開發及調試代碼說明當打開配置文件VerboseCGILogs 后調試信息就會生成access_log error_log 程序正式調試完成后要關閉程序.程序調試時候需要看這兩個日志文件。 Web網頁端 說明xmlhttpreq.js程序運行的腳本 特別說明:index.html 和xmlhttpreq.js程序腳本是下載在本地瀏覽器里執行的;cgi不是下載到本地瀏覽器執行。 Js應用程序 異步返回的時間請求 xhr.open("GET", "/cgi-bin/app.cgi?type=time&random="+Math.random(),true); 是向遠程的app.cgi 發送請求,請求獲取時間后返回web瀏覽器。 當遠程boa返回正確的數據后。 var returnValue = xhr.responseText;就是返回的結果 異步設置ip請求 //配置ip地址 var data={"name":"ipconfig"}; //ip_address var str_ip=document.getElementById("ip_address").value; data.address=str_ip; xhr.onreadystatechange=callback_configipFunction; //test.cgi后面跟個cur_time參數是為了防止Ajax頁面緩存 xhr.open("POST", "/cgi-bin/app.cgi?type=conf&random="+Math.random(),true); xhr.setRequestHeader("content-type","application/json"); xhr.send(JSON.stringify(data)); 向app.cgi發送一個異步json對象 對象內容是{"name":"ipconfig", “address” :”192.168.0.232”} 服務器回收到這個字符串,然后解釋這個字符串進行配置ip 配置成功后會收到{“status”:”ok”} 返回結果。 Cgi程序說明 程序段1 item = cJSON_GetObjectItem(root, "address");// value=cJSON_Print(item); if(value!=0) { sprintf(str_configip,"ifconfig eth0 %s",value); ret=system(str_configip); } 程序段2 if(ret==0) { char* retstr="{\"status\":\"ok\"}"; printf("%s",retstr); }else{ char* retstr="{\"status\":\"error\"}"; printf("%s",retstr); } 程序段1 解釋json配置網絡。 程序段2返回配置執行結果。 通過這個demo,客戶就可以實現web網頁配置A40i開發板的各種硬件資源。 原文鏈接:https://www.forlinx.com/article_view_777.html
|