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

正文內(nèi)容

基于arm的遠程溫度監(jiān)測系統(tǒng)的設(shè)計-閱讀頁

2025-07-27 10:31本頁面
  

【正文】 me/dell/C 后邊的是內(nèi)核的路徑, M后邊是驅(qū)動程序的路徑, modules 表示編譯成模塊(此編譯方法為內(nèi)核外編譯)。 五、 驅(qū)動程序的加載及創(chuàng)建設(shè)備節(jié)點 把下載的兩個驅(qū)動程序生成的 .ko 文件: 和 文件下載到板子上的一個目錄下 /project/(推薦) 。 使用命令 insmod 回車,此時會出現(xiàn)一個主設(shè)備號 251 或者其他數(shù)字,在使用 mknod /dev/DS18B20 c 251(主設(shè)備號 ) 0 回車創(chuàng)建設(shè)備節(jié)點,以后提供給用戶的就是這個節(jié)點文件,他可以 open,read,close,write 等操作。 此時,你可以執(zhí)行測試程序,查看一下效果。 把 .cgi 程序放在板子的 //cgibin/目錄下 。 在目錄 /lin/project/work/目錄下創(chuàng)建 date 數(shù)據(jù)庫 sqlite3 date 便可創(chuàng)建。 打開瀏覽器,輸入 看到開發(fā)板的頁面,再在后面輸入 回車 。 二 驅(qū)動的框架 ( 1) 驅(qū)動框架包括向內(nèi)核注冊驅(qū)動信息,從內(nèi)核刪除驅(qū)動信息(防止內(nèi)核污染),設(shè)備的主次設(shè)備號的獲取, static struct file_operations DS18B20_fops= { .owner = THIS_MODULE, //擁有該結(jié)構(gòu)模塊的指針,避免在操作時被卸載,一般初始化為 THIS_MODULE ( 2)對外操作 基于 ARM 的遠程溫度監(jiān)測系統(tǒng)的設(shè)計 18 open = DS18B20_open, //對外提供打開操作 .release = DS18B20_release, //當 file 結(jié)構(gòu)指針釋放時,調(diào)用次函數(shù),即:當最后一個打開該設(shè)備文件的用戶調(diào)用 close 時,將調(diào)用此函數(shù) //release 函數(shù)的主要任務(wù)是清理未結(jié)束的輸入 /輸出操作、釋放資源、用戶自定義排他標志的復位等 .read = DS18B20_read, //對外提供讀操作 .write = DS18B20_write, //對外提供寫操作 .unlocked_ioctl = DS18B20_ioctl, //該函數(shù)是特殊的控制函數(shù) ,可以通過它向設(shè)備傳遞控制信息或從設(shè)備取得狀態(tài)信息,即為 io 控制函數(shù) }。 int major=0。 //把 0 和原來生成的設(shè)備號再合并到一塊去 ,再生成一個設(shè)備號,表示有一個設(shè)備 cdev_init(dev,fops)。 devops=fops。 //向內(nèi)核注冊新生成的 devno 信息, 1 表示和設(shè)備關(guān)聯(lián)的的設(shè)備書目 if(err) //判斷設(shè)備是否存活,如果 cdev_add()調(diào)用成功的話,設(shè)備就可以使用了,外部的應用程序?qū)λ牟僮鳎瑑?nèi)核就會允許了 { 太原工業(yè)學院畢業(yè)設(shè)計(論文) 19 printk(Error %s adding DS18B20 %d\n,KERN_ALERT,minor)。 } } ( 4)申請設(shè)備號 static int DS18B20_init(void) { int result。 //申請設(shè)備, major 為主設(shè)備號, 0 為次設(shè)備號,表示自動分配設(shè)備號 if(major) //表示如果已經(jīng)有了主設(shè)備號,就直接注冊設(shè)備號 { result=register_chrdev_region(dev,1,DS18B20_DEVICE_NAME)。dev,0,1,DS18B20_DEVICE_NAME)。 //通過訪問設(shè)備號,獲得主設(shè)備號 } if(result0) { printk(DS18B20:unable to get major %s\n,KERN_ALERT)。 return result。DS18B20_devs,0,amp。 //這里的 0 表示的是第一個設(shè)備,因為咱們就有一個設(shè)備,以后在使用中,不一基于 ARM 的遠程溫度監(jiān)測系統(tǒng)的設(shè)計 20 定是一個,拿著就是變量兩 printk(KERN_ALERTThe major of DS18B20 device is %d\n,major)。 //這一句會打印出獲取的主設(shè)備號,以便創(chuàng)建節(jié)點使用 return 0。DS18B20_devs)。 printk(DS18B20 device uninstalDS18B20\n)。 } module_init(DS18B20_init)。 MODULE_LICENSE(Dual BSD/GPL)。 為源程序, project 為可在嵌入式開發(fā)板上運行的可執(zhí)行程序。使用了系統(tǒng) I/O(open,read,time 函數(shù) )和獲取時間函數(shù) 。 ? 作用:打開或創(chuàng)建文件 ? 返回值:成功則返回文件描述符,否則返回 1 ? Pathname 文件路徑,需用 “”引起來 ? flags 函數(shù)代表打開模式 都以 O_開頭 ? 必選項: ? O_RDONLY 只讀打開 ? O_WRONLY 只寫打開 ? O_RDWR 可讀可寫打開 ? 這三個參數(shù)必須有一個且只能有一個 基于 ARM 的遠程溫度監(jiān)測系統(tǒng)的設(shè)計 22 ? 在第二個參數(shù)有 O_CREAT 時添加第三參數(shù) ? include size_t read(int fd, void* buf, size_t count) ? 作用:從的文件描述符中讀出數(shù)據(jù) ? 返回 :成功返回讀到的字節(jié)數(shù) ,0 已到文件尾,出錯返回 1 并設(shè)置 errno include int close(int fd)。t)) ; ? 作用:獲取時間與時間格式轉(zhuǎn)換 void pthread_exit(void *ret) ? 作用:終止調(diào)用的線程,并返回一個指向某個對象的指針 .絕不能返回一個指向局部變量的指針 兩點補充說明 ? chtmp[0]保存的是溫度的整數(shù)部分, chtmp[1]是溫度的小數(shù)部分,故采用temp=chtmo[0]+chtmp[1]/ 轉(zhuǎn)化為溫度值 。 ( 3)報警線程 temp_alarming 太原工業(yè)學院畢業(yè)設(shè)計(論文) 23 線程 :temp_alarming 實現(xiàn)蜂鳴器告警:高于上限閾值響三聲,低于下限閾值連續(xù)響五秒,在設(shè)定的范圍內(nèi)不做任何動作 。 ? ioctl 函數(shù)是文件結(jié)構(gòu)中的一個屬性分量,就是說如果你的驅(qū)動程序提供了對ioctl 的支持,用戶就能在用戶程序中使用 ioctl 函數(shù)控制設(shè)備的 I/O 通道。 ( 4) 數(shù)據(jù)庫線程 temp_saving 線程 :temp_saving 實現(xiàn)數(shù)據(jù)(時間和溫度)插入數(shù)據(jù)庫的操作。 ? name 數(shù)據(jù)庫文件 ? mysqlite 句柄 ? 返回 :成功返回 0,失敗返回錯誤代碼 關(guān)閉數(shù)據(jù)庫 ? int sqlite3_close(sqlite3* mysqlite)。 ? 返回 :成功返回 0,失敗返回錯誤碼 ? sql 執(zhí)行的 sql 語句字符串 基于 ARM 的遠程溫度監(jiān)測系統(tǒng)的設(shè)計 24 ? sqlite_callback 回調(diào)函數(shù) ? void * 回調(diào)函數(shù)參數(shù) ,(NULL) ? char ** 錯誤信息 ? 回調(diào)函數(shù)一般在 select操作時用來處理查詢結(jié)果 ,insert\update…的時候填 NULL SQl 語句 創(chuàng)建表 CREATE TABLE 表名 ( 字段名 1 數(shù)據(jù)類型 1 , 字段名 2 數(shù)據(jù)類型 2 ); 向表中插入數(shù)據(jù) Insert into 表名 values ( ’’.’’) 。 ( 5)信號量 頭文件 include 使用信號量的原因: 多線程編程,因為無法知道哪個線程會在哪個時候?qū)蚕碣Y源進行操作,因此讓如何保護共享資源變得復雜,信號量可以線程間對資源的競爭 。 通過操作系統(tǒng)中的 PV 原語對其進行操作。( P操作) ? 每一次調(diào)用 post 操作將會使 sem 值加一( V操作) 。 CGI 程序 本部分主要分為三個部分 :第一, web 頁面的編寫,使需要輸出的信息可以正確的輸出網(wǎng)頁上;第二,數(shù)據(jù)庫的操作,這一部分是通過 C 語言編寫的 sqlite 語句操作數(shù)據(jù)庫,從而實現(xiàn)將數(shù)據(jù)庫中的有效信息輸出到 web 頁面上;第三,緩存文件操作,主要是把 從 web 頁面上輸入的上下限分別放在緩存文件中,以便使應用程序去文件中提取。 int sql()。//函數(shù)的聲明 ( 1)主函數(shù)部分 基于 ARM 的遠程溫度監(jiān)測系統(tǒng)的設(shè)計 26 包含有 web 網(wǎng)頁及 sql 與 fil 函數(shù)的調(diào)用, web 網(wǎng)頁的編寫主要是實現(xiàn)網(wǎng)頁的布局,其中包含文字的大小、顏色及相關(guān)屬性,還有就是對其格式的實現(xiàn)。 //將通過 C 語言編寫 的 html 語言轉(zhuǎn)換 為 html 語言格式,使其可以正確輸出 char *data。 printf(head\n)。//網(wǎng)頁的標題 printf(/head\n)。//網(wǎng)頁的“身體”部分,并將背景顏色 設(shè)置為粉紅色 printf(H3FONT color=red size=6 溫度遠程控制 /H3)。//以下出現(xiàn)的輸出信息字體都設(shè)置為 6號字,顏色設(shè)為綠色 data = getenv(QUERY_STRING)。 else { if(sscanf(data,m=%ldamp。m,amp。表單中輸入的必須是整 數(shù) 。 else { if(m=n)//判斷上下限是否合適,若上限低于下限則須重新 太原工業(yè)學院畢業(yè)設(shè)計(論文) 27 輸入 printf(P請輸入合適的上下限,此時下限比上限 大! )。 } } printf(\n)。 sql()。//調(diào)用文件操作的函數(shù) printf(/body\n)。 return 0。 int sql() { sqlite3 *db=NULL。 char *error=0。 printf(P以下為時間及溫度的記錄! \n)。db)。 sqlite3_close(db)。 return 1。 printf(br)。 //定義一個字符串存儲一個 sqlite 語句,其 功能為查找?guī)熘斜?tmp 里的所有數(shù)據(jù) char **Result。 sqlite3_get_table(db,sql4,amp。row,amp。error)。 printf(br)。i1。jcolumn。nbsp %s amp。nbsp amp。nbsp amp。nbsp amp。nbsp amp。nbsp amp。nbsp amp。nbsp amp。nbsp amp。 printf(br)。nbsp 是 web 網(wǎng)頁上空格 輸出的命令,輸出多個空格是為了使數(shù)據(jù)輸出時使數(shù)據(jù)對齊 太原工業(yè)學院畢業(yè)設(shè)計(論文) 29 for(i=1。i++) { for(j=0。j++) printf(amp。nbsp amp。nbsp amp。nbsp,Result[i*column+j])。 }//此循環(huán)是將從數(shù)據(jù)庫中讀出的數(shù)據(jù)全部輸出 sqlite3_free_table(Result)。//關(guān)閉數(shù)據(jù)庫 return 0。 int fil() { FILE *fd。//以只寫方式打開規(guī)定路徑下的文件,并 將文件描述符賦值給 fd 這一指針變量 if(fd==NULL) { printf(文件打開失敗 ! )。 }//如果文件打開成功,將溫度的上下限以長整型的形式存在打開的文件 里 fclose(fd)。 } HTML 程序 這一部分主要是 web 網(wǎng)頁的布局以及一些提示信息顯示屬性的設(shè)置,還有便是溫度上下限的輸入(涉及兩個文本框)。 charset=gb2312 ! 設(shè)置編碼,非常需要,不設(shè)的話 IE 顯示的話 為西歐碼 title 溫度遠程控制 /title /head body bgcolor=pink //設(shè)置背景顏色為粉紅色 h2 FONT color=red size=6溫度遠程控制 /h2 FONT color=blue size=6 請輸入兩個整型的數(shù)值?。闇囟鹊纳舷孪揲y值,若不是整數(shù)則會報錯的?。? hr ! 畫一條橫線 form ACTION=/cgibin/ //通過設(shè)置文件路徑與 文件 關(guān)聯(lián) FONT color=green size=6 P請在下面填入溫度的上下限閥值,按下確定后可以看到結(jié)果
點擊復制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1