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

正文內(nèi)容

智能家居系統(tǒng)論文-資料下載頁(yè)

2025-06-28 04:39本頁(yè)面
  

【正文】 EF(void) init_destination(j_press_ptr cinfo) { mjpg_dest_ptr dest = (mjpg_dest_ptr) cinfodest。 destbuffer = (JOCTET *) (*cinfomemalloc_small)((j_mon_ptr) cinfo, JPOOL_IMAGE, OUTPUT_BUF_SIZE * sizeof(JOCTET))。 *(destwritten) = 0。 dest = destbuffer。 dest = OUTPUT_BUF_SIZE。}METHODDEF(boolean) empty_output_buffer(j_press_ptr cinfo) { mjpg_dest_ptr dest = (mjpg_dest_ptr) cinfodest。 memcpy(destoutbuffer_cursor, destbuffer, OUTPUT_BUF_SIZE)。 destoutbuffer_cursor += OUTPUT_BUF_SIZE。 *(destwritten) += OUTPUT_BUF_SIZE。 dest = destbuffer。 dest = OUTPUT_BUF_SIZE。 return TRUE。}METHODDEF(void) term_destination(j_press_ptr cinfo) { mjpg_dest_ptr dest = (mjpg_dest_ptr) cinfodest。 size_t datacount = OUTPUT_BUF_SIZE dest。 memcpy(destoutbuffer_cursor, destbuffer, datacount)。 destoutbuffer_cursor += datacount。 *(destwritten) += datacount。}void dest_buffer(j_press_ptr cinfo, unsigned char *buffer, int size,int *written) { mjpg_dest_ptr dest。 if (cinfodest == NULL) { cinfodest = (struct jpeg_destination_mgr *) (*cinfomemalloc_small)( (j_mon_ptr) cinfo, JPOOL_PERMANENT, sizeof(mjpg_destination_mgr))。 } dest = (mjpg_dest_ptr) cinfodest。 dest = init_destination。 dest = empty_output_buffer。 dest = term_destination。 destoutbuffer = buffer。 destoutbuffer_size = size。 destoutbuffer_cursor = buffer。 destwritten = written。}攝像頭采集的YUYV格式轉(zhuǎn)換為JPEG格式:buf為設(shè)備獲取的原始數(shù)據(jù)首地址,buffer為壓縮后的數(shù)據(jù)首地址。size為像素值。quality為壓縮質(zhì)量。int press_yuyv_to_jpeg(unsigned char *buf, unsigned char *buffer, int size,int quality) { struct jpeg_press_struct cinfo。 struct jpeg_error_mgr jerr。 JSAMPROW row_pointer[1]。 unsigned char *line_buffer, *yuyv。 int z。 static int written。 line_buffer = calloc(WIDTH * 3, 1)。 yuyv = buf。 //將YUYV格式的圖片數(shù)據(jù)賦給YUYV指針 printf(press start...\n)。 = jpeg_std_error(amp。jerr)。 jpeg_create_press(amp。cinfo)。 dest_buffer(amp。cinfo, buffer, size, amp。written)。 = WIDTH。 = HEIGHT。 = 3。 = JCS_RGB。 jpeg_set_defaults(amp。cinfo)。 jpeg_set_quality(amp。cinfo, quality, TRUE)。 jpeg_start_press(amp。cinfo, TRUE)。 z = 0。 while ( HEIGHT) { int x。 unsigned char *ptr = line_buffer。 for (x = 0。 x WIDTH。 x++) { int r, g, b。 int y, u, v。 if (!z) y = yuyv[0] 8。 else y = yuyv[2] 8。 u = yuyv[1] 128。 v = yuyv[3] 128。 r = (y + (359 * v)) 8。 g = (y (88 * u) (183 * v)) 8。 b = (y + (454 * u)) 8。 *(ptr++) = (r 255) ? 255 : ((r 0) ? 0 : r)。 *(ptr++) = (g 255) ? 255 : ((g 0) ? 0 : g)。 *(ptr++) = (b 255) ? 255 : ((b 0) ? 0 : b)。 if (z++) { z = 0。 yuyv += 4。 } } row_pointer[0] = line_buffer。 jpeg_write_scanlines(amp。cinfo, row_pointer, 1)。 } jpeg_finish_press(amp。cinfo)。 jpeg_destroy_press(amp。cinfo)。 free(line_buffer)。 return (written)。} lcd模塊 本論文是基于嵌入式Linux為基礎(chǔ)的包括lcd部分。Linux是一款運(yùn)行速度快、開源、高效而且免費(fèi)的操作系統(tǒng)。近年來(lái),基于開源組織的嵌入式Linux系統(tǒng)的操作系統(tǒng)不斷升級(jí)更新。Linux操作系統(tǒng)是不屬于微內(nèi)核型的操作系統(tǒng),但是Linux操作系統(tǒng)模塊化的結(jié)構(gòu)可以讓用戶對(duì)它進(jìn)行合理的剪裁,剪除我們不需要的功能以縮減系統(tǒng)的大小,甚至可以做到幾千幾百k大小。所以綜合考慮系統(tǒng)的性能、可兼容性以及系統(tǒng)的運(yùn)行速度。 在S5PC100的硬件平臺(tái)上安裝經(jīng)過剪裁后的Linux操作系統(tǒng)后,為了使LCD能正常顯示,還需要在系統(tǒng)中安裝相應(yīng)的LCD的驅(qū)動(dòng)程序。緩存(Framebuffer)技術(shù)是Linux內(nèi)核中的一種常用的驅(qū)動(dòng)程序設(shè)計(jì)的模式,幀緩存為L(zhǎng)CD設(shè)備提供了控制器的抽象描述。它就是人們常說的顯存,應(yīng)用程序使用系統(tǒng)實(shí)現(xiàn)好的接口可以直接訪問LCD底層設(shè)備,而不需要知道底層具體是如何實(shí)現(xiàn)的。本系統(tǒng)利用幀緩沖技術(shù)開發(fā)LCD驅(qū)動(dòng)程序。LCD設(shè)備使用特殊的設(shè)備節(jié)點(diǎn),是一個(gè)字符設(shè)備,其主設(shè)備號(hào)是29,次設(shè)備號(hào)為自己需要的幀緩沖個(gè)數(shù)。其實(shí),幀緩沖設(shè)備和Linux中其它的設(shè)備一樣。 函數(shù)接口首先將幀緩沖設(shè)備的屬性封裝成結(jié)構(gòu)體FB,如下:typedef struct fb{ int fbfd 。 //文件描述符 long int screensize 。 //屏幕大小 struct fb_var_screeninfo vinfo。 //屏幕信息 struct fb_fix_screeninfo finfo。 unshort *fbp 。 //mmap后的用戶操作指針} FB。將屏幕上的點(diǎn)位置信息封裝為結(jié)構(gòu)體POINT,如下:typedef struct point { unshort location_wide。 //此點(diǎn)代表的位置的寬 unshort location_hight。 //此點(diǎn)代表的位置的高}POINT。FB *screen_init(FB *fb)。 //屏幕初始化函數(shù)int show_picture(FB *fb,int wide,int hight,const unchar *Image)。 // 圖片顯示函數(shù)int show_temperature(FB *fb,const char *temperature,unshort color)。 //動(dòng)態(tài)溫度顯示函數(shù)int show_state(FB *fb,int flage,unshort color)。 //溫度狀態(tài)顯示函數(shù)int screen_close(FB *fb)。 //關(guān)閉屏幕函數(shù)實(shí)現(xiàn)函數(shù):static FB *fb_open(const char *PATH,FB *fb);打開設(shè)備函數(shù);static FB *get_fb_msg(FB *fb);得到屏幕信息;static FB *fb_mmap(FB *fb);將設(shè)備映射到用戶空間;static FB *clean_screen(FB *fb,POINT *start,POINT *end,unshort color);清除start到end之間的塊兒裝屏幕為color顏色;static int show_word(FB *fb,const unchar *word,POINT *point,unshort color);在給定的點(diǎn)location顯示color顏色的字符;static int drow_horizontal_line(FB *fb,POINT *start,POINT *end,unshort color);在給定的start到end之間畫一條橫線 static int drow_vertical_line(FB *fb,POINT *start,POINT *end,unshort color);在給定的start到end之間畫一條豎線static unchar *find_word(const char *str);在0~9(包含小數(shù)點(diǎn))之間找字庫(kù)中對(duì)應(yīng)的數(shù)組static FB *fb_munmap(FB *fb)解除映射 封裝給應(yīng)用層的函數(shù)FB *screen_init(FB *fb):將打開設(shè)備到映射以及顯示固定文字以及屏幕劃線分割這些 準(zhǔn)備工作做好;int show_picture(FB *fb,int wide,int hight,const unchar *Image):將確定寬高的圖片顯示在分割的視頻顯示區(qū)域;int show_temperature(FB *fb,const char *temperature,unshort color): 將保存溫度的字符串顯示在固定的溫度動(dòng)態(tài)顯示區(qū)域內(nèi)。每次顯示之前先調(diào)用函數(shù)static FB *clean_screen(FB *fb,POINT *start,POINT *end,unshort color)來(lái)清除屏幕;int show_state(FB *fb,int flage,unshort color):將溫度的狀態(tài)顯示在固定的狀態(tài)顯示區(qū)域內(nèi)。采用switch語(yǔ)句通過設(shè)置標(biāo)志位來(lái)區(qū)別三種狀態(tài),每次顯示之前先清屏;int screen_close(FB *fb):先顯示結(jié)束圖片,再解除映射。從而實(shí)現(xiàn)關(guān)閉。4 系統(tǒng)軟件部分 主程序及大致流程本項(xiàng)目實(shí)現(xiàn)對(duì)現(xiàn)場(chǎng)圖像實(shí)時(shí)監(jiān)控、利用蜂鳴器以及LED報(bào)警和發(fā)送短信給用戶。: 系統(tǒng)流程 溫度監(jiān)測(cè)線程 打開lm75字符設(shè)備 得到溫度值 傳送給LCD顯示 判斷溫度是否異常(報(bào)警) 關(guān)閉設(shè)備 溫度檢測(cè)流程 視頻監(jiān)測(cè)線程 打開視頻設(shè)備 得到圖像緩存 轉(zhuǎn)換格式 傳送LCD顯示 關(guān)閉設(shè)備 視頻檢測(cè)流程 報(bào)警流程傳送異常信息報(bào)警方式一:(提醒異常) 打開pwm字符設(shè)備 報(bào)警鳴響 關(guān)閉設(shè)備報(bào)警方式二:(查看溫度高低) 打開led字符設(shè)備 報(bào)警(過高:高兩位燈亮, 過低:第兩位燈亮) 關(guān)閉設(shè)備 系統(tǒng)顯示效果 短消息程序設(shè)計(jì)在本系統(tǒng)中,cortexA8通過串口0向GSM模塊發(fā)送相應(yīng)的AT命令來(lái)實(shí)現(xiàn)短消息的發(fā)送和接收。 AT指令介紹短消息發(fā)送命令:AT+CMGC該命令被用來(lái)發(fā)送短消息,它不僅可以發(fā)送文本形式的短消息的,也可以發(fā)送PDU格式的短消息,它還提供了相應(yīng)的測(cè)試指令以驗(yàn)證發(fā)送是否成功。短消息發(fā)送指令格式:AT+CMGS=?如果GSM模塊響應(yīng)則為OK。AT+CMGS=da[,toda]CR該命令是用來(lái)發(fā)送基于文本格式的短消息。如成功發(fā)送,則響應(yīng)為:+CMGS:mr[,scts];否則響應(yīng)為:+CMS ERROR:err。該命令格式中,da字段為字符串形式的短信接收者的地址,指系統(tǒng)要發(fā)送
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1