專利名稱:一種隊列序列化式處理數(shù)據(jù)的方法和裝置的制作方法
技術領域:
本發(fā)明涉及離散數(shù)據(jù)處理領域,更具體地說,涉及一種隊列序列化式處理數(shù)據(jù)的方法和裝置。
背景技術:
在醫(yī)療器械設計領域,隨著用戶需求的日益增長以及醫(yī)療器械一貫的對安全性的嚴格要求,麻醉機需要實現(xiàn)更多的功能和具備更多的保護措施,也就意味著麻醉機的軟硬件要朝著多系統(tǒng)、多單元的方向設計,每個單元完成一定的預期功能。因此,單元之間必然存在一定的數(shù)據(jù)交換,RS-232串行口是應用比較廣泛的一種標準通訊接口,它具備全雙工通訊、較高穩(wěn)定性、較好易用性等特征,所以基于它可以實現(xiàn)多種通訊方式。本發(fā)明基于RS-232全雙工模式的異步通信接口,在應用較為廣泛的“握手+校驗和型”通訊協(xié)議的前提下,實現(xiàn)一種對實時性較高的快速數(shù)據(jù),進行優(yōu)先收發(fā)處理的算法。在麻醉機中,以呼吸控制單元(簡稱:BDU)和用戶界面單元(簡稱:GUI)間的實時性要求和數(shù)據(jù)載荷最高,這2個單元間,多數(shù)廠家會使用串行通訊,如:RS-232、I2C等。而這兩者間需要保證實時性的快速數(shù)據(jù)包括:1-3種量值的實時波形數(shù)據(jù)、電子流量計(簡稱:EFM)數(shù)據(jù)、實時報警數(shù)據(jù)以及通氣模式切換指令等。所謂相對而言的慢速數(shù)據(jù),即指監(jiān)測值數(shù)據(jù)、狀態(tài)數(shù)據(jù)、趨勢數(shù)據(jù)等發(fā)送周期較長的數(shù)據(jù)。本發(fā)明將以典型的波形顯示快速數(shù)據(jù)(簡稱:快速數(shù)據(jù))和監(jiān)測值慢速數(shù)據(jù)(簡稱:慢速數(shù)據(jù))的數(shù)據(jù)接收、數(shù)據(jù)解析為例,闡述后續(xù)內(nèi)容。所有快速數(shù)據(jù)裝配、數(shù)據(jù)發(fā)送的過程,與數(shù)據(jù)接收的原理完全相同。由于是串行通訊,從通訊協(xié)議設計的角度,往往不可能為快速數(shù)據(jù)建立單獨的通訊信道,只能標識出哪些數(shù)據(jù)屬于快速數(shù)據(jù),這與成本、穩(wěn)定性等多方面的考慮有關。因此,從現(xiàn)有的通訊硬件上,很難做到對快速數(shù)據(jù)的優(yōu)先響應,只能通過軟件對數(shù)據(jù)做后期處理,虛擬出一條快速數(shù)據(jù)通道,優(yōu)先提供數(shù)據(jù)給波形顯示等算法。現(xiàn)有的快速數(shù)據(jù)處理算法存在如下幾個典型的缺點:1.數(shù)據(jù)接收上,能有效將快速數(shù)據(jù)與慢速數(shù)據(jù)分離,但沒有考慮快速數(shù)據(jù)更需要緩沖,并且需要對緩沖數(shù)據(jù)進行序列化,以保證數(shù)據(jù)在接收時不出現(xiàn)丟失或前后順序顛倒、覆蓋等問題;2.數(shù)據(jù)接收和數(shù)據(jù)解析沒有并行,接收后立即解析,即接收和解析是串行進行的。相對而言,數(shù)據(jù)解析由于要取出原始數(shù)據(jù)并進行必要的數(shù)值轉(zhuǎn)換等操作,在實時性要求較高的場合,是相對較慢的。這會造成下一幀快速數(shù)據(jù)的處理延時,而且此延時會累積,最終造成原始數(shù)據(jù)被覆蓋或丟失,造成錯解或漏解;3.由于解析后的數(shù)據(jù)也沒有考慮緩沖機制,這便要求本來就相對最慢的波形顯示采樣周期縮短,而即使波形顯示采樣周期縮短到與數(shù)據(jù)解析周期同步,由于問題2的存在,也不能避免覆蓋或丟失數(shù)據(jù)。由于顯示過程提速,導致GUI系統(tǒng)開銷激增,而實際顯示效果的改善并不明顯;GUI波形顯示總周期的設計被迫違背預期設計要求,波形顯示總周期定義受限等問題接踵而至。
發(fā)明內(nèi)容
為了解決以上的問題,本發(fā)明提供一種隊列序列化式處理數(shù)據(jù)的方法和裝置。本發(fā)明公開了一種隊列序列化式處理數(shù)據(jù)的方法,包括:S1.在通訊口處設置快速緩沖區(qū)以及慢速緩沖區(qū);S2.接收輸入的原始數(shù)據(jù),并按預解析分成快速數(shù)據(jù)以及慢速數(shù)據(jù),并以單向隊列結構相應放入所述的快速緩沖區(qū)以及慢速緩沖區(qū),形成數(shù)據(jù)幀;S3.判斷所述的數(shù)據(jù)幀是否合法,如果合法,進入步驟S4,如果不合法,進入步驟S31,將所述的數(shù)據(jù)幀棄之不用;S4.將所述的數(shù)據(jù)幀以隊系列化的方式出隊解析并顯示。在本發(fā)明所述的隊列序列化式處理數(shù)據(jù)的方法中,所述預解析,具體是:采用輪詢法周期性主動檢測并接收串行口數(shù)據(jù),獲取數(shù)據(jù)命令字及長度。在本發(fā)明所述的隊列序列化式處理數(shù)據(jù)的方法中,所述預解析,具體是:采用中斷、事件或消息等機制被動觸發(fā)接收數(shù)據(jù),獲取數(shù)據(jù)命令字及長度。在本發(fā)明所述的隊列序列化式處理數(shù)據(jù)的方法中,所述通訊口為:RS_232串行口通訊、i2c、sp1、can。在本發(fā)明所述的隊列序列化式處理數(shù)據(jù)的方法中,所述的接收多隊列數(shù)據(jù)時,步驟S2與步驟S4可同時進行。本發(fā)明公開了一種隊列序列化式處理數(shù)據(jù)的裝置,用于實現(xiàn)上述的方法,包括:緩沖區(qū)設置單元:用于在通訊口處設置快速緩沖區(qū)以及慢速緩沖區(qū);原始數(shù)據(jù)分離單元:與所述的緩沖區(qū)設置單元相連,用于接收輸入的原始數(shù)據(jù),并按預解析分成快速數(shù)據(jù)以及慢速數(shù)據(jù),并以單向隊列結構相應放入所述的快速緩沖區(qū)以及慢速緩沖區(qū),形成數(shù)據(jù)幀;數(shù)據(jù)幀判斷單元:與所述的原始數(shù)據(jù)分離單元相連,用于判斷所述的數(shù)據(jù)幀是否合法;數(shù)據(jù)解析單元:與所述的數(shù)據(jù)幀判斷單元相連,用于將所述的數(shù)據(jù)幀以隊系列化的方式出隊解析并顯示。在本發(fā)明所述的隊列序列化式處理數(shù)據(jù)的裝置中,所述預解析,具體是:采用輪詢法周期性主動檢測并接收串行口數(shù)據(jù),獲取數(shù)據(jù)命令字及長度。在本發(fā)明所述的隊列序列化式處理數(shù)據(jù)的裝置中,所述預解析,具體是:采用中斷、事件或消息等機制被動觸發(fā)接收數(shù)據(jù),獲取數(shù)據(jù)命令字及長度。在本發(fā)明所述的隊列序列化式處理數(shù)據(jù)的裝置中,所述通訊口為:RS_232串行口通訊、i2c、sp1、can。在本發(fā)明所述的隊列序列化式處理數(shù)據(jù)的裝置中,所述的接收多隊列數(shù)據(jù)時,所述的原始數(shù)據(jù)分離單元接收數(shù)據(jù)與所述的數(shù)據(jù)解析單元解析數(shù)據(jù)可同步進行。實施本發(fā)明的隊列序列化式處理數(shù)據(jù)的方法和裝置,具有以下有益的技術效果:a)利用隊列分別記錄快速數(shù)據(jù)和慢速數(shù)據(jù),使數(shù)據(jù)序列化,不會重疊或覆蓋;b)將數(shù)據(jù)的收發(fā)和解析分離,用多線程思想處理解析,并同樣保證序列化;
c)使用隊列特有的特性,使數(shù)據(jù)的訪問控制變得簡易、高效;d)數(shù)據(jù)不丟失,快速數(shù)據(jù)處理過程加快,提高實時性;e)嵌入式系統(tǒng)或非嵌入式系統(tǒng)均適用。
圖1是本發(fā)明實施例一種隊列序列化式處理數(shù)據(jù)的方法流程圖;圖2為本發(fā)明實施例一種隊列序列化式處理數(shù)據(jù)的裝置方框圖;圖3為現(xiàn)有技術串行原始數(shù)據(jù)序列可能出現(xiàn)的現(xiàn)象圖示;圖4為本發(fā)明快慢原始數(shù)據(jù)分離和序列化示意圖;圖5為本發(fā)明單線程數(shù)據(jù)解析示意圖;圖6為本發(fā)明解析數(shù)據(jù)序列化和顯示采樣示意圖。
具體實施例方式為詳細說明本發(fā)明的技術內(nèi)容、構造特征、所實現(xiàn)目的及效果,以下結合實施方式并配合附圖詳予說明。針對現(xiàn)有快速數(shù)據(jù)處理存在的技術問題,本發(fā)明提出了一種可行的提高快速數(shù)據(jù)處理實時性,從根本上避免數(shù)據(jù)丟失,并被優(yōu)先處理的設計技術方案:針對問題1,本算法利用隊列(Queue)結構先進先出,數(shù)據(jù)序列化等特點,在數(shù)據(jù)接收、解析環(huán)節(jié)應用該特點設計數(shù)據(jù)緩沖,并將快速數(shù)據(jù)和慢速數(shù)據(jù)分離,分別放入不同的緩沖,暫不對數(shù)據(jù)解析,以提高快速數(shù)據(jù)接收的實時性,保證接收時數(shù)據(jù)不丟失。針對問題2,數(shù)據(jù)接收緩沖和數(shù)據(jù)解析緩沖在機制上都使用隊列結構,由于緩沖的存在,微觀上接收和解析過程并不完全同步,通過多線程應用和利用隊列的易存取性,使相對較慢的解析過程盡可能與接收過程并行完成,從而保證宏觀上數(shù)據(jù)的接收和解析是同步的,也即實現(xiàn)了數(shù)據(jù)接收和解析的完全分離:下一幀快速數(shù)據(jù),不必等上一幀數(shù)據(jù)解析完成后才能被接收。進一步保證數(shù)據(jù)在解析后的實時性,仍然不會丟失。針對問題3,一旦數(shù)據(jù)丟失問題解決,只要BDU (Breath Delivery Unit,呼吸控制單元)端提供的采樣數(shù)據(jù)足夠多,⑶I (Graphical User Interface,圖形用戶界面單元)端不但波形顯示的效果明顯改善,顯示總周期定義的靈活度也大大增加:不必考慮顯示和解析的同步,顯示采樣周期可在一定范圍內(nèi)定義,顯示采樣周期的短或長只決定對采樣數(shù)據(jù)的利用率的高或低,使得波形的顯示效果和系統(tǒng)開銷間可以按需取得平衡。請參閱圖1,一種隊列序列化式處理數(shù)據(jù)的方法,包括:S1.在通訊口處設置快速緩沖區(qū)以及慢速緩沖區(qū);S2.接收輸入的原始數(shù)據(jù),并按預解析分成快速數(shù)據(jù)以及慢速數(shù)據(jù),并以單向隊列結構相應放入所述的快速緩沖區(qū)以及慢速緩沖區(qū),形成數(shù)據(jù)幀;預解析,是指采用輪詢法周期性主動檢測并接收串行口數(shù)據(jù),獲取數(shù)據(jù)命令字及長度或是采用中斷、事件或消息等機制被動觸發(fā)接收數(shù)據(jù),獲取數(shù)據(jù)命令字及長度。所述通訊口為RS-232 串行口通訊、I2C(Internal IntegrateChipCommunication,內(nèi)部芯片間同步通訊)、SPI (Serial Peripheral Interface,串行外圍設備接口)、CAN(ControIIer Area Network,控制器局部網(wǎng))等等。
S3.判斷所述的數(shù)據(jù)幀是否合法,如果合法,進入步驟S4,如果不合法,進入步驟S31,將所述的數(shù)據(jù)幀棄之不用;S4.將所述的數(shù)據(jù)幀以隊系列化的方式出隊解析并顯示。所述的接收多隊列數(shù)據(jù)時,步驟S2與步驟S4可同時進行。請參閱圖2,一種隊列序列化式處理數(shù)據(jù)的裝置,用于實現(xiàn)上述的方法,包括:緩沖區(qū)設置單元10、原始數(shù)據(jù)分離單元20、數(shù)據(jù)幀判斷單元30、數(shù)據(jù)解析單元40。緩沖區(qū)設置單元10:用于在通訊口處設置快速緩沖區(qū)以及慢速緩沖區(qū);原始數(shù)據(jù)分離單元20:與緩沖區(qū)設置單元10相連,用于接收輸入的原始數(shù)據(jù),并按預解析分成快速數(shù)據(jù)以及慢速數(shù)據(jù),并以單向隊列結構相應放入所述的快速緩沖區(qū)以及慢速緩沖區(qū),形成數(shù)據(jù)幀;數(shù)據(jù)幀判斷單元30:與原始數(shù)據(jù)分離單元20相連,用于判斷所述的數(shù)據(jù)幀是否合法;數(shù)據(jù)解析單元40:與數(shù)據(jù)幀判斷單元30相連,用于將所述的數(shù)據(jù)幀以隊系列化的方式出隊解析并顯示。其中,所述預解析,具體是:采用輪詢法周期性主動檢測并接收串行口數(shù)據(jù),獲取數(shù)據(jù)命令字及長度或是采用中斷、事件或消息等機制被動觸發(fā)接收數(shù)據(jù),獲取數(shù)據(jù)命令字及長度,所述通訊口為RS-232串行口通訊、I2C、SP1、CAN等,所述的接收多隊列數(shù)據(jù)時,所述的原始數(shù)據(jù)分離單元接收數(shù)據(jù)與所述的數(shù)據(jù)解析單元解析數(shù)據(jù)可同步進行。下面將以3個量值的波形數(shù)據(jù)作為“快速數(shù)據(jù)”,以氧濃度監(jiān)測值數(shù)據(jù)作為“慢速數(shù)據(jù)”,詳細闡述本發(fā)明的技術方案(舉例說明):3個量值的“快速數(shù)據(jù)”:氣道壓力-時間(PAW-t)波形數(shù)據(jù)、氣體流速-時間(Flow-t)波形數(shù)據(jù)和潮氣量-時間(VolumeTidal-t)波形數(shù)據(jù)。為保證同步,3個量值會在一個快速數(shù)據(jù)幀中被BDU發(fā)送;發(fā)送周期:Tw = 20ms (毫秒);氧濃度監(jiān)測“慢速數(shù)據(jù)” =BDU發(fā)送氧濃度數(shù)據(jù)幀;發(fā)送周期:To = 2s (秒);下面分別以“原始數(shù)據(jù)分離和序列化”、“接收數(shù)據(jù)和解析數(shù)據(jù)的分離”、“解析數(shù)據(jù)的序列化”三個方面具體闡述作為數(shù)據(jù)接收方的GUI軟件對本發(fā)明的實現(xiàn):原始數(shù)據(jù)分離和序列化:此階段主要目標是收取BDU發(fā)來的所有原始數(shù)據(jù),并根據(jù)快速數(shù)據(jù)或慢速數(shù)據(jù)標識,將數(shù)據(jù)分別放入快速數(shù)據(jù)和慢速數(shù)據(jù)的緩沖,實現(xiàn)分離,但同時要保證數(shù)據(jù)的先后順序。此階段只對快慢數(shù)據(jù)進行簡易的識別,這叫做“預解析”。預解析不對整幀數(shù)據(jù)進行全解析(全解析如:計算校驗和),因為全解析可能涉及數(shù)值運算或數(shù)值類型的轉(zhuǎn)換,會占用更多CPU時間,甚至導致接收延時。由于是串行口,發(fā)來的數(shù)據(jù)中有快速數(shù)據(jù)也有慢速數(shù)據(jù),快慢速數(shù)據(jù)還可能以非預期的時間間隔出現(xiàn)在收到的數(shù)據(jù)序列中,如圖3所示,圖3中以粗線框表示慢速數(shù)據(jù),以細線框表示快速數(shù)據(jù),箭頭表示時間經(jīng)過??梢钥吹?,收到的多幀快速數(shù)據(jù)中,不時地插入了慢速數(shù)據(jù)幀。圖中最右側(cè)預期到達的快速數(shù)據(jù),要等到先于它的慢速數(shù)據(jù)傳完后才會出現(xiàn)。這種現(xiàn)象在廣泛使用的“定期發(fā)送+變長指令”的通訊協(xié)議中,很容易出現(xiàn),原因是多種的:可能與協(xié)議定義、鄰幀長度最大變化率、BDU任務輕重、BDU數(shù)據(jù)傳送控制方式等有關。對于本發(fā)明和現(xiàn)有算法,這種原始數(shù)據(jù)序列的處理,效率上是一樣的,但后期的處理會有本質(zhì)不同。數(shù)據(jù)接收按照RS-232串行口的硬件情況分為兩種方案:1.串行口底層沒有收發(fā)緩沖,如基于單片機、DSP等處理器的系統(tǒng),其串行口通訊機制通常為收到I個字節(jié)就引發(fā)串口中斷,GUI軟件編寫串口中斷處理程序,以單字節(jié)為單位順序收取串口數(shù)據(jù),放入數(shù)組形式的緩沖形成原始數(shù)據(jù)列。2.串行口底層有收發(fā)緩沖,如基于PC或嵌入式操作系統(tǒng)的環(huán)境,其串行口端本身已設有緩沖,數(shù)據(jù)被緩沖一定量后才會引發(fā)中斷/事件,中斷/事件處理程序接收數(shù)據(jù),接收程序通常一次收到不止一個字節(jié)的數(shù)據(jù)。如果按照方案1,現(xiàn)有多數(shù)的例程,都會將開發(fā)者指向判斷數(shù)據(jù)是否結束的方向去進行開發(fā),也就是接收程序必須知道一幀數(shù)據(jù)何時結束,才能將整幀數(shù)據(jù)放入緩沖。這勢必要么在協(xié)議中增加幀控制的內(nèi)容,減少數(shù)據(jù)幀攜帶的有效數(shù)據(jù)量;要么在接收階段就要對數(shù)據(jù)進行全解析,用以識別結束符和校驗和,降低了收發(fā)效率,也違背了本階段的設計初衷——先收取數(shù)據(jù)并暫緩解析。如果按照方案2,雖可以避免方案I中要對數(shù)據(jù)全解析的情況,但如果不設置多個緩沖,就無法一次性收取多個數(shù)據(jù)幀,多數(shù)的現(xiàn)有技術,是使用數(shù)組(Array)或結構數(shù)組(Struct Array)等數(shù)據(jù)結構作為接收緩沖,而數(shù)組初始化時必須指定大小,如果數(shù)據(jù)巾貞是變長的,這個大小就很難確定。數(shù)組元素的訪問控制通常是通過指針或計數(shù)器來實現(xiàn)的,如果指針或計數(shù)器的值由于某種原因?qū)е洛e誤,上次取出數(shù)據(jù)的位置將無從得知,嚴重的,會直接導致系統(tǒng)崩潰......也違背了本階段設計的初衷——數(shù)據(jù)正確且序列化。鑒于上述分析方案I及方案2數(shù)據(jù)接收方案遇到的問題,故本發(fā)明圖1提出了使用單向隊列(Queue)結構作為數(shù)據(jù)接收緩沖區(qū)的思想。隊列結構最顯著的特點就是序列化:入隊的數(shù)據(jù),必須遵循“先進先出”的原則,即最先入隊的數(shù)據(jù),取用時,最先出隊,不可從中間出隊。應用隊列結構有以下幾點好處,可有效避免上述方案I及方案2中的弊端。由于隊列結構只允許在隊尾插入數(shù)據(jù),隊頭取出數(shù)據(jù),可以很簡易的保證數(shù)據(jù)的序列化。避免使用額外的訪問控制,如:訪問指針,從根本上杜絕誤插和誤取的訪問錯誤。由于隊列“只插隊尾”的特性,可一次將收到的多條數(shù)據(jù)全部插入隊列,減少訪問次數(shù)。隊列可以初始化大小,也可以根據(jù)硬件資源實際情況不指定大小,溢出后系統(tǒng)自動追加連續(xù)內(nèi)存空間到隊尾,隊列的長度變化對訪問控制沒有任何影響。泛型隊列“QueueCD”更可以自由設置CD為自定義數(shù)據(jù)類型,其成員將嚴格按照指定的數(shù)據(jù)類型存放。本發(fā)明利用泛型隊列這一特性,將接收數(shù)據(jù)和解析數(shù)據(jù)完全分開。設置兩個隊列緩沖,將“快速數(shù)據(jù)”和“慢速數(shù)據(jù)”經(jīng)過“預解析”后分別存放,預解析的方法又可分為以下常見的兩種方式:采用輪詢法以Tw周期主動檢測并接收串行口數(shù)據(jù),預解析數(shù)據(jù)命令字及長度;
采用中斷、事件或消息等機制被動觸發(fā)接收數(shù)據(jù),預解析數(shù)據(jù)命令字及長度。無論采用哪種預解析方式,上述方案均可以實現(xiàn)預解析。按照預解析命令字,識別快速或慢速數(shù)據(jù);按照預解析長度,將數(shù)據(jù)分別入隊,如圖4所示。但,無論采用方案I或方案2,都會碰到最后一幀數(shù)據(jù)不完整的情況。如果采用方案2,由于串行口底層受控于嵌入式系統(tǒng),本身具備緩沖機制,預解析處理可在串行口緩沖處進行,若發(fā)現(xiàn)最后一幀數(shù)據(jù)不完整,可提前獲知并不予入接收隊,待接收完整后再入接收隊。如果采用方案1,則需要為數(shù)據(jù)接收設置一個額外緩沖。該緩沖在接收緩沖之前,相當于方案2中嵌入式系統(tǒng)提供的串行口緩沖,該緩沖也可利用隊列原理實現(xiàn)??梢酝ㄟ^實時查詢額外緩沖(隊列原理)成員數(shù)量得知是否小于數(shù)據(jù)幀大小,若小于,則該幀會等到下次接收完整后再入接收隊。接收數(shù)據(jù)和解析數(shù)據(jù)的分離:數(shù)據(jù)接收正確后,就會開始數(shù)據(jù)的全解析過程。全解析過程一般需要以下幾步:1.按通訊協(xié)議,判斷數(shù)據(jù)幀是否合法,不合法的棄之不用。這里要對校驗和進行計算和比對操作,這也是可靠性方面的必需要求;2.按通訊協(xié)議,對所有有效數(shù)據(jù)進行提取、數(shù)值轉(zhuǎn)換、賦值等處理;3.即使有直接的賦值操作,但多數(shù)解析數(shù)據(jù)是有序列化需求的,要對解析數(shù)據(jù)序列化。多數(shù)情況,數(shù)據(jù)的解析過程要求和數(shù)據(jù)的接收過程盡可能的同步,尤其是快速數(shù)據(jù),對這種實時性要求就更加強烈。由于解析數(shù)據(jù)和接收數(shù)據(jù)存在本質(zhì)區(qū)別,本發(fā)明提出一種將解析數(shù)據(jù)與接收數(shù)據(jù)分開的思想。這為將來解析過程的多線程應用提供可能,可以更充分地利用系統(tǒng)資源提高解析過程的效率。利用隊列的易存取性,實現(xiàn)過程也較為簡單:將現(xiàn)有接收的正確數(shù)據(jù)整幀出隊一解析。由于快速數(shù)據(jù)和慢速數(shù)據(jù)已在接收時通過預解析分離,使得快速數(shù)據(jù)可以在解析時單獨編寫算法,并優(yōu)先得到處理,提高解析速度。接收數(shù)據(jù)與解析數(shù)據(jù)分離后,就可以單獨考慮數(shù)據(jù)的解析,由于緩沖的存在,每幀數(shù)據(jù)的解析不必和接收完全同步,也可能在收完第2幀數(shù)據(jù)后,第I幀數(shù)據(jù)才解析完。快速數(shù)據(jù)通常都是毫秒級的時間間隔,如果是用于顯示的即時數(shù)據(jù),按目前多數(shù)的設計需求,是允許顯示與數(shù)據(jù)處理間存在可接受的時間差的。既然如此,就為數(shù)據(jù)的接收和解析異步發(fā)生提供了依據(jù)和設計機制的機會,而本階段需達成的目標,即為:將數(shù)據(jù)接收和解析異步,提高解析效率使異步誤差可接受并不累積,做到宏觀上數(shù)據(jù)接收和解析的同步。現(xiàn)代程序開發(fā)技術提出了多線程的概念,將任務打散成小的任務段,使得任務在微觀上是分散順序被處理的(不同時,相當于異步),但宏觀上是完整和同步的。因此,將多線程技術應用在數(shù)據(jù)解析過程是比較適合的。下面就分單線程和多線程兩種不同的軟件運行方式來闡述數(shù)據(jù)解析的過程:單線程,流程圖如圖5所示:所謂單線程,就是“單流程”,“單任務”之意,多數(shù)的非嵌入式單片機系統(tǒng)都屬于此種情況。單線程意味著數(shù)據(jù)的接收和解析均在一個順序的流程中進行,但這并不意味著解析過程無法提高效率。對于單線程,除了解析程序本身的優(yōu)化外,還可以通過類似于多線程的中斷來保證解析的宏觀同步。例如通過一個以Tw為定時周期的定時器中斷來定期輪詢解析需求——如果有接收數(shù)據(jù)可用,則通過定時器來觸發(fā)解析過程。當然這里存在一個大的前提就是:接收數(shù)據(jù)和解析數(shù)據(jù)必須分開存儲。眾所周知:中斷服務程序必需是高效的,數(shù)值計算轉(zhuǎn)換的過程是不宜在中斷服務中出現(xiàn)的。那么,在中斷服務程序中能做什么呢?答案很明顯:(I)發(fā)現(xiàn)是否有數(shù)據(jù)被接收,這通過查詢接收緩沖的成員數(shù)量可得知,由于緩沖是隊列,無須像數(shù)組那樣計算和查詢訪問標志,只要按照預解析的命令字和長度出隊即可! (2)建立一個出隊數(shù)據(jù)的一維數(shù)組,此數(shù)組的大小是可以預知的,并在此數(shù)組有數(shù)據(jù)時設置一個標志,告訴主循環(huán)中的解析函數(shù)目前有數(shù)據(jù)需要解析。當主循環(huán)輪詢到此標志后,調(diào)用解析函數(shù)實現(xiàn)數(shù)據(jù)的解析并清除標志,為下一幀數(shù)據(jù)解析做準備。這種方式產(chǎn)生的數(shù)據(jù)處理和顯示采樣之間的誤差是變長的,理論上取決于定時器最長定時(Tw)+主循環(huán)周期(Tp),而最壞時間是完全可以預知的,并且都是毫秒級的。引入中斷機制,可以大大提高單線程程序處理過程的效率,從而提高整體設計的實時性。多線程:多線程處理的過程,和單線程中“定時器中斷”的概念極為相似。而多線程又對“定時器中斷”做了擴充一在多任務系統(tǒng)的線程機制控制下,相當于實現(xiàn)了多個“定時器中斷”,而每個“中斷”就是一個線程,利用線程同步機制,可使一個過程中的某一個數(shù)據(jù)被兩個以上的線程處理。這樣做的一個最大的好處,就是使單線程中:數(shù)據(jù)處理和顯示采樣之間誤差=定時器最長定時(Tw) +主循環(huán)周期(Tp)這個變長誤差變得更定長。這是因為“定時器最長定時”由Tw又被打散成每個線程完成的時間片,例如以5ms分配一個線程,這樣完成一個20ms的任務,理論上就需要4個線程,而系統(tǒng)如果支持4個以上的線程,就可使這4個線程的任務在宏觀上以小于20ms的時間提前完成任務,這便使“最壞情況”的時間縮短,而且,線程的運行只跟整個系統(tǒng)的資源和任務輕重有關,多數(shù)情況系統(tǒng)任務不重時,最壞情況的時間基本接近固定。解析數(shù)據(jù)的序列化,如圖6所示。前面的階段的主要目標為如何有效控制數(shù)據(jù)的丟失,而本階段的目標則是根據(jù)顯示要求,提供足夠多的解析數(shù)據(jù)。而這些數(shù)據(jù)同樣需要序列化。只要顯示采樣的周期接近或等于解析數(shù)據(jù)提供的周期,波形的顯示就足夠細膩和接近真實波形。但為了不產(chǎn)生錯顯,解析的數(shù)據(jù)仍然需要序列化,這里,同樣采取泛型隊列的機制來實現(xiàn)。解析后的數(shù)據(jù)以結構或其他數(shù)據(jù)格式定期入隊,隊列必須設置最大空間,當數(shù)據(jù)達到最大空間后,如果仍沒有顯示采樣取走隊頭數(shù)據(jù),則隊頭數(shù)據(jù)自動出隊,由于泛型隊列可以接納像結構這樣的整體數(shù)據(jù)作為隊列的一個成員,出隊的數(shù)據(jù)將是一整幀解析數(shù)據(jù),不會造成數(shù)據(jù)間的重疊。如果期間有顯示采樣訪問隊列,則會取走當前的隊頭數(shù)據(jù)。這樣一來,波形的顯示要求只跟顯示采樣有關,可以從一定程度上減少波形在數(shù)據(jù)傳輸上的失真。本發(fā)明由于引入了緩沖,BDU發(fā)送的真實波形數(shù)據(jù)到⑶I顯示終端最終顯示出來,是有一定的相位誤差的。產(chǎn)生相位誤差的原因是數(shù)據(jù)并不是一被接收就送去顯示,而是被解析并緩沖一定量后才送去顯示,相位誤差大小直接與緩沖大小成正比。雖然本發(fā)明目前有此固有缺陷,但緩沖的大小可以控制在合理范圍內(nèi),所以產(chǎn)生的相位誤差也是相對固定和可控的,不會累積,這和前述的現(xiàn)有技術的第2個缺點比起來,長時間運行后的效果是會有很大區(qū)別的。
縱觀現(xiàn)有其他領域的顯示技術,都會和真實數(shù)據(jù)存在一定的延時,只要該延時不累積,且在能接受的范圍內(nèi),都會用來取代類似現(xiàn)有技術的第2個缺點的算法。實施本發(fā)明的隊列序列化式處理數(shù)據(jù)的方法和裝置,具有以下有益的技術效果:a)利用隊列分別記錄快速數(shù)據(jù)和慢速數(shù)據(jù),使數(shù)據(jù)序列化,不會重疊或覆蓋;b)將數(shù)據(jù)的收發(fā)和解析分離,用多線程思想處理解析,并同樣保證序列化;c)使用隊列特有的特性,使數(shù)據(jù)的訪問控制變得簡易、高效;d)數(shù)據(jù)不丟失,快速數(shù)據(jù)處理過程加快,提高實時性;e)嵌入式系統(tǒng)或非嵌入式系統(tǒng)均適用。上面結合附圖對本發(fā)明的實施例進行了描述,但是本發(fā)明并不局限于上述的具體實施方式
,上述的具體實施方式
僅僅是示意性的,而不是限制性的,本領域的普通技術人員在本發(fā)明的啟示下,在不脫離本發(fā)明宗旨和權利要求所保護的范圍情況下,還可做出很多形式,這些均屬于本發(fā)明的保護之內(nèi)。
權利要求
1.一種隊列序列化式處理數(shù)據(jù)的方法,其特征在于,包括: 51.在通訊口處設置快速緩沖區(qū)以及慢速緩沖區(qū); 52.接收輸入的原始數(shù)據(jù),并按預解析分成快速數(shù)據(jù)以及慢速數(shù)據(jù),并以單向隊列結構相應放入所述的快速緩沖區(qū)以及慢速緩沖區(qū),形成數(shù)據(jù)幀; 53.判斷所述的數(shù)據(jù)幀是否合法,如果合法,進入步驟S4,如果不合法,進入步驟S31,將所述的數(shù)據(jù)幀棄之不用; 54.將所述的數(shù)據(jù)幀以隊系列化的方式出隊解析并顯示。
2.根據(jù)權利要求1所述的隊列序列化式處理數(shù)據(jù)的方法,其特征在于,所述預解析,具體是:采用輪詢法周期性主動檢測并接收串行口數(shù)據(jù),獲取數(shù)據(jù)命令字及長度。
3.根據(jù)權利要求1所述的隊列序列化式處理數(shù)據(jù)的方法,其特征在于,所述預解析,具體是:采用中斷、事件或消息等機制被動觸發(fā)接收數(shù)據(jù),獲取數(shù)據(jù)命令字及長度。
4.根據(jù)權利要求1所述的隊列序列化式處理數(shù)據(jù)的方法,其特征在于,所述通訊口為:RS-232 串行口通訊、I2C、SP1、CAN。
5.根據(jù)權利要求1所述的隊列序列化式處理數(shù)據(jù)的方法,其特征在于,所述的接收多隊列數(shù)據(jù)時,步驟S2與步驟S4可同時進行。
6.一種隊列序列化式處理數(shù)據(jù)的裝置,用于實現(xiàn)權利要求1所述的方法,其特征在于,包括: 緩沖區(qū)設置單元:用于在通訊口處設置快速緩沖區(qū)以及慢速緩沖區(qū); 原始數(shù)據(jù)分離單元:與所述的緩沖區(qū)設置單元相連,用于接收輸入的原始數(shù)據(jù),并按預解析分成快速數(shù)據(jù)以及慢速數(shù)據(jù),并以單向隊列結構相應放入所述的快速緩沖區(qū)以及慢速緩沖區(qū),形成數(shù)據(jù)幀; 數(shù)據(jù)幀判斷單元:與所述的原始數(shù)據(jù)分離單元相連,用于判斷所述的數(shù)據(jù)幀是否合法; 數(shù)據(jù)解析單元:與所述的數(shù)據(jù)幀判斷單元相連,用于將所述的數(shù)據(jù)幀以隊系列化的方式出隊解析并顯示。
7.根據(jù)權利要求6所述的隊列序列化式處理數(shù)據(jù)的裝置,其特征在于,所述預解析,具體是:采用輪詢法周期性主動檢測并接收串行口數(shù)據(jù),獲取數(shù)據(jù)命令字及長度。
8.根據(jù)權利要求6所述的隊列序列化式處理數(shù)據(jù)的裝置,其特征在于,所述預解析,具體是:采用中斷、事件或消息等機制被動觸發(fā)接收數(shù)據(jù),獲取數(shù)據(jù)命令字及長度。
9.根據(jù)權利要求6所述的隊列序列化式處理數(shù)據(jù)的裝置,其特征在于,所述通訊口為:RS-232 串行口通訊、I2C、SP1、CAN。
10.根據(jù)權利要求6所述的隊列序列化式處理數(shù)據(jù)的裝置,其特征在于,所述的接收多隊列數(shù)據(jù)時,所述的原始數(shù)據(jù)分離單元接收數(shù)據(jù)與所述的數(shù)據(jù)解析單元解析數(shù)據(jù)可同步進行。
全文摘要
本發(fā)明公開了一種隊列序列化式處理數(shù)據(jù)方法,包括S1.在通訊口處設置快速緩沖區(qū)以及慢速緩沖區(qū);S2.接收輸入的原始數(shù)據(jù),并按預解析分成快速數(shù)據(jù)以及慢速數(shù)據(jù),并以單向隊列結構相應放入所述的快速緩沖區(qū)以及慢速緩沖區(qū),形成數(shù)據(jù)幀;S3.判斷所述的數(shù)據(jù)幀是否合法,如果合法,進入步驟S4,如果不合法,進入步驟S31,將所述的數(shù)據(jù)幀棄之不用;S4.將所述的數(shù)據(jù)幀以隊列化的方式出隊解析并顯示。本發(fā)明還公開了隊列序列化式處理數(shù)據(jù)裝置。本發(fā)明隊列序列化式處理數(shù)據(jù)方法和裝置以隊列序列化式來處理數(shù)據(jù),數(shù)據(jù)處理過程較快,提高實時性。
文檔編號G06F17/30GK103186608SQ20111045619
公開日2013年7月3日 申請日期2011年12月30日 優(yōu)先權日2011年12月30日
發(fā)明者雷聲 申請人:北京誼安醫(yī)療系統(tǒng)股份有限公司