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

正文內(nèi)容

基于處理器sc22410的手持終端觸摸屏的設(shè)計(jì)-資料下載頁(yè)

2025-06-07 07:33本頁(yè)面
  

【正文】 能通過觸摸屏正常地操作GUI。 在src/kernel/:typedef struct { unsigned short pressure。 unsigned short x。 unsigned short y。 unsigned short pad。}TS_RET;再把QWSMouseHandlerPrivate 函數(shù)中打開的設(shè)備文件節(jié)點(diǎn)由/ dev/ t s 改為自己的設(shè)備文件/ dev/input/event0。同時(shí)必須正確設(shè)定QWS_MOUSE_PROTO環(huán)境變量,其格式是QWS_MOUSE_PROTO=protocol:device,protocol一般是MouseMan、IntelliMouse、Microsoft等等。device是鼠標(biāo)設(shè)備,因?yàn)轵?qū)動(dòng)程序中使用輸入事件接口,device設(shè)置為/dev/input/event0。完整的設(shè)置為:export QWS_MOUSE_PROTO=TPanel:/dev/input/event0 USB然后修改readMouseData ()函數(shù), 按自己的數(shù)據(jù)結(jié)構(gòu)讀取設(shè)備文件, 傳遞給QPoint 類對(duì)鼠標(biāo)進(jìn)行定位或轉(zhuǎn)換為鼠標(biāo)按鍵狀態(tài)。為觸摸屏編寫適合的類:class QTPanelHandlerPrivate :public QCalibratedMouseHandler{Q OBJ ECTpublic :QTPanelHandlerPrivate (MouseProtocol ,QString dev) ?!玅TPanelHandlerPrivate () 。private :………private slots :void readMouseData () 。} 。當(dāng)觸動(dòng)觸摸屏?xí)r,就會(huì)觸發(fā)槽readMouseData (),在這個(gè)函數(shù)里打開觸摸屏,讀取數(shù)據(jù)到TS_RET里,Qt/Embedded 就可以響應(yīng)這些觸摸事件。由于觸摸屏在實(shí)現(xiàn)原理上存在著A/ D 量化誤差的問題,因此觸摸屏接口實(shí)現(xiàn)類PanelHandlerPrivate 需要從特殊的QcalibratedMouseHandler 繼承,并獲得校正功能,故需要編寫一個(gè)簡(jiǎn)單的測(cè)試程序,根據(jù)像素坐標(biāo)和物理坐標(biāo)計(jì)算參數(shù),并保存到/etc/pointercal 中以便類QcalibratedMouseHandle 來(lái)讀取校正參數(shù)。 驅(qū)動(dòng)程序調(diào)試過程中出現(xiàn)的問題。其中觸摸屏驅(qū)動(dòng)的調(diào)試花費(fèi)了近一個(gè)月的時(shí)間。這是因?yàn)轵?qū)動(dòng)程序是Linux內(nèi)核的一部分,要明白Linux的工作機(jī)理以及內(nèi)核中的定時(shí)器、等待隊(duì)列、自旋鎖等函數(shù),同時(shí)還要明白Qt/Embedded中關(guān)于鼠標(biāo)類輸入設(shè)備的底層驅(qū)動(dòng)的工作原理,來(lái)修改Qt/Embedded源碼中的輸入事件接口來(lái)和觸摸屏驅(qū)動(dòng)程序建立通訊。 ,它是依據(jù)觸摸屏專用控制芯片ADS7843作為觸摸屏控制器來(lái)編寫的。 insmod到Linux內(nèi)核后,觸摸屏沒有反應(yīng),總是出現(xiàn)下面的提示:ts_open:Failed[/mnt/yaffs/Qtopia]Could not read calibration: /etc/pointercal Cannot open touchscreen (No such file or directory) Warning: Unable to open /usr/share/zoneinfo/ Warning: Timezone data must be installed at /usr/share/zoneinfo/ Warning: TimeZone::data Can39。t create a valid data object for 39。America/New_York39。 Warning: language message en_US Warning: and its not null Warning: loading /usr/qpe/i18n/en_US/ … 通過查看Linux內(nèi)核配置,發(fā)現(xiàn)燒寫到S3C2410處理器的Linux內(nèi)核中沒有配置觸摸屏,之后重新燒寫了新的Linux內(nèi)核和根文件系統(tǒng),可加載后仍然沒有反應(yīng),分析驅(qū)動(dòng)程序源代碼和看到北京博創(chuàng)的更新說明后,按照S3C2410處理器自帶的觸摸屏控制器編寫的。而實(shí)驗(yàn)平臺(tái)上的接線是連接到外部的ADS7843芯片上的,需要更改LCD顯示屏下面的跳線,改為使用S3C2410處理器內(nèi)部的觸摸屏控制器。,終于出現(xiàn)了期盼已久的觸摸屏校準(zhǔn)界面:TSLIB calibration utility Touch crosshair to calibration但是校準(zhǔn)后還是有些問題,正常情況下,校準(zhǔn)后會(huì)在/etc目錄下自動(dòng)生成一個(gè)pointercal文件來(lái)保存校準(zhǔn)的結(jié)果,以便于以后運(yùn)行Qtopia時(shí)使用。而實(shí)際在校準(zhǔn)后并沒有生成/etc/pointercal文件。當(dāng)試圖在/etc下創(chuàng)建一個(gè)pointercal文件時(shí),卻發(fā)現(xiàn)操作被禁止。這是因?yàn)?etc不屬于yaffs文件系統(tǒng),/etc目錄都是只讀屬性,無(wú)法進(jìn)行寫操作。而且校準(zhǔn)的結(jié)果不太理想,光標(biāo)只能在顯示屏的一小塊區(qū)域活動(dòng),還需進(jìn)一步的調(diào)試。 結(jié) 論經(jīng)過三個(gè)多月的工作,完成了觸摸屏圖形界面的設(shè)計(jì),最終在開發(fā)板上實(shí)現(xiàn)了手持終端圖形界面的觸摸屏操作功能。在整個(gè)畢業(yè)設(shè)計(jì)過程中,交叉編譯環(huán)境的建立是第一步要做的,也是很復(fù)雜的。它要求熟悉Linux操作系統(tǒng)的工作原理,掌握基本的Linux指令,理解編譯GCC交叉編譯器的生成過程,而且了解計(jì)算機(jī)網(wǎng)絡(luò)方面的知識(shí)。宿主機(jī)和目標(biāo)板的通訊可以有多種方式,可以通過NFS或TFTP以太網(wǎng)方式、JTAG并口方式以及mini和超級(jí)終端串口方式向開發(fā)板傳送數(shù)據(jù)。可以通過超級(jí)終端mini通過串口來(lái)控制開發(fā)板上的操作系統(tǒng)。在Qt圖形設(shè)計(jì)的過程中,使用t Designer圖形工具來(lái)設(shè)計(jì)簡(jiǎn)單的Qt應(yīng)用程序。而Qt的強(qiáng)大的信號(hào)與槽機(jī)制通過手工編寫代碼更能體現(xiàn)出來(lái),在五一期間,我參照著“Qt參考文檔”編寫了一個(gè)簡(jiǎn)單的加農(nóng)炮射擊游戲,其中所有的部件都可以調(diào)用Qt的類來(lái)實(shí)現(xiàn),而且事件之間的聯(lián)系可以將一個(gè)事件設(shè)為信號(hào)signal(),和它相關(guān)的響應(yīng)事件設(shè)為slot(),通過connect函數(shù)來(lái)實(shí)現(xiàn)信號(hào)與槽的機(jī)制。感覺Qt的部件非常豐富,而且程序結(jié)構(gòu)非常清晰,很容易學(xué)會(huì),這也許是Qt在嵌入式開發(fā)中越來(lái)越受歡迎的一個(gè)原因。最后,經(jīng)過調(diào)試觸摸屏可以工作了,每點(diǎn)擊一下屏幕,就會(huì)在mini里顯示出來(lái)觸點(diǎn)的坐標(biāo),而且反應(yīng)靈敏。只是由于校準(zhǔn)的不精確,光標(biāo)只在屏幕的一定區(qū)域內(nèi)活動(dòng),這可能是觸摸屏的電阻膜有些問題,或者是Qt/Embedded中相關(guān)接口的數(shù)據(jù)結(jié)構(gòu)需要修改??傊?,觸摸屏的功能還需要進(jìn)一步的改進(jìn)。致 謝 感謝我的指導(dǎo)老師老師。老師多次詢問課題進(jìn)度,幫助我開拓研究思路、熱忱鼓勵(lì);感謝老師,在我編譯Qt/Embedded過程中屢次出現(xiàn)問題時(shí)悉心指導(dǎo),幫助解決問題,在我調(diào)試觸摸屏驅(qū)動(dòng)遇到困難時(shí)鼓勵(lì)我迎難而上,不言放棄。 感謝學(xué)院能夠提供良好的實(shí)驗(yàn)環(huán)境和先進(jìn)的ARM實(shí)驗(yàn)平臺(tái),使我能夠初涉嵌入式系統(tǒng)開發(fā)。 感謝班里的同學(xué)們,盡管大家來(lái)自不同的地方,但四年來(lái)大家結(jié)成兄弟般的友誼,并在學(xué)習(xí)和生活上給我以關(guān)心和幫助。 最后感謝我的父母,養(yǎng)育之恩,無(wú)以回報(bào),你們身體健康是我最大的心愿。參 考 文 獻(xiàn)[1] 孫天澤,袁文菊,-基于ARM9 處理器[M].北京:電子工業(yè)出版社,2005[2] [M].北京:清華大學(xué)出版社,2003[3] 黃志洪,鐘耿揚(yáng),[M].北京:冶金工業(yè)出版社,2003[4] (美)約翰遜,武延軍. Linux應(yīng)用程序開發(fā)[M].北京:電子工業(yè)出版社,[5] 于明,范書瑞,[M].北京:電子工業(yè)出版社,2006[6] [M].北京:北京航空航天大學(xué)出版社,[7] [M].北京:中國(guó)鐵道出版社,2003[8] [M].北京:清華大學(xué)出版社,2003[9] 魏平,夏良正,[J].東南大學(xué)學(xué)報(bào)(自然科學(xué)版),2004(11):126~130[10] 顧詠楓,[J].小型微型計(jì)算機(jī)系統(tǒng),2003(9):1697~1700[11] Linux的移植過程及分析[J].電子設(shè)計(jì)應(yīng)用,2003(7):55~59[12] 周立功等. ARM嵌入式Linux系統(tǒng)構(gòu)建與驅(qū)動(dòng)開發(fā)范例[M].北京:北京航空航天大學(xué)出版社,2006[13] 毛德操,(上下冊(cè))[M].杭州:浙江大學(xué)出版社,2001[14] Steve Furber. ARM SystemonChip Architecture (2nd)[M]. BUAA Press,2001[15] . Coyle, . Maguire, . McGinnity. Selfrepair of embedded systems[J]. Engineering Applications of Artificial Intelligence 17,2004:1~9[16] , . Enhanced Image Detection on an ARM based Embedded System[J]. Design Automation for Embedded Systems, 6,477487, 2002 附錄 A 觸摸屏驅(qū)動(dòng)部分源程序驅(qū)動(dòng)程序加載、卸載函數(shù):module_init(s3c2410_ts_init)。module_exit(s3c2410_ts_exit)。觸摸屏初始化函數(shù)s3c2410_ts_init():static int __init s3c2410_ts_init(void){ int ret。 tsEvent = tsEvent_dummy。 /* set gpio to XP, YM, YP and YM */ set_gpio_ctrl(GPIO_YPON)。 set_gpio_ctrl(GPIO_YMON)。 set_gpio_ctrl(GPIO_XPON)。 set_gpio_ctrl(GPIO_XMON)。endif /* Enable touch interrupt */ ret = request_irq(IRQ_ADC_DONE, s3c2410_isr_adc, SA_INTERRUPT, DEVICE_NAME, s3c2410_isr_adc)。 if (ret) goto adc_failed。 ret = request_irq(IRQ_TC, s3c2410_isr_tc, SA_INTERRUPT, DEVICE_NAME, s3c2410_isr_tc)。 if (ret) goto tc_failed。 set_adcdly()。 /* Wait for touch screen interrupts */ wait_down_int()。 /*move from ts_open*/ = PEN_UP。ifdef HOOK_FOR_DRAG init_timer(amp。ts_timer)。 = ts_timer_handler。endif tsEvent = tsEvent_raw。 init_waitqueue_head(amp。())。 /*move from ts_open*/ = DEVICE_NAME。 [0] = BIT(EV_ABS)。 [LONG(BTN_TOUCH)] |= BIT(BTN_TOUCH)。 [0] = BIT(ABS_X) | BIT(ABS_Y) | BIT(ABS_PRESSURE)。 input_register_device(amp。())。 printk(DEVICE_NAME initialized\n)。 return 0。 tc_failed: free_irq(IRQ_ADC_DONE, s3c2410_isr_adc)。 adc_failed: return ret。}觸摸屏退出函數(shù)s3c2410_ts_exit():static void __exit s3c2410_ts_exit(void){ input_unregister_device(amp。())。 free_irq(IRQ_ADC_DONE, s3c2410_isr_adc)。 free_irq(IRQ_TC, s3c2410_isr_tc)。}觸摸屏事件中斷函數(shù)s3c2410_isr_tc( ):static void s3c2410_isr_tc(int irq, void *dev_id, struct pt_regs *reg){ spin_lock_irq(amp。())。 if ( == PEN_UP) { start_ts_adc()。 } else { = PEN_UP。 DPRINTK(PEN UP: x: %08d, y: %08d\n, x, y)。 wait_down_int()。 tsEvent()。 } spin_unlock_irq(amp。())。}觸摸屏事件中斷處理函數(shù)ts_timer_handler():static void ts_timer_handler(unsigned long data){ spin_lock_irq(amp。())。 if ( == PEN_DOWN) { start_ts_adc()。 } spin_unlock_irq(amp。())。}43
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1