下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
基于pocarlo的多軸驅(qū)動(dòng)控制程序的設(shè)計(jì)與實(shí)現(xiàn)
poccapc是共享電腦的共享計(jì)算機(jī)軟件windowsce3。它除具有筆記本電腦的功能外,還在通信、實(shí)時(shí)性及自身控制方面具有很強(qiáng)的功能,被認(rèn)為是移動(dòng)計(jì)算和移動(dòng)通信方面的重要工具,是具有良好發(fā)展前景的計(jì)算終端、網(wǎng)絡(luò)終端和通信終端。本文從PocketPC的電源管理特性和操作系統(tǒng)管理應(yīng)用程序的特性出發(fā),介紹在PocketPC上開(kāi)發(fā)控制程序的原理、意義和3種主要實(shí)現(xiàn)方法。1pocketpc技術(shù)特點(diǎn)PocketPC上控制程序的設(shè)計(jì)原理基于PocketPC所采用的獨(dú)特的電源管理技術(shù)和操作系統(tǒng)管理應(yīng)用程序的新技術(shù)。PocketPC的獨(dú)特電源管理特性在于:除非不安裝電池或處于死機(jī)狀態(tài),否則PocketPC的電源始終不關(guān)閉。當(dāng)用戶按下關(guān)閉電源按鈕或不使用時(shí)(即使有應(yīng)用程序已啟動(dòng)),機(jī)器也只是處于休眠狀態(tài)而不是真正切斷電源。在休眠狀態(tài)下,它僅提供能保持其時(shí)鐘、應(yīng)用程序及RAM中存儲(chǔ)數(shù)據(jù)所需的最少能量。PocketPC在管理應(yīng)用程序方面采用的獨(dú)特管理策略為:操作系統(tǒng)使用活動(dòng)記時(shí)器判斷用戶是否頻繁地使用計(jì)算機(jī)。記時(shí)器在計(jì)算機(jī)處于打開(kāi)狀態(tài)時(shí)倒記數(shù),當(dāng)記時(shí)器到達(dá)0,計(jì)算機(jī)就切換到休眠狀態(tài)。用戶不但可以在控制面板中以秒為單位設(shè)置活動(dòng)記時(shí)器的最大值,而且應(yīng)用程序也可以通過(guò)調(diào)用API設(shè)置活動(dòng)記時(shí)器的最大值。更重要的是WindowsCE提供了所謂“通知API”(NotificationAPI)讓用戶去控制系統(tǒng)及應(yīng)用程序。由于PocketPC采用了這樣的電源管理策略、應(yīng)用程序管理策略以及控制策略,所以用戶能方便地設(shè)計(jì)開(kāi)發(fā)控制程序(通過(guò)調(diào)用“通知API”)。例如,按時(shí)間或預(yù)訂的事件自動(dòng)開(kāi)啟/關(guān)閉計(jì)算機(jī),按時(shí)間或預(yù)訂的事件自動(dòng)開(kāi)啟/關(guān)閉一個(gè)或多個(gè)應(yīng)用程序乃至控制一個(gè)或多個(gè)應(yīng)用程序的運(yùn)行流程。2按系統(tǒng)事件通知運(yùn)行通知是操作系統(tǒng)表示發(fā)生了某個(gè)事件的信號(hào)。WindowsCEAPI的特點(diǎn)是它提供了一個(gè)強(qiáng)有力的通知接口(NotificationAPI)。該接口允許應(yīng)用程序自己安排自己在某個(gè)確定的時(shí)間運(yùn)行或者在某個(gè)系統(tǒng)事件發(fā)生時(shí)運(yùn)行(這也是其作為嵌入式操作系統(tǒng)的特征之一)。當(dāng)自己開(kāi)發(fā)的程序注冊(cè)到特定的事件通知后,操作系統(tǒng)將在該事件發(fā)生時(shí)生成一個(gè)通知,系統(tǒng)使用通知與用戶和其它程序通信。WindowsCE提供了3種類型的通知接口:用戶通知、定時(shí)器事件通知和系統(tǒng)事件通知。定時(shí)器事件表明已經(jīng)到達(dá)指定時(shí)間;系統(tǒng)事件表明發(fā)生了系統(tǒng)級(jí)事件,如添加或刪除了某設(shè)備、系統(tǒng)時(shí)間更改、與其它設(shè)備發(fā)生同步、檢測(cè)到RS232口連接等。用戶通知和定時(shí)器事件通知都使用定時(shí)器事件,但用戶通知發(fā)生時(shí)必須被用戶確認(rèn),定時(shí)器事件通知?jiǎng)t不需用戶確認(rèn)。通常在沒(méi)有用戶干涉的情況下,在給定的時(shí)間運(yùn)行某個(gè)應(yīng)用程序時(shí),就可以簡(jiǎn)單地使用定時(shí)器事件通知達(dá)到目的。而如果要在給定的時(shí)間根據(jù)用戶的反應(yīng)來(lái)確定下一步動(dòng)作(從而控制復(fù)雜流程),則需要使用用戶通知,它能在指定的時(shí)刻由系統(tǒng)以4種方式(閃動(dòng)LED、振動(dòng)設(shè)備、播放聲音和顯示提示框)提示用戶,并只有在用戶響應(yīng)了該通知時(shí)應(yīng)用程序才運(yùn)行(也就是說(shuō)在用戶采取響應(yīng)動(dòng)作之前,該應(yīng)用程序不會(huì)運(yùn)行)。另一方面,當(dāng)需要監(jiān)控一些系統(tǒng)事件的發(fā)生時(shí),就要使用系統(tǒng)事件通知。由于使用定時(shí)器事件通知和系統(tǒng)事件通知都必定會(huì)啟動(dòng)應(yīng)用程序,因此又把二者合稱為應(yīng)用程序通知。WindowsCE共提供了6個(gè)通知接口:Ce-SetUserNotification、CeGetUserNotificationPreferences、CeCleartUserNotification、CeHandleAppNotifications、CeRunAppAtTime和CeRunAppAtEvent。前4個(gè)為用戶通知所使用,后2個(gè)分別為定時(shí)器事件通知和系統(tǒng)事件通知所使用。下面分別介紹3類通知和6個(gè)API的使用方法。2.1顯示提示框的通知首先調(diào)用CeSetUserNotification函數(shù)注冊(cè)用戶通知,其原型是:其參數(shù)含義為:句柄hNotification設(shè)置為0表示創(chuàng)建一個(gè)新的通知,如要更改已注冊(cè)的通知?jiǎng)t設(shè)置hNotification為希望更改的用戶通知的句柄(這個(gè)句柄是由注冊(cè)用戶通知的程序在調(diào)用CeSetUserNotification后的返回值);pwszAppName是該應(yīng)用程序的名稱,當(dāng)通知發(fā)生時(shí),該應(yīng)用程序的小圖標(biāo)將在任務(wù)欄上顯示;lpTime是一個(gè)指向SYSTEMTIME結(jié)構(gòu)指針,該結(jié)構(gòu)指定了通知發(fā)生的時(shí)間;lpUserNotificaion也是一個(gè)結(jié)構(gòu)指針,它指向PCE_USER_NOTIFICATION結(jié)構(gòu),WindowsCE用該結(jié)構(gòu)描述用戶如何被通知,此結(jié)構(gòu)的定義為:其中變量ActionFlags是一組定義了在到達(dá)指定的時(shí)間時(shí)以何種形式提示用戶的標(biāo)志,即:PUN_LED(閃動(dòng)屏幕),PUN_VIBRATE(振動(dòng)設(shè)備),PUN_DIALOG(顯示對(duì)話框),PUN_SOUND(播放聲音文件)和PUN_REPEAT(重復(fù)聲音文件10~15s),它可以是上述標(biāo)志的任意組合。其次,程序可調(diào)用CeGetUserNotificationPreferences(HWNDhWndParent,PCE_USER_NOTIFICATIONlpNotification)配置用戶通知,以便讓用戶有機(jī)會(huì)修改提示方式。其中hWndParent是提示框父窗口的窗口句柄。從程序調(diào)用CeSetUserNotification開(kāi)始到用戶得到通知的這一時(shí)間段中,通知一直處于活動(dòng)狀態(tài)。如要在它超時(shí)之前修改此通知,程序可通過(guò)再次調(diào)用CeSetUserNotification實(shí)現(xiàn)。而要在它超時(shí)之前清除它,需要調(diào)用CeCleartUserNotification(HANDLEhNotification)。用戶通知到達(dá)后要求確認(rèn)。對(duì)于顯示提示框的通知,確認(rèn)方式是點(diǎn)擊提示框的確定按鈕或按下設(shè)備外殼上的通知按鈕(此時(shí)用戶通知僅起到提示的作用,不啟動(dòng)應(yīng)用程序)。對(duì)于不顯示提示框的通知,系統(tǒng)將在任務(wù)欄上顯示注冊(cè)該通知程序的圖標(biāo)。當(dāng)用戶點(diǎn)擊此圖標(biāo)時(shí)系統(tǒng)將啟動(dòng)相應(yīng)的應(yīng)用程序的一個(gè)實(shí)例(系統(tǒng)還傳遞一個(gè)命令行參數(shù)lpCmdLine以表明應(yīng)用程序?yàn)槭裁磿?huì)運(yùn)行,該參數(shù)是串APP_RUN_TO_HANDLE_NOTIFICATION加空格再加通知的句柄)。對(duì)于不顯示提示框的用戶通知,在應(yīng)用程序中要調(diào)用CeHandleAppNotifications函數(shù)來(lái)確認(rèn)通知。該函數(shù)將所有用于應(yīng)用程序的活動(dòng)通知都標(biāo)記為已處理,并刪除任務(wù)欄上的圖標(biāo)。在實(shí)際編碼時(shí)還要考慮是否有該應(yīng)用程序的另一個(gè)實(shí)例在運(yùn)行。如有,則應(yīng)向它發(fā)送一個(gè)自定義消息,由該實(shí)例處理此通知并終止自身以節(jié)省資源。其代碼如下:從上面分析可看出,使用用戶通知可以設(shè)計(jì)出功能強(qiáng)大、流程復(fù)雜的時(shí)間日歷型任務(wù)控制程序。2.2接發(fā)式cerapwell-patche由于定時(shí)器事件通知不需用戶確認(rèn)(即不需用戶干涉),只是在給定的時(shí)間自動(dòng)運(yùn)行某個(gè)應(yīng)用程序,因此比較簡(jiǎn)單。創(chuàng)建定時(shí)器事件通知只需如下調(diào)用:其參數(shù)含義是:lpTime是一個(gè)結(jié)構(gòu)指針,該結(jié)構(gòu)指定了運(yùn)行應(yīng)用程序的時(shí)間;pwszAppName是要運(yùn)行的應(yīng)用程序的名稱。要修改定時(shí)器事件通知,只需再次調(diào)用CeRunAppAtTime。因?yàn)槿绻啻握{(diào)用CeRunAppAtTime,則后面的通知(定時(shí)器時(shí)間)將替換前面的通知。要清除定時(shí)器事件通知,只要在調(diào)用CeRunAppAtTime時(shí),在參數(shù)lpTime中傳遞一個(gè)NULL指針。即使系統(tǒng)是關(guān)閉的,當(dāng)定時(shí)器事件到達(dá)時(shí),要運(yùn)行的應(yīng)用程序也會(huì)啟動(dòng),這是由系統(tǒng)的電源管理特性決定的。最后需要說(shuō)明的是,應(yīng)該只允許應(yīng)用程序的一個(gè)實(shí)例運(yùn)行以節(jié)省資源。2.3添加或刪除設(shè)備通知當(dāng)需要設(shè)計(jì)對(duì)系統(tǒng)事件進(jìn)行監(jiān)控的程序時(shí)則要使用系統(tǒng)事件通知。使用系統(tǒng)事件通知只需調(diào)用CeRunAppAtEvent函數(shù),其語(yǔ)句是:其參數(shù)含義是:pwszAppName為要運(yùn)行的應(yīng)用程序的名稱;lWhichEvent指出要監(jiān)視哪一個(gè)事件,標(biāo)志常量為:NOTIFICATION_EVENT_NONE清除事件通知;NO-TIFICATION_EVENT_SYNC_END同步完成通知;NO-TIFICATION_EVENT_DEVICE_CHANGE添加或刪除設(shè)備通知;NOTIFICATION_EVENT_RS232_DETECTED檢測(cè)到RS232連接通知;NOTIFICATION_EVENT_TIME_CHANGE系統(tǒng)時(shí)間更改通知;NOTIFICATION_EVENT_RESTORE_END設(shè)備恢復(fù)完成通知。對(duì)于每一個(gè)事件,應(yīng)用程序用一個(gè)特定的命令行參數(shù)來(lái)啟動(dòng)(命令行參數(shù)格式詳見(jiàn)notify.h)。一旦用于系統(tǒng)事件通知的應(yīng)用程序被注冊(cè),不論指定的事件何時(shí)發(fā)生或重復(fù)發(fā)生,系統(tǒng)都會(huì)用命令行參數(shù)來(lái)運(yùn)行應(yīng)用程序。要停止響應(yīng)系統(tǒng)事件通知,應(yīng)用程序只要再次調(diào)用CeRunAppAtEvent,并在lWhichEvent參數(shù)中傳遞其名稱和NOTIFICATION_EVENT_NONE即可。從以上分析可以看出,只要綜合利用WindowsCE3.0提供的6個(gè)通知API,就能為PocketPC設(shè)計(jì)出由時(shí)間和事件控制的程序。再配合使用常規(guī)的多個(gè)應(yīng)用程序間通信技巧,就能根據(jù)需要設(shè)計(jì)開(kāi)發(fā)出功能強(qiáng)大、流程復(fù)雜的高級(jí)控制程序。本文只介紹了以Windows
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年欽州市靈山縣赴高校招聘教師135人備考題庫(kù)及1套參考答案詳解
- 基于實(shí)踐導(dǎo)向的初中科技創(chuàng)新社團(tuán)活動(dòng)課程設(shè)計(jì)與實(shí)施教學(xué)研究課題報(bào)告
- 2025年定西市通渭縣公開(kāi)招聘鄉(xiāng)村醫(yī)生7人備考題庫(kù)及1套參考答案詳解
- 2025年巧家縣社會(huì)工作協(xié)會(huì)面向社會(huì)公開(kāi)招聘政府購(gòu)買社會(huì)救助服務(wù)人員備考題庫(kù)及答案詳解一套
- 2025年新疆天筑建工集團(tuán)有限公司備考題庫(kù)及1套完整答案詳解
- 2025年麗江文化旅游學(xué)院招聘140名教師備考題庫(kù)附答案詳解
- 2025年永州市零陵區(qū)陽(yáng)光社會(huì)工作服務(wù)中心招聘人員備考題庫(kù)及一套答案詳解
- 2025年天津北海油人力資源咨詢服務(wù)有限公司招聘外包工作人員備考題庫(kù)完整參考答案詳解
- 2025年國(guó)有企業(yè)招聘工作人員備考題庫(kù)帶答案詳解
- 2025年浙江中醫(yī)藥大學(xué)臨床醫(yī)學(xué)院及直屬附屬醫(yī)院公開(kāi)招聘277人備考題庫(kù)參考答案詳解
- 廣西貴百河2025-2026學(xué)年高一上學(xué)期12月聯(lián)考語(yǔ)文試題
- 2025四川航天川南火工技術(shù)有限公司招聘考試題庫(kù)及答案1套
- 廣東廣電網(wǎng)絡(luò)2026屆秋季校園招聘185人備考題庫(kù)完整答案詳解
- 2025年度皮膚科工作總結(jié)及2026年工作計(jì)劃
- (一診)成都市2023級(jí)高三高中畢業(yè)班第一次診斷性檢測(cè)物理試卷(含官方答案)
- 四川省2025年高職單招職業(yè)技能綜合測(cè)試(中職類)汽車類試卷(含答案解析)
- 2024江蘇無(wú)錫江陰高新區(qū)招聘社區(qū)專職網(wǎng)格員9人備考題庫(kù)附答案解析
- 2025西部機(jī)場(chǎng)集團(tuán)航空物流有限公司招聘筆試考試備考試題及答案解析
- 智能制造執(zhí)行系統(tǒng)(MES)應(yīng)用案例教程 課件全套 項(xiàng)目1-9 生產(chǎn)工序開(kāi)工、報(bào)工和檢驗(yàn) -特殊生產(chǎn)情況管理
- 植入類器械規(guī)范化培訓(xùn)
- 生物樣本庫(kù)解決方案
評(píng)論
0/150
提交評(píng)論