freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于嵌入式web服務(wù)器的遠(yuǎn)程溫度監(jiān)測(cè)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)-資料下載頁(yè)

2025-10-30 01:27本頁(yè)面

【導(dǎo)讀】以迅速、準(zhǔn)確的獲取環(huán)境信息,很好的解決了對(duì)遠(yuǎn)程設(shè)備進(jìn)行監(jiān)測(cè)和控制的問(wèn)題。嵌入式系統(tǒng)和Inter的結(jié)合是現(xiàn)在研究的主流,具有廣闊的發(fā)展前景。本文設(shè)計(jì)了一種基于arm開(kāi)發(fā)板的遠(yuǎn)程溫度監(jiān)控系統(tǒng),利用成熟。CGI程序與管道文件的數(shù)據(jù)傳輸方式??偟膩?lái)說(shuō),本文從基礎(chǔ)方面講解了嵌入式

  

【正文】 _PIN, DS18B20_PIN_OUTP)。 // 向 DS18B20 發(fā)送一個(gè)上升沿,并保持高電平狀態(tài)約 100 微秒 s3c2410_gpio_setpin(DS18B20_PIN, HIGH)。 udelay(100)。 // 向 DS18B20 發(fā)送一個(gè)下降沿,并保持低電平狀態(tài)約 600 微秒 s3c2410_gpio_setpin(DS18B20_PIN, LOW)。 udelay(600)。 // 向 DS18B20 發(fā)送一個(gè)上升沿,此時(shí)可釋放 DS18B20 總線 s3c2410_gpio_setpin(DS18B20_PIN, HIGH)。 udelay(100)。 // 以上動(dòng)作是給 DS18B20 一個(gè)復(fù)位脈沖 // 通過(guò)再次配置 GPIOB1 引腳成輸入狀態(tài),可以檢測(cè)到 DS18B20 是否復(fù)位重慶大學(xué)本科學(xué)生畢業(yè)設(shè)計(jì) (論文) 3 系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) 17 成功 s3c2410_gpio_cfgpin(DS18B20_PIN, DS18B20_PIN_INP); // 若總線在釋放后總線狀態(tài)為高電平,則復(fù)位失敗 if(s3c2410_gpio_getpin(DS18B20_PIN)){ printk(DS18b20 reset failed.\r\n)。 return 1。} 首先看寫(xiě)時(shí)隙,當(dāng)主機(jī)將數(shù)據(jù)線從高電平拉低至低電平時(shí)產(chǎn)生寫(xiě)時(shí)隙。有兩種類(lèi)型的寫(xiě)時(shí)隙:寫(xiě)“ 1”和寫(xiě)“ 0”。所有寫(xiě)時(shí)隙必須在 60us 以上(即由低拉高后持續(xù) 60us 以上),各個(gè)寫(xiě)時(shí)隙之間必須保證最短 1us 的恢復(fù)時(shí)間。 DS18B20 在數(shù)據(jù)線變低后的 15us 至 60us 的窗口時(shí)間內(nèi)對(duì)數(shù)據(jù)線進(jìn)行采樣,如果為高電平就寫(xiě)為“ 1”,如果為低電平就寫(xiě)為“ 0”。對(duì)于主機(jī)產(chǎn)生寫(xiě)“ 1”時(shí)隙的情況,數(shù)據(jù)線必須先被拉低,然后釋放,在寫(xiě)時(shí)隙開(kāi)始后的 15us 內(nèi)允許數(shù)據(jù)線拉至高電平。對(duì)于主機(jī)產(chǎn)生寫(xiě)“ 0” 時(shí)隙的情況,數(shù)據(jù)線必需被拉至低電平且至少保持低電平 60us 時(shí)間。其程序如下: unsigned char byte; s3c2410_gpio_cfgpin(DS18B20_PIN, DS18B20_PIN_OUTP)。 for (i = 0。 i 8。 i++) { s3c2410_gpio_setpin(DS18B20_PIN, LOW)。 udelay(1)。 if(byte amp。 HIGH) { // 若 byte 變量的 D0 位是 1,則需向總線上寫(xiě) “ 1” // 根據(jù)寫(xiě) “ 1“ 時(shí)隙規(guī)則,電平在此處翻轉(zhuǎn)為高 s3c2410_gpio_setpin(DS18B20_PIN, HIGH)。 } else { // 若 byte 變量的 D0 位是 0,則需向總線上寫(xiě) “ 0” // 根據(jù)寫(xiě) “ 0” 時(shí)隙規(guī)則,電平在保持為低 // s3c2410_gpio_setpin(DS18B20_PIN, LOW)。 } // 電平狀態(tài)保持 60 微秒 udelay(60)。 s3c2410_gpio_setpin(DS18B20_PIN, HIGH)。 重慶大學(xué)本科學(xué)生畢業(yè)設(shè)計(jì) (論文) 3 系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) 18 udelay(15)。 byte = 1。 } s3c2410_gpio_setpin(DS18B20_PIN, HIGH)。 再次看讀時(shí)隙,當(dāng)主機(jī)從 DS18B20 讀數(shù)據(jù)時(shí),把數(shù)據(jù)線從高電平拉至低電平,產(chǎn)生讀時(shí)隙。數(shù)據(jù)線必須保持低電平至少 1us,來(lái)自 DS18B20 的輸出數(shù)據(jù)在讀時(shí)隙下降沿之后的 15us 內(nèi)有效,因此在次 15us 內(nèi),主機(jī)必須將數(shù)據(jù)線引腳置低。在讀時(shí)隙結(jié)束時(shí),數(shù)據(jù)線引腳將通過(guò)外部上拉電阻拉回至高電平。所有的讀時(shí)隙最短必須持續(xù) 60us,各個(gè)讀時(shí)隙之間必須保持最短 1us 的恢復(fù)時(shí)間。其程序如下: unsigned char i = 0。 unsigned char byte = 0。 for (i = 0。 i 8。 i++) { s3c2410_gpio_cfgpin(DS18B20_PIN, DS18B20_PIN_OUTP)。 s3c2410_gpio_setpin(DS18B20_PIN, LOW)。 udelay(1)。 byte = 1。 s3c2410_gpio_setpin(DS18B20_PIN, HIGH)。 s3c2410_gpio_cfgpin(DS18B20_PIN, DS18B20_PIN_INP)。 // 若總線在我們?cè)O(shè)它為低電平之后若 1 微秒之內(nèi)變?yōu)楦? // 則認(rèn)為從 DS18B20 處收到一個(gè) “ 1” 信號(hào) // 因此把 byte 的 D7 為置 “ 1” if (s3c2410_gpio_getpin(DS18B20_PIN)) byte |= 0x80。 udelay(60)。 } return byte。 所有的讀寫(xiě)時(shí)隙至少需要 60us,且每?jī)蓚€(gè)獨(dú)立的時(shí)隙之間至少需要 1us 的恢復(fù)時(shí)間。在寫(xiě)時(shí)隙時(shí),主機(jī)將在拉低總線 15us 內(nèi)釋放總線,并向 DS18B20 寫(xiě)“ 1”;若主機(jī)拉低總線后能保持至少 60us 的低電平,則向單總線器件寫(xiě)“ 0”。 DS18B20僅在主機(jī)發(fā)出讀時(shí)隙時(shí)才向主機(jī)傳輸數(shù)據(jù),所以,當(dāng)主機(jī)向 DS18B20 發(fā)出讀數(shù)據(jù)命令后,必須馬上產(chǎn)生讀時(shí)隙,以便 DS18B20 能傳輸數(shù)據(jù)。 DS18B20 雖然具有測(cè)溫系統(tǒng)簡(jiǎn)單、測(cè)溫精度高、連接方便、占用 引腳 少等優(yōu)點(diǎn),但在實(shí)際應(yīng)用中也應(yīng)注意以下幾方面的問(wèn)題: 較小的硬件開(kāi)銷(xiāo)需要相對(duì)復(fù)雜的 軟件 進(jìn)行補(bǔ)償,由于 DS18B20 與微處理器間重慶大學(xué)本科學(xué)生畢業(yè)設(shè)計(jì) (論文) 3 系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) 19 采用串行數(shù)據(jù)傳送,因此 , 在對(duì) DS18B20 進(jìn)行讀寫(xiě)編程時(shí),必須嚴(yán)格的保證讀寫(xiě)時(shí)序,否則將無(wú)法讀取測(cè)溫結(jié)果。 在 DS18B20 的有關(guān)資料中均未提及單總線上所掛 DS18B20 數(shù)量問(wèn)題,容易使人誤認(rèn)為可以掛任意多個(gè) DS18B20,在實(shí)際應(yīng)用中并非如此。當(dāng)單總線上所掛DS18B20 超過(guò) 8 個(gè)時(shí),就需要解決微處理器的總線驅(qū)動(dòng)問(wèn)題,這一點(diǎn)在進(jìn)行多點(diǎn)測(cè)溫系統(tǒng)設(shè)計(jì)時(shí)要加以注意。 連接 DS18B20 的總線電纜是有長(zhǎng)度限制的。試驗(yàn)中,當(dāng)采用普通信號(hào)電纜傳輸長(zhǎng)度超過(guò) 50m 時(shí),讀取的測(cè)溫?cái)?shù)據(jù)將發(fā)生錯(cuò)誤。當(dāng)將總線電纜改為雙絞線帶屏蔽電纜時(shí),正常通訊距離可達(dá) 150m,當(dāng)采用每米絞合次數(shù)更多的雙絞線帶屏蔽電纜時(shí),正常通訊距離進(jìn)一步加長(zhǎng)。這種情 況主要是由總線分布電容使信號(hào)波形產(chǎn)生畸變?cè)斐傻?。因此,在?DS18B20 進(jìn)行長(zhǎng)距離測(cè)溫系統(tǒng)設(shè)計(jì)時(shí)要充分考慮總線分布電容和阻抗匹配問(wèn)題。 在 DS18B20 測(cè)溫程序設(shè)計(jì)中,向 DS1820 發(fā)出溫度轉(zhuǎn)換命令后,程序總要等待 DS18B20 的返回信號(hào),一旦某個(gè) DS18B20 接觸不好或斷線,當(dāng)程序讀該DS18B20 時(shí),將沒(méi)有返回信號(hào),程序進(jìn)入死循環(huán)。這一點(diǎn)在進(jìn)行 DS18B20 硬件連接和軟件設(shè)計(jì)時(shí)也要給予一定的重視。 Boa 服務(wù)器的 移植 開(kāi)發(fā) Boa 是一個(gè)非常小巧的 Web 服務(wù)器,可執(zhí)行代碼只有約 60KB。它是一個(gè)單任務(wù) Web 服務(wù)器,只能依次完成用戶的請(qǐng)求,而不會(huì) fork 出新的進(jìn)程來(lái)處理并發(fā)連接請(qǐng)求。但 Boa 支持 CGI,能夠?yàn)?CGI 程序 fork 出一個(gè)進(jìn)程來(lái)執(zhí)行。 Boa 的設(shè)計(jì)目標(biāo)是速度和安全,在其站點(diǎn)公布的性能測(cè)試中, Boa 的性能要好于 Apache 服務(wù)器 。 Boa 數(shù)據(jù)傳輸有兩種方式: GET 和 POST。當(dāng)服務(wù)器發(fā)現(xiàn)有客戶端瀏覽器新的請(qǐng)求時(shí),填充一些公共環(huán)境變量,在判斷數(shù)據(jù)提交方式是 GET 還是 POST 后,再分別填充不同的環(huán)境變量,因此對(duì)不同方式的數(shù)據(jù)進(jìn)行分別解析。 Boa 默認(rèn)數(shù)據(jù)傳輸方式是 GET 方式, Boa 服務(wù)器將客戶端瀏覽器提交數(shù)據(jù)填充到 頭 文 件 下 的 結(jié) 構(gòu) 體 request 成員 char*query_string 變 換 , 再 通 過(guò) getenv(“ QUERY_STRING” )的方式解析數(shù)據(jù),返回的數(shù)據(jù)就是用戶提交的數(shù)據(jù)字符串。在判斷數(shù)據(jù)傳輸方式時(shí),如果發(fā)現(xiàn)是 POST 方式時(shí), Boa 服務(wù)器將瀏覽器 客 戶 端 提 交 的 數(shù) 據(jù) 填 充 到 頭 文 件 下 的 結(jié) 構(gòu) 體 request 成 員 char*content_length 變換,通過(guò) getenv(“ CONTENT_LENGTH” )的方式獲取字符流數(shù)據(jù),再通過(guò)標(biāo)準(zhǔn)輸入輸出的方式解析數(shù)據(jù)。 Boa 服務(wù)器解析請(qǐng)求頁(yè)面時(shí),首先通過(guò) 文件函數(shù) 中的 init_get()函數(shù) 解析文件目錄,然后調(diào)用 文件中 的 init_cgi()函數(shù)來(lái) 判斷 是不是 cgi 頁(yè)面, Boa 服務(wù)器通過(guò)創(chuàng)建一個(gè)重慶大學(xué)本科學(xué)生畢業(yè)設(shè)計(jì) (論文) 3 系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) 20 新的進(jìn)程來(lái)處理 CGI 和 html/htm 靜態(tài)網(wǎng)頁(yè)。 Boa 的開(kāi)發(fā)流程如下: 第一步完成 Boa 程序的移植。從 下載 Boa源碼,當(dāng)前最新版本為 ,將其解壓并進(jìn)入源碼目錄的 src 子目 錄 。 tar xzf cd ./configure//生成 Makefile 文件 。 修改 Makefile 文件,找到 CC=gcc,將其改成 CC = armlinuxgcc,再找到 CPP = gcc –E,將其改成 CPP = armlinuxgcc –E,并保存退出。 然后運(yùn)行 make 進(jìn)行編譯,得到的可執(zhí)行程序?yàn)?Boa,將調(diào)試信息剝?nèi)?,得到的最后程序只有約 60KB 大小。 make armlinuxstrip boa 第二步完成 Boa 的配置,使其能夠支持 CGI 程序的執(zhí)行。 Boa 需要在 /etc 目錄下建立一個(gè) boa 目錄,里面放入 Boa 的主要配置文件 。在 Boa 源碼目錄下已有一個(gè)示例 ,可以在其基礎(chǔ)上進(jìn)行修改,下面解釋一下該文件的含義 ,以方便用戶進(jìn)行配置。 監(jiān)聽(tīng)的端口號(hào),缺省都是 80,一般無(wú)需修改 。 Port 80 bind 調(diào)用的 IP 地址,一般注釋掉,表明綁定到 INADDR_ANY,通配于服務(wù)器的所有 IP 地址 。 Listen 作為哪個(gè)用戶運(yùn)行,即它擁有該用戶的權(quán)限,一般都是 nobody,需要 /etc/passwd 中 添加為 nobody 用戶 。 User nobody 作為哪個(gè)用戶組運(yùn)行,即它擁有該用戶組的權(quán)限,一般都是 nogroup,需要在/etc/group 文 件中 添加為 nogroup 組 。 Group nogroup 當(dāng)服務(wù)器發(fā)生問(wèn)題時(shí)發(fā)送報(bào)警的 地址 。 ServerAdmin root@localhost 錯(cuò)誤日志文件。如果沒(méi)有以 /開(kāi)始,則表示從服務(wù)器的根路徑開(kāi)始。如果不需要錯(cuò)誤日志,則用 /dev/null。在下面設(shè)置時(shí),注意一定要建立 /var/log/boa 目錄 。 ErrorLog /var/log/boa/error_log 訪問(wèn)日志文件。如果沒(méi)有以 /開(kāi)始,則表示從服務(wù)器的根路徑開(kāi)始。如果不需要錯(cuò)誤日志,則用 /dev/null 或直接注釋掉。在下面設(shè)置時(shí),注意一定要建立 /var/log/boa 重慶大學(xué)本科學(xué)生畢業(yè)設(shè)計(jì) (論文) 3 系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) 21 目錄 。 AccessLog /var/log/boa/access_log 是否使用本地時(shí)間。如果沒(méi)有注釋掉,則使用本地時(shí)間。注釋掉則使用 UTC 時(shí) 間 。 UseLocaltime 是否記錄 CGI 運(yùn)行信息,如果沒(méi)有注釋掉,則記錄,注釋掉則不記錄 。 VerboseCGILogs 是否啟動(dòng)虛擬主機(jī)功能,即設(shè)備可以有多個(gè)網(wǎng)絡(luò)接口,每個(gè)接口都可以擁有一個(gè)虛擬的 Web 服 務(wù)器。一般注釋掉,即不需要啟 動(dòng) 。 VirtualHost HTML 文檔的主目錄。如果沒(méi)有以 /開(kāi)始,則表示從服務(wù)器的
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1