技術 > com接口
目錄
No. 1
  com接口是指component object mode接口,是微軟定義的標準接口。
  串口叫做串行接口,現在的pc 機一般有兩個串行口com 1 和com 2 。串行口不同於並行口之處在於它的數據和控製信息是一位接一位地傳送出去的。 雖然這樣速度會慢一些,但傳送距離較並行口更長,因此若要進行較長距離的通信時,應使用串行口。通常 com 1 使用的是9 針d 形連接器,也稱之為rs-232接口,而com 2 有的使用的是老式的db25 針連接器,也稱之為rs-422接口,這種接口目前已經很少使用。
  一般機箱有兩個,新機箱有可能衹有一個。筆記本電腦有可能沒有。
  有很多工業儀器將它作為標準通信端口。通信的內容與格式一般附在儀器的用戶說明書中。
  計算機與計算機或計算機與終端之間的數據傳送可以采用串行通訊和並行通訊二種方式。由於串行通訊方式具有使用綫路少、成本低,特別是在遠程傳輸時,避免了多條綫路特性的不一致而被廣泛采用。 在串行通訊時,要求通訊雙方都采用一個標準接口,使不同 的設備可以方便地連接起來進行通訊。 rs-232-c接口(又稱 eia rs-232-c)是目前最常用的一種串行通訊接口。它是在1970年由美國電子工業協會(eia)聯合貝爾係統、 調製解調器廠傢及計算機終端生産廠傢共同製定的用於串行通訊的標 準。它的全名是“數據終端設備(dte)和數據通訊設備(dce)之間 串行二進製數據交換接口技術標準”該標準規定采用一個25個腳的 db25連接器,對連接器的每個引腳的信號內容加以規定,還對各種信 號的電平加以規定。
  (1)接口的信號內容 實際上rs-232-c的25條引綫中有許多是很少使用的,在計算機與終端通訊中一般衹使用3-9條引綫。rs-232-c最常用的9條引綫的信號內容見附表1所示
  (2)接口的電氣特性 在rs-232-c中任何一條信號綫的電壓均為負邏輯關係。即:邏 輯“1”,-5— -15v;邏輯“0” +5— +15v 。噪聲容限為2v。即 要求接收器能識別低至+3v的信號作為邏輯“0”,高到-3v的信號 作為邏輯“1”
  (3) 接口的物理結構 rs-232-c接口連接器一般使用型號為db-25的25芯插頭座,通常插頭在dce端,插座在dte端. 一些設備與pc機連接的rs-232-c接口,因為不使用對方的傳送控製信號,衹需三條接口綫,即“發送數據”、“接收數據”和“信號地”。所以采用db-9的9芯插頭座,傳輸綫采用屏蔽雙絞綫。
  (4)傳輸電纜長度 由rs-232c標準規定在碼元畸變小於4%的情況下,傳輸電纜長度應為50英尺,其實這個4%的碼元畸變是很保守的,在實際應用中,約有99%的用戶是按碼元畸變10-20%的範圍工作的,所以實際使用中最大距離會遠超過50英尺,美國dec公司曾規定允許碼元畸變為10%而得出附表2 的實驗結果。其中1號電纜為屏蔽電纜,型號為decp.no.9107723 內有三對雙絞綫,每對由22# awg 組成,其外覆以屏蔽網。2號電纜為不帶屏蔽的電纜。型號為decp.no.9105856-04是22#awg的四芯電纜。
  1.rs-232-c是美國電子工業協會eia(electronic industry association)製定的一種串行物理接口標準。rs是英文“推薦標準”的縮寫,232為標識號,c表示修改次數。rs-232-c總綫標準設有25條信號綫,包括一個主通道和一個輔助通道,在多數情況下主要使用主通道,對於一般雙工通信,僅需幾條信號綫就可實現,如一條發送綫、一條接收綫及一條地綫。rs-232-c標準規定的數據傳輸速率為每秒50、75、 100、150、300、600、1200、2400、4800、9600、19200波特。rs-232-c標準規定,驅動器允許有2500pf的電容負載,通信距離將受此電容限製,例如,采用150pf/m的通信電纜時,最大通信距離為15m;若每米電纜的電容量減小,通信距離可以增加。傳輸距離短的另一原因是rs-232屬單端信號傳送,存在共地噪聲和不能抑製共模幹擾等問題,因此一般用於20m以內的通信。
  2.rs-485總綫,在要求通信距離為幾十米到上千米時,廣泛采用rs-485 串行總綫標準。rs-485采用平衡發送和差分接收,因此具有抑製共模幹擾的能力。加上總綫收發器具有高靈敏度,能檢測低至200mv的電壓,故傳輸信號能在千米以外得到恢復。 rs-485采用半雙工工作方式,任何時候衹能有一點處於發送狀態,因此,發送電路須由使能信號加以控製。rs-485用於多點互連時非常方便,可以省掉許多信號綫。應用rs-485 可以聯網構成分佈式係統,其允許最多並聯32臺驅動器和32臺接收器。
  以往,pc與智能設備通訊多藉助rs232、rs485、以太網等方式,主要取决於設備的接口規範。但rs232、rs485衹能代表通訊的物理介質層和鏈路層,如果要實現數據的雙嚮訪問,就必須自己編寫通訊應用程序,但這種程序多數都不能符合iso/osi的規範,衹能實現較單一的功能,適用於單一設備類型,程序不具備通用性。在rs232或rs485設備聯成的設備網中,如果設備數量超過2臺,就必須使用rs485做通訊介質,rs485網的設備間要想互通信息衹有通過“主(master)”設備中轉才能實現,這個主設備通常是pc,而這種設備網中衹允許存在一個主設備,其餘全部是從(slave)設備。而現場總綫技術是以iso/osi模型為基礎的,具有完整的軟件支持係統,能夠解决總綫控製、衝突檢測、鏈路維護等問題。...
No. 2
  com接口是指Component Object Mode接口,是微軟定義的標準接口。
  串口叫做串行接口,現在的PC 機一般有兩個串行口COM 1 和COM 2 。串行口不同於並行口之處在於它的數據和控製信息是一位接一位地傳送出去的。 雖然這樣速度會慢一些,但傳送距離較並行口更長,因此若要進行較長距離的通信時,應使用串行口。通常 COM 1 使用的是9 針D 形連接器,也稱之為RS-232接口,而COM 2 有的使用的是老式的DB25 針連接器,也稱之為RS-422接口,這種接口目前已經很少使用。
  一般機箱有兩個,新機箱有可能衹有一個。筆記本電腦有可能沒有。
  有很多工業儀器將它作為標準通信端口。通信的內容與格式一般附在儀器的用戶說明書中。
  計算機與計算機或計算機與終端之間的數據傳送可以采用串行通訊和並行通訊二種方式。由於串行通訊方式具有使用綫路少、成本低,特別是在遠程傳輸時,避免了多條綫路特性的不一致而被廣泛采用。 在串行通訊時,要求通訊雙方都采用一個標準接口,使不同 的設備可以方便地連接起來進行通訊。 RS-232-C接口(又稱 EIA RS-232-C)是目前最常用的一種串行通訊接口。它是在1970年由美國電子工業協會(EIA)聯合貝爾係統、 調製解調器廠傢及計算機終端生産廠傢共同製定的用於串行通訊的標 準。它的全名是“數據終端設備(DTE)和數據通訊設備(DCE)之間 串行二進製數據交換接口技術標準”該標準規定采用一個25個腳的 DB25連接器,對連接器的每個引腳的信號內容加以規定,還對各種信 號的電平加以規定。
  (1)接口的信號內容 實際上RS-232-C的25條引綫中有許多是很少使用的,在計算機與終端通訊中一般衹使用3-9條引綫。RS-232-C最常用的9條引綫的信號內容見附表1所示
  (2)接口的電氣特性 在RS-232-C中任何一條信號綫的電壓均為負邏輯關係。即:邏 輯“1”,-5— -15V;邏輯“0” +5— +15V 。噪聲容限為2V。即 要求接收器能識別低至+3V的信號作為邏輯“0”,高到-3V的信號 作為邏輯“1”
  (3) 接口的物理結構 RS-232-C接口連接器一般使用型號為DB-25的25芯插頭座,通常插頭在DCE端,插座在DTE端. 一些設備與PC機連接的RS-232-C接口,因為不使用對方的傳送控製信號,衹需三條接口綫,即“發送數據”、“接收數據”和“信號地”。所以采用DB-9的9芯插頭座,傳輸綫采用屏蔽雙絞綫。
  (4)傳輸電纜長度 由RS-232C標準規定在碼元畸變小於4%的情況下,傳輸電纜長度應為50英尺,其實這個4%的碼元畸變是很保守的,在實際應用中,約有99%的用戶是按碼元畸變10-20%的範圍工作的,所以實際使用中最大距離會遠超過50英尺,美國DEC公司曾規定允許碼元畸變為10%而得出附表2 的實驗結果。其中1號電纜為屏蔽電纜,型號為DECP.NO.9107723 內有三對雙絞綫,每對由22# AWG 組成,其外覆以屏蔽網。2號電纜為不帶屏蔽的電纜。型號為DECP.NO.9105856-04是22#AWG的四芯電纜。
  1.RS-232-C是美國電子工業協會EIA(Electronic Industry Association)製定的一種串行物理接口標準。RS是英文“推薦標準”的縮寫,232為標識號,C表示修改次數。RS-232-C總綫標準設有25條信號綫,包括一個主通道和一個輔助通道,在多數情況下主要使用主通道,對於一般雙工通信,僅需幾條信號綫就可實現,如一條發送綫、一條接收綫及一條地綫。RS-232-C標準規定的數據傳輸速率為每秒50、75、 100、150、300、600、1200、2400、4800、9600、19200波特。RS-232-C標準規定,驅動器允許有2500pF的電容負載,通信距離將受此電容限製,例如,采用150pF/m的通信電纜時,最大通信距離為15m;若每米電纜的電容量減小,通信距離可以增加。傳輸距離短的另一原因是RS-232屬單端信號傳送,存在共地噪聲和不能抑製共模幹擾等問題,因此一般用於20m以內的通信。
  2.RS-485總綫,在要求通信距離為幾十米到上千米時,廣泛采用RS-485 串行總綫標準。RS-485采用平衡發送和差分接收,因此具有抑製共模幹擾的能力。加上總綫收發器具有高靈敏度,能檢測低至200mV的電壓,故傳輸信號能在千米以外得到恢復。 RS-485采用半雙工工作方式,任何時候衹能有一點處於發送狀態,因此,發送電路須由使能信號加以控製。RS-485用於多點互連時非常方便,可以省掉許多信號綫。應用RS-485 可以聯網構成分佈式係統,其允許最多並聯32臺驅動器和32臺接收器。
  以往,PC與智能設備通訊多藉助RS232、RS485、以太網等方式,主要取决於設備的接口規範。但RS232、RS485衹能代表通訊的物理介質層和鏈路層,如果要實現數據的雙嚮訪問,就必須自己編寫通訊應用程序,但這種程序多數都不能符合ISO/OSI的規範,衹能實現較單一的功能,適用於單一設備類型,程序不具備通用性。在RS232或RS485設備聯成的設備網中,如果設備數量超過2臺,就必須使用RS485做通訊介質,RS485網的設備間要想互通信息衹有通過“主(Master)”設備中轉才能實現,這個主設備通常是PC,而這種設備網中衹允許存在一個主設備,其餘全部是從(Slave)設備。而現場總綫技術是以ISO/OSI模型為基礎的,具有完整的軟件支持係統,能夠解决總綫控製、衝突檢測、鏈路維護等問題。...
  一.組件,對象模型COM
  (COM),是微軟公司為了計算機工業的軟件生産更加符合人類的行為方式開發的一種新的軟件開發技術。在COM構架下,人們可以開發出各種各樣的功能專一的組件,然後將它們按照需要組合起來,構成復雜的應用係統。由此帶來的好處是多方面的:可以將係統中的組件用新的替換掉,以便隨時進行係統的升級和定製;可以在多個應用係統中重複利用同一個組件;可以方便的將應用係統擴展到網絡環境下;COM與語言,平臺無關的特性使所有的程序員均可充分發揮自己的才智與專長編寫組件模塊;等等。
  COM是開發軟件組件的一種方法。組件實際上是一些小的二進製可執行程序,它們可以給應用程序,操作係統以及其他組件提供服務。開發自定義的COM組件就如同開發動態的,面嚮對象的API。多個COM對象可以連接起來形成應用程序或組件係統。並且組件可以在運行時刻,在不被重新鏈接或編譯應用程序的情況下被卸下或替換掉。Microsoft的許多技術,如ActiveX, DirectX以及OLE等都是基於COM而建立起來的。並且Microsoft的開發人員也大量使用COM組件來定製他們的應用程序及操作係統。
  COM所含的概念並不止是在Microsoft Windows操作係統下纔有效。COM並不是一個大的API,它實際上象結構化編程及面嚮對象編程方法那樣,也是一種編程方法。在任何一種操作係統中,開發人員均可以遵循“COM方法”。
  一個應用程序通常使由單個的二進製文件組成的。當編譯器生成應用程序之後,在對下一個版本重新編譯並發行新生成的版本之前,應用程序一般不會發生任何變化。操作係統,硬件及客戶需求的改變都必須等到整個應用程序被重新生成。
  目前這種狀況已經發生變化。開發人員開始將單個的應用程序分隔成單獨多個獨立的部分,也既組件。這種做法的好處是可以隨着技術的不斷發展而用新的組件取代以有的組件。此時的應用程序可以隨新組件不斷取代舊的組件而漸趨完善。而且利用已有的組件,用戶還可以快速的建立全新的應用。
  傳統的做法是將應用程序分割成文件,模塊或類,然後將它們編譯並鏈接成一個單模應用程序。它與組件建立應用程序的過程(稱為組件構架)有很大的不同。一個組件同一個微型應用程序類似,即都是已經編譯鏈接好並可以使用的二進製代碼,應用程序就是由多個這樣的組件打包而得到的。單模應用程序衹有一個二進製代碼模塊。自定義組件可以在運行時刻同其他的組件連接起來以構成某個應用程序。在需要對應用程序進行修改或改進時,衹需要將構成此應用程序的組件中的某個用新的版本替換掉即可。
  COM,即組件對象模型,是關於如何建立組件以及如何通過組件建立應用程序的一個規範,說明了如何可動態交替更新組件。
  使用組件的優點:
  組件架構的一個優點就是應用可以隨時間的流逝而發展進化。除此之外,使用組件還有一些可以使對以有應用的升級更加方便和靈活的優點,如應用的定製,組件庫以及分佈式組件等。
  使用組件的種種優點直接來源於可以將它們動態的插入或卸出應用。為了實現這種功能,所有的組件必須滿足兩個條件:第一,組件必須動態鏈接;第二,它們必須隱藏(或封裝)其內部實現細節。動態鏈接對於組件而言是一個至關重要的要求,而消息隱藏則是動態鏈接的一個必要條件。
  二.接口
  對於COM來講,接口是一個包含一個函數指針數組的內存結構。每一個數組元素包含的是一個由組件所實現的函數地址。對於COM而言,接口就是此內存結構,其他東西;均是COM不關心的實現細節。
  在C++中,可以用抽象基類來實現com接口。由於一個COM組件可以實現支持任意數目的接口,因此對於這樣的組件,可以用抽象基類的多重繼承來實現。用類來實現組件將比其他方法更為容易。
  對於客戶來說,一個組件就是一個接口集。客戶衹能通過接口才能和COM組件打交道。從整體上講,客戶對於一個組件可以說是知之甚少的。通常情況下,客戶甚至不必知道一個組件所提供的所有接口。
  客戶同組件的交互是通過接口完成的。在客戶查詢組件其他的接口時,也是通過接口完成的。這個接口就是IUnknown。Iunknown接口的定義包含在Win32 SDK中的UNKNOWN.H的頭文件中,引用如下: interface IUnknown
  {
  virtual HRESULT-_ _stdcall QueryInterface(const IID& iid,void **ppv)=0;
  virtual ULONG_ _stdcall AddRef( )=0;
  virtual ULONG_ _Release( )=0;
  };
  所有的COM都要繼承IUnknown。可以用Iunknown的接口指針來查詢該組件的其他的接口,並且每個接口的vtbl中的前三個函數都是QueryInterface,AddRef和Release。這使得所有的com接口都可以被當作成IUnknown接口來處理。由於所有的接口都支持QueryInterface,因此組件的任何一個接口都可以被客戶用來獲取它所支持的其他接口。
  在用QueryInterface將組件抽象成由多個相互獨立的接口構成的集合後,還需要管理組件的生命期。這一點是通過對接口的引用計數實現的。客戶並不能直接控製組件的生命期。當使用完一個接口而要用組件的另一個接口時,是不能將改組件釋放的。對組件的釋放可以由組件在客戶使用完所有的組件之後自己完成。IUnknown的另外兩個成員函數AddRef和Release的作用就是給客戶提供一種讓它指示何時處理完一個接口的手段。
  AddRef和Release實現的是一種名為引用技術的內存管理技術。當客戶從組件獲得一個接口時,此引用計數值將增1。當客戶使用完某個接口時,組件的引用計數值將減1,當引用計數值為0時,組件可以將自己從內存中刪除。AddRef和Release可以增加和減少這一計數值。
  三.創建
  將組件分成多個接口衹是將單模應用分個成多個部分的第一步,組件需要被放入動態鏈接庫(DLL)中。DLL是一個組件服務程序,或者說是發行組件的一種方式。組件實際上應看成是在DLL中實現的接口集。在客戶獲取某個組件接口指針之前,它必須先將相應的DLL裝載到其進程空間中,並創建此組件。
  由於客戶組件所需要的所有函數都可以通過某個接口指針而訪問到,因此,可以在DLL中引出CreatInstance函數就可以使用戶調用它。之後,可以裝載DLL並調用其中的函數。此功能可由COM庫函數CoCreateInstance來實現。CoCreateInstance創建組件的過程是:傳給它一個CLSID,然後它創建相應的組件,並返回指嚮所請求的接口的指針。但CoCreateInstance沒有給客戶提供一種能控製組件創建過程的方法,缺乏一定的靈活性。事實上,常用類廠來創建組件。類廠就是一個帶有能夠創建其他組件的接口的組件。客戶先創建類廠本身,然後再用一個接口(如IClassFactory)來創建所需的組件。然後還要用DllRegisterSever在Windows中註册這個組件。
  四.復用
  COM組件可以被復用,它支持“接口繼承”。這種繼承指的是一個類繼承其基類的類型或接口。抽象基類是一種最純粹的接口繼承,並且正好也被用來實現com接口。在COM中,我們可以用包容和聚合來對組件進行改造。
  包容是在接口級完成的。外部組件包含指嚮內部接口的指針。此時,外部組件僅僅是內部組件的一個客戶而已,它將使用內部組件的接口來實現它自己的接口。外部組件也可以通過將調用轉發給內部組件的方法來重新實現內部組件所支持的某個接口。並且外部組件還可以在內部組件代碼的前後加上一些代碼以對接口進行改造。
  聚合是包含的一種變化形式。當外部組件聚合了某個內部組件的一個接口時,它並沒有象包容那樣重新實現此接口並顯式的將調用請求轉發給內部組件。相反,外部組件直接把內部組件的接口指針返回給客戶。使用這種方法,外部組件將無需重新實現並轉發接口中的所有函數了。
  包容和聚合為實現組件的復用提供了一種極具魯棒性的機製。在組件構架下,客戶於組件的實現完全隔離開了。
  五.小結
  以上是關於COM的一些基礎知識。遵循COM規範編寫的組件將會極大的改變傳統的軟件生産方式,具有廣阔的發展前景。這也將為軟件工程學引入新的內容和方法。