專(zhuān)利名稱(chēng):基于消息機(jī)制的實(shí)時(shí)進(jìn)程與非實(shí)時(shí)進(jìn)程間的數(shù)據(jù)交互方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種基于消息機(jī)制的實(shí)時(shí)進(jìn)程與非實(shí)時(shí)進(jìn)程間的數(shù)據(jù)交互方法,用于計(jì)算機(jī)操作系統(tǒng)實(shí)時(shí)進(jìn)程與非實(shí)時(shí)進(jìn)程間的數(shù)據(jù)交互方法,用于計(jì)算機(jī)實(shí)時(shí)計(jì)算和實(shí)時(shí)仿真。
背景技術(shù):
實(shí)時(shí)操作系統(tǒng)由于具有確定的中斷響應(yīng)和線(xiàn)程優(yōu)先級(jí),因此主要用于在計(jì)算機(jī)實(shí)時(shí)計(jì)算和實(shí)時(shí)仿真,但由于其結(jié)構(gòu)簡(jiǎn)単,人機(jī)交互能力較差,因此目前普遍將其作為實(shí)時(shí)調(diào)度內(nèi)核,而采用Windows系統(tǒng)完成人機(jī)交互?,F(xiàn)有的實(shí)時(shí)進(jìn)程與非實(shí)時(shí)進(jìn)程的數(shù)據(jù)交互,通常采用在計(jì)算機(jī)內(nèi)存開(kāi)辟一塊存儲(chǔ)空間,能夠被雙方進(jìn)程讀寫(xiě)的共享內(nèi)存機(jī)制,實(shí)時(shí)進(jìn)程每計(jì)算一次,將計(jì)算結(jié)果保存在內(nèi)存中,而非實(shí)時(shí)進(jìn)程在進(jìn)行界面顯示與處理吋,設(shè)置ー個(gè)定時(shí)器,定時(shí)在共享內(nèi)存中取數(shù)據(jù),完成人機(jī)交互。這種方法雖然易于實(shí)現(xiàn),但是需要兩個(gè)進(jìn)程對(duì)ー塊內(nèi)存區(qū)頻繁進(jìn)行讀寫(xiě)操作,同時(shí)計(jì)算和仿真數(shù)據(jù)可能丟失,對(duì)結(jié)果分析產(chǎn)生影響,此外,這種方式不能夠靈活實(shí)現(xiàn)數(shù)據(jù)交互,開(kāi)發(fā)者必須知道雙方的數(shù)據(jù)約定,因此不能靈活應(yīng)用。
發(fā)明內(nèi)容
要解決的技術(shù)問(wèn)題為了避免現(xiàn)有技術(shù)的不足之處,本發(fā)明提出一種基于消息機(jī)制的實(shí)時(shí)進(jìn)程與非實(shí)時(shí)進(jìn)程間的數(shù)據(jù)交互方法,已達(dá)到能夠?qū)崟r(shí)進(jìn)程和非實(shí)時(shí)進(jìn)程間靈活進(jìn)行數(shù)據(jù)交互,并且不丟失交互數(shù)據(jù)。技術(shù)方案—種基于消息機(jī)制的實(shí)時(shí)進(jìn)程與非實(shí)時(shí)進(jìn)程間的數(shù)據(jù)交互方法,其特征在于步驟如下步驟I :針對(duì)進(jìn)行數(shù)據(jù)交互的實(shí)時(shí)進(jìn)程和非實(shí)時(shí)進(jìn)程,設(shè)定兩個(gè)相互獨(dú)立共享內(nèi)存消息棧,分別是實(shí)時(shí)進(jìn)程發(fā)-非實(shí)時(shí)進(jìn)程收消息棧和實(shí)時(shí)進(jìn)程收-非實(shí)時(shí)進(jìn)程發(fā)消息棧,所述兩個(gè)消息棧的數(shù)據(jù)管理采用數(shù)據(jù)緩沖和先進(jìn)后出機(jī)制;步驟2 :設(shè)置實(shí)時(shí)進(jìn)程和非實(shí)時(shí)進(jìn)程數(shù)據(jù)交互的消息類(lèi)型,實(shí)時(shí)進(jìn)程發(fā)出-非實(shí)時(shí)進(jìn)程接收消息包括仿真計(jì)算消息、錯(cuò)誤消息、通知顯示消息、計(jì)算結(jié)束消息;非實(shí)時(shí)進(jìn)程發(fā) 出-實(shí)時(shí)進(jìn)程接收消息包括仿真計(jì)算管理消息,初始參數(shù)設(shè)置消息;步驟3 :設(shè)置共享內(nèi)存消息棧機(jī)制的緩沖區(qū)《>胃1,F(xiàn)Pr為實(shí)時(shí)進(jìn)程計(jì)算頻率,F(xiàn)p。為非實(shí)時(shí)進(jìn)程讀取頻率;步驟4:實(shí)時(shí)進(jìn)程將每步計(jì)算數(shù)據(jù)和觸發(fā)的錯(cuò)誤以消息模式壓棧進(jìn)入實(shí)時(shí)進(jìn)程發(fā)-非實(shí)時(shí)進(jìn)程收共享內(nèi)存消息棧,同時(shí)非實(shí)時(shí)進(jìn)程查詢(xún)實(shí)時(shí)進(jìn)程發(fā)-非實(shí)時(shí)進(jìn)程收共享內(nèi)存消息棧,當(dāng)有消息時(shí)壓棧取出消息進(jìn)出消息響應(yīng),直到消息棧清空為止;
步驟5 :非實(shí)時(shí)進(jìn)程將控制指令信息以消息模式壓棧進(jìn)入實(shí)時(shí)進(jìn)程收-非實(shí)時(shí)進(jìn)程發(fā)消息棧;同時(shí)實(shí)時(shí)進(jìn)程查詢(xún)實(shí)時(shí)進(jìn)程收-非實(shí)時(shí)進(jìn)程發(fā)消息棧,當(dāng)有消息時(shí)壓棧取出消息進(jìn)出消息響應(yīng),直到消息棧清空為止。有益效果本發(fā)明提出的一種基于消息機(jī)制的實(shí)時(shí)進(jìn)程與非實(shí)時(shí)進(jìn)程間的數(shù)據(jù)交互方法,可以在不影響實(shí)時(shí)進(jìn)程實(shí)時(shí)性和計(jì)算數(shù)據(jù)不丟失條件下,實(shí)現(xiàn)在非實(shí)時(shí)進(jìn)程中對(duì)的實(shí)時(shí)進(jìn)程產(chǎn)生的計(jì)算和仿真數(shù)據(jù)進(jìn)行顯示和分析。本發(fā)明所有的方法具有較強(qiáng)的通用性,因此可以方便對(duì)實(shí)時(shí)仿真產(chǎn)生的數(shù) 據(jù)進(jìn)行保存、顯示分析和處理。
圖I :本發(fā)明方法流程圖
具體實(shí)施例方式現(xiàn)結(jié)合實(shí)施例、附圖對(duì)本發(fā)明作進(jìn)ー步描述現(xiàn)需要在Windows計(jì)算機(jī)上安裝RTX(Window嵌入式操作系統(tǒng))完成實(shí)時(shí)仿真計(jì)算,同時(shí)應(yīng)用Windows友好的人機(jī)交互界面實(shí)現(xiàn)仿真數(shù)據(jù)的顯示和分析、仿真流程的控制。RTX實(shí)時(shí)仿真進(jìn)程周期為10毫秒,每步仿真計(jì)算產(chǎn)生的最大數(shù)據(jù)量為512個(gè)字節(jié),而Windows非實(shí)時(shí)進(jìn)程界面刷新周期為50毫秒,主要進(jìn)行仿真流程控制和數(shù)據(jù)結(jié)果的顯示和保存。根據(jù)本發(fā)明,具體實(shí)施過(guò)程如下I)對(duì)任務(wù)功能按照運(yùn)行特性進(jìn)行正確有效的劃分成兩部分非實(shí)時(shí)部分(Windows進(jìn)程)和實(shí)時(shí)部分(RTX進(jìn)程)。兩者數(shù)據(jù)交互的類(lèi)型主要包括實(shí)時(shí)進(jìn)程的仿真計(jì)算結(jié)果消息、錯(cuò)誤消息、仿真過(guò)程通知消息;非實(shí)時(shí)進(jìn)程消息主要包括仿真流程控制消息、參數(shù)設(shè)置消息等;2)分別建立RTX進(jìn)程收(Windows進(jìn)程發(fā))和Windows進(jìn)程收(RTX進(jìn)程發(fā))兩個(gè)共享內(nèi)存消息堆棧,為保證系統(tǒng)運(yùn)行的高效性,盡量減少在兩種進(jìn)程之間的同步信號(hào)和數(shù)據(jù)流。將堆棧消息緩沖數(shù)設(shè)置為128,將消息最大允許數(shù)據(jù)量設(shè)置為512字節(jié);3)仿真數(shù)據(jù)記錄與顯示。在RTX進(jìn)程對(duì)硬盤(pán)進(jìn)行讀寫(xiě)記錄仿真數(shù)據(jù)嚴(yán)重影響了仿真性能,而RTX系統(tǒng)是Windows的嵌入實(shí)時(shí)系統(tǒng),其任何ー個(gè)優(yōu)先級(jí)都要高于Windows,在Windows環(huán)境下對(duì)硬盤(pán)操作不會(huì)對(duì)RTX實(shí)時(shí)性能產(chǎn)生影響,因此用過(guò)共享內(nèi)存消息機(jī)制將RTX每仿真一歩,將仿真數(shù)據(jù)存儲(chǔ)到Windows進(jìn)程收(RTX進(jìn)程發(fā))共享內(nèi)存消息堆中,而Windows程序則不斷對(duì)緩存區(qū)進(jìn)行檢測(cè),發(fā)現(xiàn)有數(shù)據(jù)立即取出將其寫(xiě)到硬盤(pán)上存儲(chǔ)成數(shù)據(jù)文件,或者添加到示波器實(shí)時(shí)顯示,同時(shí)將緩存區(qū)中的原有數(shù)據(jù)清除。4)仿真流程控制。RTX進(jìn)程不具有人機(jī)交互界面,當(dāng)Windows進(jìn)程進(jìn)行人機(jī)交互,將仿真過(guò)程通知消息(包括啟動(dòng)、停止等消息)添加到RTX進(jìn)程收(Windows進(jìn)程發(fā))共享內(nèi)存消息堆棧中,而RTX程序則不斷對(duì)緩存區(qū)進(jìn)行檢測(cè),發(fā)現(xiàn)有消息立即取出進(jìn)行相應(yīng)。為了驗(yàn)證本發(fā)明的效果,將本基于消息的進(jìn)程交互方法與傳統(tǒng)進(jìn)程間查詢(xún)模式進(jìn)行對(duì)比,兩者實(shí)時(shí)仿真周期為0. I毫秒,交互數(shù)據(jù)量為512字節(jié),比較結(jié)果如圖I所示。表I兩種方法進(jìn)程交互性能對(duì)比表
權(quán)利要求
1. 一種基于消息機(jī)制的實(shí)時(shí)進(jìn)程與非實(shí)時(shí)進(jìn)程間的數(shù)據(jù)交互方法,其特征在于步驟如下步驟1:針對(duì)進(jìn)行數(shù)據(jù)交互的實(shí)時(shí)進(jìn)程和非實(shí)時(shí)進(jìn)程,設(shè)定兩個(gè)相互獨(dú)立共享內(nèi)存消 息棧,分別是實(shí)時(shí)進(jìn)程發(fā)-非實(shí)時(shí)進(jìn)程收消息棧和實(shí)時(shí)進(jìn)程收-非實(shí)時(shí)進(jìn)程發(fā)消息棧,所述 兩個(gè)消息棧的數(shù)據(jù)管理采用數(shù)據(jù)緩沖和先進(jìn)后出機(jī)制;步驟2 :設(shè)置實(shí)時(shí)進(jìn)程和非實(shí)時(shí)進(jìn)程數(shù)據(jù)交互的消息類(lèi)型,實(shí)時(shí)進(jìn)程發(fā)出_非實(shí)時(shí)進(jìn) 程接收消息包括仿真計(jì)算消息、錯(cuò)誤消息、通知顯示消息、計(jì)算結(jié)束消息;非實(shí)時(shí)進(jìn)程發(fā) 出_實(shí)時(shí)進(jìn)程接收消息包括仿真計(jì)算管理消息,初始參數(shù)設(shè)置消息;步驟3 :設(shè)置共享內(nèi)存消息棧機(jī)制的緩沖區(qū)
全文摘要
本發(fā)明涉及一種基于消息機(jī)制的實(shí)時(shí)進(jìn)程與非實(shí)時(shí)進(jìn)程間的數(shù)據(jù)交互方法,可以在不影響實(shí)時(shí)進(jìn)程實(shí)時(shí)性和計(jì)算數(shù)據(jù)不丟失條件下,實(shí)現(xiàn)在非實(shí)時(shí)進(jìn)程中對(duì)的實(shí)時(shí)進(jìn)程產(chǎn)生的計(jì)算和仿真數(shù)據(jù)進(jìn)行顯示和分析。本發(fā)明所有的方法具有較強(qiáng)的通用性,因此可以方便對(duì)實(shí)時(shí)仿真產(chǎn)生的數(shù)據(jù)進(jìn)行保存、顯示分析和處理。
文檔編號(hào)G06F9/54GK102662771SQ201210053879
公開(kāi)日2012年9月12日 申請(qǐng)日期2012年3月3日 優(yōu)先權(quán)日2012年3月3日
發(fā)明者許志 申請(qǐng)人:西北工業(yè)大學(xué)