基于ucos的多任務(wù)管理的銀行叫號模擬系統(tǒng)的實現(xiàn)_第1頁
基于ucos的多任務(wù)管理的銀行叫號模擬系統(tǒng)的實現(xiàn)_第2頁
基于ucos的多任務(wù)管理的銀行叫號模擬系統(tǒng)的實現(xiàn)_第3頁
基于ucos的多任務(wù)管理的銀行叫號模擬系統(tǒng)的實現(xiàn)_第4頁
基于ucos的多任務(wù)管理的銀行叫號模擬系統(tǒng)的實現(xiàn)_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

實時操作系統(tǒng)期末設(shè)計報告設(shè)計題目:基于uc/os的多任務(wù)管理的銀行叫號模擬系統(tǒng)的實現(xiàn)學號:姓名:2023年12月目錄摘要2一、數(shù)據(jù)分析21.1數(shù)據(jù)分析21.2定義數(shù)據(jù)結(jié)構(gòu)3二、功能設(shè)計和實現(xiàn)32.1功能設(shè)計42.1.1系統(tǒng)設(shè)計圖如下所示42.1.2任務(wù)的功能設(shè)計42.2代碼設(shè)計52.2.1主菜單的設(shè)計52.2.2系統(tǒng)初始化52.2.3各任務(wù)的實現(xiàn)7三、調(diào)試及運行結(jié)果83.1代碼的調(diào)試過程83.2運行過程及結(jié)果截圖9四、結(jié)束語11五、參考文獻11摘要uc/os是一種免費公開源代碼、結(jié)構(gòu)小巧、具有可剝奪實時內(nèi)核的實時操作系統(tǒng)。在嵌入式領(lǐng)域被廣泛的應(yīng)用,加上它的源代碼開放,我們可以很好的對其進行二次開發(fā)。在信息社會的今天,實現(xiàn)辦公自動化是我們的目標,這樣可以在很大程度上提高辦公效率。本設(shè)計是基于uc/os多任務(wù)管理的銀行排隊叫號模擬系統(tǒng)的實現(xiàn)。在系統(tǒng)中主要對公業(yè)務(wù)、VIP業(yè)務(wù)、水電費業(yè)務(wù)、個人儲蓄業(yè)務(wù)實現(xiàn)排隊叫號管理。最后我在bc31系統(tǒng)中進行模擬實現(xiàn)。關(guān)鍵詞uc/os多任務(wù)管理一、數(shù)據(jù)分析在模擬系統(tǒng)中,我們主要對公業(yè)務(wù)、VIP業(yè)務(wù)、水電費業(yè)務(wù)、個人儲蓄業(yè)務(wù)實現(xiàn)排隊叫號管理??傊褪怯兴膫€任務(wù),在實現(xiàn)時,我們首先要分析數(shù)據(jù),定義數(shù)據(jù)結(jié)構(gòu)。1.1數(shù)據(jù)分析系統(tǒng)模擬實現(xiàn)四個任務(wù)的排隊叫號,當顧客需要辦理業(yè)務(wù)時,只要選擇相應(yīng)的要辦理的業(yè)務(wù)代號,然后系統(tǒng)就會給出一個號,當顧客辦理完業(yè)務(wù)后,系統(tǒng)就會對相應(yīng)的信息進行刪除操作。根據(jù)上面的分析,我們就要定義四個隊列對四個業(yè)務(wù)進行相應(yīng)的處理。在同一個業(yè)務(wù)的辦理中我們使用隊列進行處理。下面我就對相應(yīng)的數(shù)據(jù)定義相應(yīng)的數(shù)據(jù)結(jié)構(gòu)。1.2定義數(shù)據(jù)結(jié)構(gòu)首先我對堆棧長度做出定義,下面我就定義堆棧長度為512M在程序中的寫法如下:#defineTASK_STK_SIZE512 //定義任務(wù)堆棧長度下面是定義四個堆棧的長度,分別存儲公業(yè)務(wù)、VIP業(yè)務(wù)、水電費業(yè)務(wù)、個人儲蓄業(yè)務(wù)的信息,它們的長度用上面所定義的長度。OS_STKPublicTaskStk[TASK_STK_SIZE];OS_STKVIPTaskStk[TASK_STK_SIZE];OS_STKWaterPowerTaskStk[TASK_STK_SIZE];OS_STKPersonTaskStk[TASK_STK_SIZE];定義用于接收用戶選擇的按鍵,戚數(shù)據(jù)類型為:INT16S,具體如下所示:INT16Skey; //用于鍵經(jīng)過上面的數(shù)據(jù)分析以后,我們可以進入相應(yīng)的設(shè)計實現(xiàn)階段。二、功能設(shè)計和實現(xiàn)本設(shè)計是基于uc/os多任務(wù)管理的銀行排隊叫號模擬系統(tǒng)的實現(xiàn)。在系統(tǒng)中主要對公業(yè)務(wù)、VIP業(yè)務(wù)、水電費業(yè)務(wù)、個人儲蓄業(yè)務(wù)實現(xiàn)排隊叫號管理。啟動以后,用戶選擇自己相應(yīng)的操作,待操作結(jié)束以后,系統(tǒng)回到主菜單等待第二個用戶的到來,這樣一直循環(huán)下去。2.1功能設(shè)計2.1.1系統(tǒng)設(shè)計圖如下所示如上圖所示,用戶選擇公共業(yè)務(wù)、VIP業(yè)務(wù)、水電費業(yè)務(wù)、個人儲蓄業(yè)務(wù)進行辦理當辦理完成以后,系統(tǒng)回到主菜單等待第二個用戶的到來。2.1.2任務(wù)的功能設(shè)計 在系統(tǒng)中有四個任務(wù),當用戶選擇進入以后,實現(xiàn)相應(yīng)的功能,當用戶離開以后任務(wù)要結(jié)束自己的進程。否那么,系統(tǒng)就不能辦理另外的任務(wù)。具體的流程如下列圖所示:2.2代碼設(shè)計在這小節(jié)中我給出局部任務(wù)的設(shè)計方法以及局部程序的源代碼,并對一些程序做出一些解釋。2.2.1主菜單的設(shè)計主菜單是用戶進入系統(tǒng)看到的第一個界面,主要起著提示用戶的作用,用戶通過主菜單的提示選擇相應(yīng)的任務(wù)執(zhí)行。具體的代碼如下所示:voidprint(){ printf("pleasechooseyouneedtask!\n"); printf("1.publictask\n"); printf("2.viptask\n"); printf("3.waterandpowertask\n"); printf("4.persontask\n");}用戶只要通過鍵盤上的就可以選擇進入相應(yīng)的操作。2.2.2系統(tǒng)初始化系統(tǒng)初始化是對系統(tǒng)的一些功能進行初始化工作,例如,接口、時鐘頻率等等在這里用Init()實現(xiàn)。除此之外,系統(tǒng)還要對按鍵等進行初始化工作,這里用TaskStart()實現(xiàn),TaskStart()函數(shù)不僅實現(xiàn)系統(tǒng)的初始化,也是進入系統(tǒng)的引導程序。是系統(tǒng)運行的接口。初始化工作是為了以后的程序能夠正常運行。下面是兩個函數(shù)的源代碼:voidInit(){#ifOS_CRITICAL_METHOD==3OS_CPU_SRcpu_sr;#endifOS_ENTER_CRITICAL();PC_VectSet(0x08,OSTickISR);PC_SetTickRate(OS_TICKS_PER_SEC); //設(shè)置uCOS_II時鐘頻率OS_EXIT_CRITICAL();OSStatInit(); //初始化任務(wù) PC_DOSSaveReturn();PC_VectSet(uCOS,OSCtxSw); //安裝中斷}voidTaskStart(void*pdata){ Init(); pdata=pdata; print(); for(;;) { if(PC_GetKey(&key)==TRUE) {if(key==0x31) { OSStatInit();OSTaskCreate(PublicTask,(void*)0,&OutTaskStk[TASK_STK_SIZE-1],4); } if(key==0x32) { OSStatInit();OSTaskCreate(VIPTask,(void*)0,&InterTaskStk[TASK_STK_SIZE-1],5); } if(key==0x33) {OSStatInit();OSTaskCreate(WaterPowerTask,(void*)0,&DentTaskStk[TASK_STK_SIZE-1],6); } if(key==0x34) {OSStatInit(); OSTaskCreate(PersonTask,(void*)0,&PediTaskStk[TASK_STK_SIZE-1],7); } if(key==0x1B) { PC_DOSReturn(); } } }}2.2.3各任務(wù)的實現(xiàn)在系統(tǒng)中有四個任務(wù),即公共業(yè)務(wù)、VIP業(yè)務(wù)、水電費業(yè)務(wù)、個人儲蓄業(yè)務(wù)。在這里主要是對這四個模塊的實現(xiàn),實現(xiàn)它們相應(yīng)的功能。四個模塊的源代碼如下:voidPublicTask(void*pdata) //對公業(yè)務(wù){(diào) Init(); pdata=pdata; printf("\n\nthisispublictask!\n"); outcount=outcount+1; printf("\nyourNumberis%d!\n",outcount); print(); OSTaskDel(OS_PRIO_SELF); OSTaskResume(1);}voidVIPTask(void*pdata) //VIP業(yè)務(wù)、{ Init(); pdata=pdata; printf("\n\nthisisVIPtask!\n"); intercount=intercount+1; printf("\nyourNumberis%d!\n",intercount); print(); OSTaskDel(OS_PRIO_SELF); OSTaskResume(1);}voidWaterPowerTask(void*pdata) //水電費業(yè)務(wù)、{ Init(); pdata=pdata; printf("\n\nthisiswaterandpower!\n"); dentcount=dentcount+1; printf("\nyourNumberis%d!\n",dentcount); print(); OSTaskDel(OS_PRIO_SELF); OSTaskResume(1);}voidPersonTask(void*pdata) //個人儲蓄業(yè)務(wù){(diào) Init(); pdata=pdata; printf("\n\nthisispersontask!\n"); pedicount=pedicount+1; printf("\nyourNumberis%d!\n",pedicount); print(); OSTaskDel(OS_PRIO_SELF); OSTaskResume(1);}在系統(tǒng)中還有一些如結(jié)束進程等任務(wù)的實現(xiàn),這里由于篇幅問題,就不把源代碼附在上面。三、調(diào)試及運行結(jié)果3.1代碼的調(diào)試過程通過DosBox進入BC31下調(diào)試程序,進入程序的目錄Term下的test目錄,結(jié)果如下面所示:1、建立虛擬盤2、找到Term下的test目錄3、輸入maketest命令,進入下面的環(huán)境3.2運行過程及結(jié)果截圖1、在test文件中運行test.exe文件,如下列圖所示:2、進入到主界面如下列圖所示:3、選擇publictask后如下列圖所示4、再次選擇publictask后如下列圖所示5、選擇waterandpower后如下面所示6、然后選擇相應(yīng)的如下面所示:7、第二次選擇persontask8、第六次選擇persontask9、第四次選擇publictask第五次選擇publictask四、結(jié)束語實時操作系統(tǒng)是現(xiàn)在嵌入式領(lǐng)域不可少的一局部。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論