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

正文內(nèi)容

基于嵌入式linux與s3c2410平臺視頻采集-資料下載頁

2025-11-22 23:24本頁面

【導讀】本設計是一個基于嵌入式Linux的數(shù)字視頻監(jiān)控系統(tǒng)。視頻監(jiān)控系統(tǒng)是安。全防范系統(tǒng)的組成部分,它是一種防范能力較強的綜合系統(tǒng)。重要的現(xiàn)實意義。簡要的介紹了嵌入式系統(tǒng)的概念、特點及軟件、硬件平臺,了較為詳細的介紹。著重介紹了ARM9芯片上的觸摸屏校正算法、通過對所。開發(fā)環(huán)境的建立........

  

【正文】 0。 result|=request_irq(5,asp_interrupt,SA_SHIRQ,DEV_IRQ_NAME, DEV_IRQ_ID)。 result|=request_irq(33,asp_interrupt,SA_SHIRQ,DEV_IRQ_NAME,DEV_IRQ_ID)。 result|=request_irq(46,asp_interrupt,SA_SHIRQ,DEV_IRQ_NAME, DEV_IRQ_ID)。 if (result) { printk(1init_module error from irq %d\n, result)。 devfs_unregister_chrdev(gMajor, MOD_NAME)。 devfs_unregister(devfs_handle)。 return 1。 } init_waitqueue_head(amp。ts_wait)。 // 初始化觸摸屏設備寄存器及清空數(shù)據(jù)緩沖區(qū) initasp()。 return 0。 設備釋放 在使用完觸摸屏設備之后還要釋放其占有的系統(tǒng)資源以及釋放數(shù)據(jù)緩沖區(qū)的內(nèi)容,避免殘留的數(shù)據(jù)影響設備下一次的正常使用。程序需要通過使用devfs_register()函數(shù)和 request_irq()釋放注冊的設備和硬件中斷。具體實現(xiàn)過程比較簡單,不在此詳細敘述。 應用程序使用觸摸屏設備的基本流程一般包括打開觸摸屏設備、校正觸摸屏、讀取觸摸屏數(shù)據(jù)、轉(zhuǎn)換觸摸屏數(shù)據(jù)以及關(guān)閉觸摸屏設備五個部分。下面將北京理工大學本科生畢業(yè)設計(論文) 21 詳細介紹這幾個部分具體內(nèi)容: 打開觸摸屏設備 在每次使用觸摸屏設備時,首先都要打開該設備。打開設備的代碼如下面的程序片斷所示: int TP_FD。 TP_FD = open(/dev/touchpanel, O_RDONLY)。 程序中整型變量 TP_FD 為觸摸屏設備句柄,之后對觸摸屏設備的讀操作以及觸摸屏設備的關(guān)閉都需該句柄作為參數(shù)來標志需要操作的觸摸屏設備。 觸摸屏數(shù)據(jù)的讀取 打開觸摸屏設備之后,用戶就可以通過 read()函數(shù)讀取觸摸屏的數(shù)據(jù)。讀出的數(shù)據(jù)以 ts_event_t 的結(jié)構(gòu)存放。下面的程序片斷 從觸摸屏中讀取一個數(shù)據(jù)然后存放在 ts_event_t 結(jié)構(gòu)變量 ts中: struct ts_event_t ts。 read(TP_FD, amp。ts, sizeof(ts_event_t))。 讀出的數(shù)據(jù)包括觸摸屏數(shù)據(jù)包 括 X、 Y 方向的電壓值和觸摸屏的壓力( 0 = 彈起觸摸屏, 0xffff = 按下觸摸屏)。這些數(shù)據(jù)對于應用程序來說基本上沒有意義,還需要通過一定的轉(zhuǎn)換方式,將其轉(zhuǎn)換成為顯示屏坐標,才能為應用程序所使用。 觸摸屏的校正和數(shù)據(jù)轉(zhuǎn)換 由于觸摸屏返回的數(shù)據(jù)是電壓值,如果用戶想將獲取的觸摸屏數(shù)據(jù)轉(zhuǎn)換成LCD顯示屏的坐標還需要進行校正和轉(zhuǎn)換兩個步驟。所謂校正是指根據(jù)觸摸屏和 LCD 顯示屏對應點的電壓值和坐標的比例關(guān)系計算出一組轉(zhuǎn)換因子,該因子反映了觸摸屏上的電壓值和 LCD 顯示屏上坐標的對應關(guān)系。而轉(zhuǎn)換是指將獲取的觸摸屏上的電壓值通過轉(zhuǎn)化因子轉(zhuǎn)化成為屏幕上的坐標。 觸摸屏的校正需要用到一個數(shù)據(jù)結(jié)構(gòu)來保存各項轉(zhuǎn)換因子,以后系統(tǒng)會根據(jù)該結(jié)構(gòu)中的各項校正因子自動地將觸摸屏返回的值轉(zhuǎn)換成為屏幕坐標。如圖北京理工大學本科生畢業(yè)設計(論文) 22 33 所示,為觸摸屏校正函數(shù)的流程圖。 該數(shù)據(jù)結(jié)構(gòu)的定義如下: typedef struct { U32 xFactor。 //X 方向比例因子 U32 yFactor。 //Y 方向比例因子 U32 xOffset。 //X 方向偏移量 U32 yOffset。 //Y 方向偏移量 U8 scale。 //縮放因子 RECT pan。 //校正區(qū)域矩形 }PEN_CONFIG, * P_PEN_CONFIG。 圖 33 觸摸屏校正函數(shù)流程圖 校正所有點 ?是接收用戶的觸摸屏數(shù)據(jù)在 LCD 上顯示一個校正點將觸摸屏數(shù)據(jù)存入校正數(shù)組設置校正點位置Touchpad否檢查校正數(shù)組中各點坐標是否符合要求根據(jù)校正數(shù)組計算比例因子開始完成北京理工大學本科生畢業(yè)設計(論文) 23 校正時,系統(tǒng)會在屏幕上顯示五個校正點。本項目中,五個校正點的坐標分別設置為 (20, 20), (20, 219), (299, 219), (299, 20), (119, 159)。其中前四個點用來參與校正處理,最后一個點用來檢測校正結(jié)果的準確性。它們在 LCD 屏上的位置及顯示順序如圖 34 所示: 圖 34 觸摸屏上的校正坐標 int CheckCalibratePoint(void) { unsigned short vl, vr, vt, vb。 unsigned short diff, avg。 vl = abs(TouchPanel_Point[0].y TouchPanel_Point[1].y)。 vr = abs(TouchPanel_Point[2].y TouchPanel_Point[3].y)。 vt = abs(TouchPanel_Point[0].x TouchPanel_Point[3].x)。 vb = abs(TouchPanel_Point[1].x TouchPanel_Point[2].x)。 diff = abs(vl vr)。 avg = ((long)vl + (long)vr) / 2。 if (diff avg / 20) { return 1。 } diff = abs(vt vb)。 avg = ((long)vt + (long)vb) / 2。 if (diff avg / 20) { return 1。 } return 0。 } 12 345LCD北京理工大學本科生畢業(yè)設計(論文) 24 用戶根據(jù)系統(tǒng)提示順序,依次用觸摸筆點擊觸摸屏上五個校正點的位置。系統(tǒng)會將觸摸屏返回的數(shù)據(jù)記錄到校正數(shù)組中,為以后計算轉(zhuǎn)換因子使用。 一般為了提高校正的準確性,系統(tǒng)在計算轉(zhuǎn)換因子之前,會先對校正數(shù)組中的數(shù)據(jù)進行一次檢驗。如果發(fā)現(xiàn)數(shù)組中的數(shù)據(jù)未能達到指定要求,則說明用戶進行校正時未能準確的點擊校正點的位置,系統(tǒng)將提示用戶重新校正。 程序中先計算 vl, vr, vt, vb 四條線段的長度,然后計算水平、垂直兩組線段長度 的平均值和差的絕對值。最后將每組中的平均值的 5%和差的絕對值進行比較,只要有一組線段差的絕對值超過了線段長度平均值的 5%,就說明校正數(shù)據(jù)的誤差較大,則需要重新校正。 具體的檢驗方法如程序片斷及圖 35 所示: 圖 35 觸摸屏校正示意圖 系統(tǒng)在檢驗校正數(shù)組中的數(shù)據(jù)符合要求之后,就開始計算各項轉(zhuǎn)換因子。首先系統(tǒng)根據(jù) LCD屏幕上系統(tǒng)定義的前四個點的坐標計算出一個 LCD屏幕坐標矩形 st,再根據(jù)校正數(shù)組中相應前四項數(shù)據(jù)中 X、 Y 方向的電壓值計算出一個觸摸屏電壓矩形 rt。然后系統(tǒng)用得到的兩個矩形 st 和 rt 作為參數(shù)調(diào)用觸摸12 34vrvlvtvbTouchpad北京理工大學本科生畢業(yè)設計(論文) 25 屏配置函數(shù) _TouchpadConfigure()計算轉(zhuǎn)換因子。下面具體介紹一下,計算轉(zhuǎn)換因子的具體方法。 由于觸摸屏相鄰兩點電壓值的變化基本上是線性的, LCD 屏幕坐標也是線性變化的,所以可以得到各方向的比例因子的計算公式如下: X 方向比例因子 =LCD 屏幕坐標矩形寬度 *(2^縮放因子 )/觸摸屏電壓矩形的寬度 Y 方向比例因子 =LCD 屏幕坐標矩形高度 *(2^縮放因子 )/觸摸屏電壓矩形的高度 下面用圖示的具體說明一下,觸摸屏方向比例因子的計算過程。 在圖 36 中, LCD 屏幕坐標矩形寬度和高度分別為 Δ x 和Δ y,而觸摸屏電壓矩形的寬度和高度分別為Δ Vx 和Δ Vy: 圖 36 觸摸屏方向比例因子的計算 則由公式可計算得到 X 方向比例因子為 xFactor = (Δ x * 2 ^ 10) / ΔVx,而 Y 方向比例因子為 yFactor = (Δ y * 2 ^ 10) / Δ Vy。 在計算得到各方向的比例因子之后,還需要確定各方向上相對原點一個偏移量。計算公式如下: 觸摸屏電壓矩形VxVy0Δ VxΔVyLCD 屏幕坐標矩形xy0Δ xΔy北京理工大學本科生畢業(yè)設計(論文) 26 X 方向偏移量 =觸摸屏電壓矩形左邊界值 (LCD 屏幕坐標矩形左邊界值 *(2^縮放因子 )/X方向比例因子 ) Y 方向偏移量 =觸摸屏電壓矩形頂邊界 值 (LCD 屏幕坐標矩形頂邊界值 * (2^縮放因子 )/Y方向比例因子 ) 下面用圖示的具體說明觸摸屏方向偏移量的計算過程。 為了方便理解,在圖 37 中,設 LCD 屏幕坐標矩形左邊界值和頂邊界值為X0和 Y0,而觸摸屏電壓矩形的左邊界值和頂邊界值分別為 Vx 和 Vy。 圖 37 觸摸屏偏移量計算 代入前面計算出的比例因子: Vx0 =X0*(2^10)/((Δx*2^10)/ΔVx)= X0/Δx*ΔVx Vy0 =Y0*(2^10)/((Δy*2^10)/ΔVy)= Y0/Δy*ΔVy L C D 屏幕坐標矩形L C D 屏幕坐標矩形轉(zhuǎn)換后電壓矩形觸摸屏電壓矩形xOffset( Vx 0 , Vy 0 )( V 0 x , V 0 y ) yOffset( x 0 , y 0 )( 0 , 0 )( Vx , Vy )北京理工大學本科生畢業(yè)設計(論文) 27 可以看出 Vx0 和 Vy0 分別為 X0 和 Y0通過比例因子轉(zhuǎn)換得到的電壓值。而X方向偏移量則為 xOffset = (Vx Vx0), Y方向偏移量為 yOffset = (Vy Vy0)。 系統(tǒng)根據(jù)上述計算公式計算出各項轉(zhuǎn)換因子之后,將因子存放到一個數(shù)據(jù)結(jié)構(gòu) PEN_CONFIG 中。系統(tǒng)再根據(jù)這個結(jié)構(gòu)中的數(shù)據(jù),將觸摸屏的電壓值轉(zhuǎn)換成為 LCD 屏幕坐標的基本轉(zhuǎn)換公式如下: X 坐標 =|X方向電壓值 X 方向偏移量 |*X 方向比例因子 /(2^縮放因子 ) Y 坐標 = |Y 方向電壓值 Y 方向偏移量 |*Y方向比例因子 /(2^縮放因子 ) 在圖 38 中, Vx1和 Vx2為用戶點擊觸摸屏時返回的電壓值。 圖 38 觸摸屏坐標轉(zhuǎn)換示例 則對應的 LCD 顯示屏坐標為: X1 = | Vx1 – xOffset | * xFactor / (2 ^ 10) Y1 = | Vy1 – yOffset | * yFactor / (2 ^ 10) 為了便于理解,加入中間變量 Vx1’ 和 Vy1’ : Vx1’=|Vx1 – xOffset|=|Vx1– (VxVx0)|=|(Vx1– Vx)+Vx0)| Vy1’= |Vy1– xOffset| =|Vy1(Vy Vy0)|=|(Vy1– Vy)+Vy0)| xOffset( Vx 0 , Vy 0 )( V 0 x , V 0 y ) yOffset( x 0 , y 0 )( 0 , 0 )( Vx , Vy )( Vx 1 , Vy 1 )( Vx 1 ’ , Vy 1 ’ )( x 1 , y 1 )L C D 屏幕邏輯電壓屏幕北京理工大學本科生畢業(yè)設計(論文) 28 可以看出用戶點擊觸摸屏時返回的電壓值是先被轉(zhuǎn)換成為一個邏輯電壓屏幕(邏輯電壓屏幕是指將 LCD 顯示屏坐標使用比例因子 xFactro 和 yFactor轉(zhuǎn)換得到的一個由電壓值組成的邏輯屏幕)中的位置 Vx1’和 Vx2’然后再使用比例因子轉(zhuǎn)換成為真正的屏幕坐標的。 應用程序需要將獲取的觸摸屏電壓值轉(zhuǎn)換成為 LCD 屏幕坐標是通過調(diào)用_ConvertX()函數(shù)和 _ConvertY()函數(shù)來完成。這兩個函數(shù)分別將觸摸屏 X 方向上的電壓值和 Y方向上的電壓值轉(zhuǎn)換成為 LCD顯示 屏上的坐標。而 _ConvertX()和 _ConvertY()函數(shù)又都是調(diào)用了 _TouchpadConvertLCD()函數(shù),完成真正的轉(zhuǎn)換工作的。 _TouchpadConvertLCD()函數(shù)的實現(xiàn)如下面的程序片斷所示: S16 _TouchpadConvertLCD(U16 value, U32 factor, U32 offset) { S32 temp。 temp = va
點擊復制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1