超聲測量系統的模塊交互方法和超聲測量系統的製作方法
2023-12-01 13:19:06 1
專利名稱:超聲測量系統的模塊交互方法和超聲測量系統的製作方法
技術領域:
本發明涉及計算機技術領域,具體涉及超聲測量系統的模塊交互方法和超聲測量系統。
背景技術:
面向對象程序開發方式是目前主流的程序開發方式之一,其優點是容易實現模塊化,缺點是模塊之間的交互比較困難。目前,超聲測量系統多採用面向對象程序開發方式設計,由於超聲測量系統涉及的模塊通常較多,各個模塊之間的交互變得複雜,例如,經常要進行雙向通信、一對多的通信等。現有通過調用函數接口的方法進行交互極易導致邏輯混亂,以至整個系統難以擴展和維護。
發明內容
本發明實施例提供超聲測量系統的模塊交互方法和超聲測量系統,以簡化超聲測量系統的模塊間交互複雜度。為解決上述技術問題,本發明實施例提供以下技術方案一種超聲測量系統的模塊交互方法,所述超聲測量系統中包括第一模塊和至少一個第二模塊,所述方法包括第一模塊創建第一消息類型;所述第一模塊生成所述第一消息類型對應的第一消息管理組件,並為所述第一消息管理組件分配第一組件標籤;所述第一模塊生成符合所述第一消息類型的第一消息;所述第一模塊基於所述第一組件標籤,調用所述第一消息管理組件發送所述第一消息;若第二模塊在所述第一消息管理組件進行了註冊,則所述第二模塊通過所述第一消息管理組件接收所述第一消息。一種超聲測量系統,所述超聲測量系統中包括第一模塊和至少一個第二模塊,所述第一模塊,用於創建第一消息類型;生成所述第一消息類型對應的第一消息管理組件,並為所述第一消息管理組件分配第一組件標籤;生成符合所述第一消息類型的第一消息;基於所述第一組件標籤,調用所述第一消息管理組件發送所述第一消息;所述第二模塊,用於在所述第一消息管理組件進行了註冊後,通過所述第一消息管理組件接收所述第一消息。由上可見,本發明實施例通過引入消息管理組件實現了消息發送模塊和消息接收模塊之間的解耦。雖然對某消息感興趣的模塊可能有多個,但消息發送模塊無需獲知有哪些模塊需要接收該消息。而每個對指定類型消息感興趣的模塊都可通過該消息類型對應的消息管理組件接收符合該指定類型的消息,這樣就有利於簡化超聲測量系統的模塊間交互複雜度。
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。圖Ι-a是一種模塊間一對一單向通信方式示意圖;圖Ι-b是一種模塊間一對多單向通信方式示意圖;圖1-c是一種模塊間一對多雙向通信方式示意圖;圖2是本發明實施例提供的一種超聲測量系統的模塊交互方法的流程示意圖;圖3_a是本發明實施例提供的一種引入消息管理組件後的一對多單向通信方式示意圖;圖3_b是本發明實施例提供的一種引入消息管理組件後的多對多單向通信方式示意圖;圖3-c本發明實施例提供的一種超聲測量系統的模塊交互示意圖;圖4本發明實施例提供的一種超聲測量系統的示意圖。
具體實施例方式本發明實施例提供超聲測量系統的模塊交互方法和超聲測量系統。下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基於本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬於本發明保護的範圍。首先介紹超聲測量系統中常見的功能模塊,一般包括圖形繪製模塊、圖元生成模塊、圖元組合模塊、計算模塊、單位轉換模塊、結果顯示模塊、數據管理模塊、菜單生成模塊、 菜單操控模塊等等。現有技術方案難以解決超聲測量系統中模塊眾多,模塊間交互複雜的問題。現有技術的模塊間交互一般通過直接調用接口函數實現,這是一種典型的一對一單向通信方式。直接調用接口函數的主要缺點是1)參與交互的雙方直接關聯在一起,消息發送端知道消息接收端。2)如果消息接收端在接收到消息發送端發送的消息後,還需要向其反饋新消息,就會導致循環依賴。模塊間可能存在如下幾種交互方式例如圖Ι-a所示,模塊間一對一單向通信方式,消息發送模塊向某一個消息接收模塊發送指令或數據。例如圖Ι-b所示,模塊間一對多單向通信方式,消息發送模塊向多個消息接收模塊發送指令或數據。例如圖1-c所示,模塊間雙向通信方式,模塊間互發指令或數據。下面通過具體實施例,來介紹本發明方案如何簡化超聲測量系統模塊之間的交互複雜度。
本發明超聲測量系統的模塊交互方法的一個實施例,其中,該超聲測量系統中包括第一模塊和至少一個第二模塊,方法可包括第一模塊創建第一消息類型;第一模塊生成第一消息類型對應的第一消息管理組件,並為第一消息管理組件分配第一組件標籤;第一模塊生成符合第一消息類型的第一消息;第一模塊基於第一組件標籤,調用第一消息管理組件發送第一消息;若第二模塊在第一消息管理組件進行了註冊,則第二模塊通過第一消息管理組件接收第一消息。參見圖2、具體步驟可包括201、第一模塊創建第一消息類型;其中,若第一模塊後續需發送某種類型的消息,則其可先創建對應的消息類型 (為便於引述,稱之為第一消息類型)。202、第一模塊生成第一消息類型對應的第一消息管理組件,並為第一消息管理組件分配第一組件標籤;其中,第一消息管理組件可用於管理第一模塊發送的符合第一消息類型的消息。 第一組件標籤是用於區分該消息管理組件的編譯器唯一標示符,利用第一組件標籤可查找到該第一消息管理組件。在一種實施方式中,第一消息管理組件可為一個單例消息管理組件(即第一單例消息管理組件),進一步的,第一消息管理組件可為一個泛型單例消息管理組件(第一泛型單例消息管理組件)。其中,若第一模塊生成的第一消息管理組件是一個泛型的單例對象, 由於單例能夠增強易用性,泛型能夠增強用戶可定製性,因此,泛型單例消息管理組件能夠增強其應用的靈活性,更好的適應不同應用場景的需要。第一模塊可在創建第一消息類型後,自動的生成第一消息類型對應的第一消息管理組件,並為第一消息管理組件分配第一組件標籤,以實現消息管理組件建立的自動化。在一種實施方式中,生成某種消息類型對應的消息管理組件的接口聲明例如可如下
template〈typename tagName, typename signalType>
class Signal: public Singleton<Signal >
//繼承自單例模板
public:
typedef boost::signals2: :signal SigType; //消息類型模板typedef boost: signals2 connection ConType; //連接類型模板 typedef typename SigType::slot—type SlotType; //槽類型 public:
ConType Connect ( const SlotType& slot); //連接消息 SigType& Raise ( ); //觸發消息
void Disconnect ( const SlotType& slot); //斷開指定連接 void DisconnectAll ( ); //斷開所有消息其中,tagName為消息管理組件的標籤,signalType為消息類型。提供的接口有連接消息、觸發消息、斷開指定的連接、斷開所有連結。消息管理組件繼承了單例模板類,該類被實現為可自動生成模板。203、第一模塊生成符合第一消息類型的第一消息;例如當第一模塊有事件發生需要通知其他模塊時,可生成符合第一消息類型的第一消息,以便通過第一消息來通知相關信息。204、第一模塊基於第一組件標籤,調用第一消息管理組件發送第一消息;205、若第二模塊在第一消息管理組件進行了註冊,則第二模塊通過第一消息管理組件接收第一消息。在一種實施方式中,在第一消息管理組件生成之後,第二模塊可根據第一消息類型查找到第一消息管理組件(第一消息管理組件的標籤例如是全局唯一的);並可將接收符合第一消息類型的消息的函數接口註冊到第一消息管理組件。例如若第二模塊在第一消息管理組件進行了註冊後,則第一消息管理組件接收到來自第一模塊的符合第一消息類型的第一消息,第一消息管理組件將該第一消息轉發給註冊了對應函數接口的第二模塊,第二模塊便可通過第一消息管理組件接收該第一消息。可以看出,通過引入消息管理組件實現了消息發送模塊和消息接收模塊之間的解耦。雖然對第一消息感興趣的模塊可能有多個,但第一模塊無需獲知有哪些模塊需要接收第一消息。而每個對指定類型消息感興趣的模塊都可以通過該消息類型對應的消息管理組件接收符合該指定類型的消息。類似的,第二模塊也可創建第二消息類型;生成第二消息類型對應的第二消息管理組件,為第二消息管理組件分配第二組件標籤;生成符合第二消息類型的第二消息;第二模塊基於第二組件標籤,調用第二消息管理組件發送第二消息;若第一模塊(和/或其它模塊)在第二消息管理組件進行了註冊,則第一模塊(和/或其它模塊)通過第二消息管理組件接收所述第二消息。可以理解,消息數據管理功能對用戶是透明的。消息數據的管理可使用關聯容器。 以名字為關鍵字在關聯容器中保存消息接收端的信息,執行斷開動作時按照關鍵字在關聯容器中找到連接信息,然後執行斷開操作。其中,在消息管理組件生成時需要用到單例模板,其接口聲明例如可為template class Singleton
public:
typedef T* pSelfType; //指向消息管理組件的指針 static ρ SelfType GetInstance ; protected:
Singleton ( ) {} Singleton(const Singleton&); Singleton& operator=(const Singleton&); virtual -Singleton ( ) {}
};可以理解,藉助上述模板生成的消息管理組件具有全局可訪問的功能,無論是消息接收端還是消息發送端,只通過單例模板提供的接口就可以調用消息管理組件。參見圖3-a,圖3-a描述了引入消息管理組件後的一對多單向通信情景。參見圖3_b,圖3_b描述了引入消息管理組件後的三個模塊間一對多雙向通信情景。其中,模塊A發送消息由消息管理組件1負責管理,接受該消息的模塊只需要和消息管理組件1交互。模塊B和模塊C發送的消息分別由消息管理組件2和消息管理組件3負責。 反之,模塊A作為接收消息模塊時不需要和模塊B以及模塊C直接交互。參見圖3-c,圖3-c為一種超聲測量系統的模塊間交互示意圖,其中,矩形表示模塊,橢圓形表示消息管理組件,圖中只列出了間接交互關係,即通過消息管理組件進行通信的關係。而較為簡單的一對一單向通信在不破壞模塊性的前提下可使用接口實現。圖3-c中一對多交互包括菜單刷新、設置解析度、模式設置,這類交互方式表現為命令的發送和執行。基於消息管理組件的交互方式能解決一個命令觸發一族動作的問題,菜單和按鍵操作多數屬於這種情況。設置菜單項選中標示是雙向通信方式,每個菜單項都可給其它菜單項發送消息,基於消息管理組件的交互方式能解決循環依賴問題,每個菜單項都不需要知道其他菜單項,只需要把消息傳遞給給對應的消息管理組件。測量觸發、測量菜單自動摺疊、更新圖形、更新測量結果是一對一的交互方式,在超聲測量系統中,沒有使用直接調用接口函數而是通過消息管理組件間接調用。一對一單向通信使用消息管理組件而不是直接調用接口是為解決以下問題1)消息發送端和消息接收端處於分層架構中不同的層次,發送端在底層而接受者在上層。模塊調用的一般規則是上層模塊調用底層模塊,反之就比較困難。比如測量消息的發送是從菜單項模塊到圖元管理模塊,但是菜單項模塊處於菜單模塊繼承體系的底層難以調用其它模塊的接口。2)模塊分離的需要。圖元管理、圖形繪製窗體、基本測量、組合測量都是屬於測量圖形模塊,該模塊的邏輯關係比較穩定。結果顯示窗體屬於測量結果模塊,這部分屬於界面層經常變化。通過消息管理組件實現各模塊間接通信,把變化較穩頻繁的界面層和比較穩定的領域對象層分離。圖3-c中使用了大量的消息管理組件,每個消息管理組件都對應有一個唯一的組件標籤。按組件標籤定義的消息管理組件例如可為//更新圖形typedef pattern:Signal SigUpdateGraphRect ;H更新結果typedef pattern:Signal SigUpdateResultRect ;//更新圖像深度typedef pattern::Signal SigUpdateImageDepth ;H設置測量光標typedef pattern::Signal < struct SetMeaCursor,void (const std::string&) > SigSetMeaCursor ;//顯示結果窗體typedef pattern::Signal SigResultWindowShow ;H激活某一測量項typedef pattern::Signal < struct MenuMessage,void (const mea::MenuMessage&) > SigMenuMessage ;//更新菜單窗體typedef pattern::Signal SigMenuShowAll ;//測量菜單摺疊typedef pattern::Signal SigMenuAutoCloseFolder ;//組合測量子項選中typedef pattern::Signal SigMenuIndexSelected ;Il成像模式設置typedef pattern::Signal SigMenuModeSetting ;//菜單項選中typedef pattern::Signal SigMenuButtonColorInit ;.......................................在實際應用中,消息管理組件的類型都可在頭文件TypeTag. h中定義,對消息感興趣的模塊只要包含該文件,然後連接相應的消息類型即可。文件中消息管理組件標籤的定義和消息管理組件類型的定義都是在編譯期進行,不會佔用運行期內存和CPU資源。由上可見,本實施例通過引入消息管理組件實現了消息發送模塊和消息接收模塊之間的解耦。雖然對某消息感興趣的模塊可能有多個,但消息發送模塊無需獲知有哪些模塊需要接收該消息。而每個對指定類型消息感興趣的模塊都可以通過該消息類型對應的消息管理組件接收符合該指定類型的消息,這樣就有利於簡化超聲測量系統的模塊間交互複雜度。並且,超聲測量系統眾多模塊間的交互時所使用的消息管理組件都可以自適應生成,不需要用戶寫額外代碼。此外,引入消息管理組件有利於適應需求變化,例如菜單和按鍵模塊、測量圖形模塊、測量結果模塊都是用戶經常使用,需要經常變動的。不同國家和地區甚至不同的醫院都可能形成一套自己的操作習慣,通過鬆耦合的消息管理組件實現交互,可以方便的修改操作流程而無需改變底層的邏輯模塊。例如用戶要求組合測量結束時菜單項不要自動關閉, 則只要菜單窗體和文件夾自動關閉消息管理組件斷開即可。參見圖4、本發明實施例還提供一種超聲測量系統,超聲測量系統中包括第一模塊 410和至少一個第二模塊420,第一模塊410,用於創建第一消息類型;生成第一消息類型對應的第一消息管理組件,並為第一消息管理組件分配第一組件標籤;生成符合第一消息類型的第一消息;基於第一組件標籤,調用第一消息管理組件發送第一消息;第二模塊420,用於在第一消息管理組件進行了註冊後,通過第一消息管理組件接收第一消息。在一種應用場景下,第一模塊410可具體用於,創建第一消息類型;生成第一消息類型對應的第一單例消息管理組件,並為第一消息管理組件分配第一組件標籤;生成符合第一消息類型的第一消息;基於第一組件標籤,調用第一消息管理組件發送第一消息。在一種應用場景下,第一模塊410可具體用於,創建第一消息類型;生成第一消息類型對應的第一泛型單例消息管理組件,並為第一消息管理組件分配第一組件標籤;生成符合第一消息類型的第一消息;基於第一組件標籤,調用第一消息管理組件發送第一消息。生成第一消息類型對應的第一泛型單例消息管理組件。在一種應用場景下,第二模塊420可具體用於,根據第一消息類型查找到第一消息管理組件,將接收符合第一消息類型的消息的函數接口註冊到第一消息管理組件,通過第一消息管理組件接收第一消息。在一種應用場景下,第二模塊420可還可用於,創建第二消息類型;生成第二消息類型對應的第二消息管理組件,並為第二消息管理組件分配第二組件標籤;生成符合第二消息類型的第二消息;基於第二組件標籤,調用第二消息管理組件發送第二消息;第一模塊410還用於,在第二消息管理組件註冊後,通過第二消息管理組件接收第二消息。可以理解,本實施例的超聲測量系統的各個功能模塊的功能可以根據上述方法實施例中的方法具體實現,其具體實現過程可參照上述實施例中的相關描述,此處不再贅述。需要說明的是,對於前述的各方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領域技術人員應該知悉,本發明並不受所描述的動作順序的限制,因為依據本發明,某些步驟可以採用其他順序或者同時進行。其次,本領域技術人員也應該知悉,說明書中所描述的實施例均屬於優選實施例,所涉及的動作和模塊並不一定是本發明所必須的。在上述實施例中,對各個實施例的描述都各有側重,某個實施例中沒有詳述的部分,可以參見其他實施例的相關描述。綜上,本發明實施例通過引入消息管理組件實現了消息發送模塊和消息接收模塊之間的解耦。雖然對某消息感興趣的模塊可能有多個,但消息發送模塊無需獲知有哪些模塊需要接收該消息。而每個對指定類型消息感興趣的模塊都可以通過該消息類型對應的消息管理組件接收符合該指定類型的消息,這樣就有利於簡化超聲測量系統的模塊間交互複雜度。並且,超聲測量系統眾多模塊間的交互時所使用的消息管理組件都可以自適應生成,不需要用戶寫額外代碼。此外,引入消息管理組件有利於適應需求變化,例如菜單和按鍵模塊、測量圖形模塊、測量結果模塊都是用戶經常使用,需要經常變動的。不同國家和地區甚至不同的醫院都可能形成一套自己的操作習慣,通過鬆耦合的消息管理組件實現交互,可以方便的修改操作流程而無需改變底層的邏輯模塊。例如用戶要求組合測量結束時菜單項不要自動關閉, 則只要菜單窗體和文件夾自動關閉消息管理組件斷開即可。本領域普通技術人員可以理解上述實施例的各種方法中的全部或部分步驟是可以通過程序來指令相關的硬體來完成,該程序可以存儲於一計算機可讀存儲介質中,存儲介質例如可以包括只讀存儲器、隨機存儲器、磁碟或光碟等等。以上對本發明實施例所提供的超聲測量系統的模塊交互方法和超聲測量系統進行了詳細介紹,本文中應用了具體個例對本發明的原理及實施方式進行了闡述,以上實施例的說明只是用於幫助理解本發明的方法及其核心思想;同時,對於本領域的一般技術人員,依據本發明的思想,在具體實施方式
及應用範圍上均會有改變之處,綜上,本說明書內容不應理解為對本發明的限制。
權利要求
1.一種超聲測量系統的模塊交互方法,其特徵在於,所述超聲測量系統中包括第一模塊和至少一個第二模塊,所述方法包括第一模塊創建第一消息類型;所述第一模塊生成所述第一消息類型對應的第一消息管理組件,並為所述第一消息管理組件分配第一組件標籤;所述第一模塊生成符合所述第一消息類型的第一消息;所述第一模塊基於所述第一組件標籤,調用所述第一消息管理組件發送所述第一消息;若第二模塊在所述第一消息管理組件進行了註冊,則所述第二模塊通過所述第一消息管理組件接收所述第一消息。
2.根據權利要求1所述的方法,其特徵在於,所述生成所述第一消息類型對應的第一消息管理組件,包括生成所述第一消息類型對應的第一單例消息管理組件。
3.根據權利要求3所述的方法,其特徵在於,所述生成所述第一消息類型對應的第一單例消息管理組件,包括生成所述第一消息類型對應的第一泛型單例消息管理組件。
4.根據權利要求1所述的方法,其特徵在於,第二模塊在所述第一消息管理組件進行註冊,包括第二模塊根據第一消息類型查找到第一消息管理組件;第二模塊將接收符合所述第一消息類型的消息的函數接口註冊到第一消息管理組件。
5.根據權利要求1至4任一項所述的方法,其特徵在於,還包括 所述第二模塊創建第二消息類型;所述第二模塊生成所述第二消息類型對應的第二消息管理組件,並為所述第二消息管理組件分配第二組件標籤;所述第二模塊生成符合所述第二消息類型的第二消息;所述第二模塊基於所述第二組件標籤,調用所述第二消息管理組件發送所述第二消息;若所述第一模塊在所述第二消息管理組件進行了註冊,則所述第一模塊通過所述第二消息管理組件接收所述第二消息。
6.一種超聲測量系統,其特徵在於,所述超聲測量系統中包括第一模塊和至少一個第二模塊,所述第一模塊,用於創建第一消息類型;生成所述第一消息類型對應的第一消息管理組件,並為所述第一消息管理組件分配第一組件標籤;生成符合所述第一消息類型的第一消息;基於所述第一組件標籤,調用所述第一消息管理組件發送所述第一消息;所述第二模塊,用於在所述第一消息管理組件進行了註冊後,通過所述第一消息管理組件接收所述第一消息。
7.根據權利要求6所述的超聲測量系統,其特徵在於,所述第一模塊,具體用於創建第一消息類型;生成所述第一消息類型對應的第一單例消息管理組件,並為所述第一消息管理組件分配第一組件標籤;生成符合所述第一消息類型的第一消息;基於所述第一組件標籤,調用所述第一消息管理組件發送所述第一消息。
8.根據權利要求7所述的超聲測量系統,其特徵在於,所述第一模塊,具體用於創建第一消息類型;生成所述第一消息類型對應的第一泛型單例消息管理組件,並為所述第一消息管理組件分配第一組件標籤;生成符合所述第一消息類型的第一消息;基於所述第一組件標籤,調用所述第一消息管理組件發送所述第一消息。
9.根據權利要求6所述的超聲測量系統,其特徵在於,所述第二模塊具體用於,根據第一消息類型查找到第一消息管理組件,將接收符合所述第一消息類型的消息的函數接口註冊到第一消息管理組件,通過所述第一消息管理組件接收所述第一消息。
10.根據權利要求6至9任一項所述的超聲測量系統,其特徵在於,所述第二模塊還用於,創建第二消息類型;生成所述第二消息類型對應的第二消息管理組件,並為所述第二消息管理組件分配第二組件標籤;生成符合所述第二消息類型的第二消息;基於所述第二組件標籤,調用所述第二消息管理組件發送所述第二消息;所述第一模塊還用於,在所述第二消息管理組件註冊後,通過所述第二消息管理組件接收所述第二消息。
全文摘要
本發明實施例公開了超聲測量系統的模塊交互方法和超聲測量系統。其中,一種超聲測量系統的模塊交互方法,超聲測量系統中包括第一模塊和至少一個第二模塊,方法包括第一模塊創建第一消息類型;第一模塊生成第一消息類型對應的第一消息管理組件,並為第一消息管理組件分配第一組件標籤;第一模塊生成符合第一消息類型的第一消息;第一模塊基於第一組件標籤,調用第一消息管理組件發送第一消息;第二模塊在第一消息管理組件進行了註冊,則第二模塊通過第一消息管理組件接收第一消息。本發明實施例方案有利於簡化超聲測量系統的模塊間交互複雜度。
文檔編號G06F9/46GK102495755SQ20111034329
公開日2012年6月13日 申請日期2011年11月3日 優先權日2011年11月3日
發明者周冬輝, 周國義 申請人:深圳市開立科技有限公司