在 C++ 中,最接近于接口概念的就是純虛類(pure virtual class)。純虛類就是一個僅僅包含純虛函數的類,除了純虛函數不含有任何其它的成員變量或者函數,如:
// The following is not actual COM.
// Pseudo-C++:
interface IDrawable
{
void Draw();
};
這個例子來源于一些用來繪圖的庫中的對象。IDrawable 接口定義了繪圖中常用的操作,任何支持繪圖功能的對象都必須支持該接口。(慣例,接口名稱的首字母為 “I”),IDrawable 接口目前只定義了一個操作:Draw。
所有的接口都是抽象的,代碼中不能直接創建一個 IDrawable 接口的實例對象( C++ 語法規則不支持純虛函數對象的創建)。例如,下面的代碼是無法編譯通過的:
IDrawable draw;
draw.Draw();
相反的,圖形庫都會提供一些對象來實現 IDrawable 所定義的接口。例如,可以實現一個叫做 Shape 的類或者一個叫做 Bitmap 的類,C++ 中使用繼承實現這種關系:
class Shape : public IDrawable
{
public:
virtual void Draw(); // Override Draw and provide implementation.
};
class Bitmap : public IDrawable
{
public:
virtual void Draw(); // Override Draw and provide implementation.
};
Shape 和 Bitmap 類定義了兩種不同的對象,二者都支持繪圖功能。每個類都繼承自 IDrawable 接口,而對于 Draw 方法繪制的具體實現細節可以各自不同。
如果程序中使用二者進行繪制,可以使用 IDrawable 的指針對象來操縱它們,而不是直接使用 Shape 和 Bitmap 對象的指針。
IDrawable *pDrawable=CreateTriangleShape();
if (pDrawable)
{
pDrawable->Draw();
}
這有一個循環遍歷 IDrawable 接口指針的列子,在這個數組中,每項成員可能是 Shape 對象,也可能是 Bitmap 對象,更可能是一些支持 IDrawable 接口的其他對象,代碼中無需這些不同類型的實現細節,只需要調用它們都支持的共有接口 IDrawable 就可以繪制我們想要的圖像。
void DrawSomeShapes(IDrawable **drawableArray, size_t count)
{
for (size_t i=0; i < count; i++)
{
drawableArray[i]->Draw();
}
}
COM 組件 的一個關鍵點就是調用者永遠不需要知道派生類的具體實現細節。換句話說,在你的代碼中一般不會聲明 Shape 或者 Bitmap 類型的變量。所有的操作都是通過它們共有的接口 IDrawable 來完成。用這種方式,COM 組件可以做到接口和實現的完全分離。
你可以隨時改變 Shape 或者 Bitmap 對象的繪制方法,例如修復一個 bug,或者增加一些新的能力,對于調用者來說是透明的,調用者的代碼是無需任何修改的。
在 C++ 中,接口使用類或者結構體來實現。
文章中的代碼案例只是用來演示說明問題,真正的 COM 接口 定義顯然不會這樣簡單。一般一個 COM 接口的定義使用一種叫做 Interface Definition Language(IDL)—— 接口定義語言的東西。這個 IDL 文件將描述具體的接口行為,然后用 IDL 文件編譯器處理,生成一組 C++ 頭文件。
class IDrawable
{
public:
virtual void Draw()=0;
};
當你在使用 COM 組件的時候,一定要記住接口不是對象。它們是一組必須實現的方法集合。一些對象可以實現一樣的接口,例如代碼中的 Shape 對象和 Bitmap 對象。另外一個對象可以實現幾個接口,例如,一個圖形庫可能定義一個名字叫做 ISerializable 的接口對象,它用來保存和加載圖形對象數據(圖形的序列化)。現在考慮下面的代碼:
// An interface for serialization.
class ISerializable
{
public:
virtual void Load(PCWSTR filename)=0; // Load from file.
virtual void Save(PCWSTR filename)=0; // Save to file.
};
// Declarations of drawable object types.
class Shape : public IDrawable
{
...
};
class Bitmap : public IDrawable, public ISerializable
{
...
};
在例子中,Bitmap 類實現了 ISerializable 接口,程序可以使用該接口保存和加載 Bitmap 對象。然而 Shape 類沒有實現這個接口,所以它不支持這個功能。下面是例子中的繼承關系:
上面的文字只是簡單的介紹 COM 組件 的一些概念,目前我們還沒有看見過一個真正的 COM 組件,接下來的內容從每個 COM 應用都必須做的一件事開始 —— COM 庫初始化。
算機作為人們日常生活及工作中密不可分的伙伴,其擴展功能隨著硬件的迭代不斷更替,有些接口雖然長得像,但是功能并不一樣,有些接口很多小伙伴表示壓根不知道怎么使用。
接下來,就為大家整理目前計算機領域常見到物理接口:
1、USB接口(Universal Serial Bus通用串行總線)
USB接口作為計算機最常見也是使用率最高的外接接口,其誕生已經有20多年了,從1996推出至今已經經歷了幾大版本的更新。
USB的不同版本是可以相互兼容的,所以就算是USB2.0的外接設備,依然可以在USB3.0的接口上使用,反之,USB3.0的設備也可以在USB2.0的接口上使用,只是傳輸速度沒有那么快而已。
如何簡單區分USB版本:
按顏色區分:USB1.0-2.0基本為白色或者黑色,USB3.0為藍色,USB3.1為紅色或者淺綠色。
從造型區分:USB3.0的標示符號比USB2.0前面多了“SS”。
另外,USB2.0只有一排4針的針腳,而USB3.0為上5下4總共9針的針腳。
USB-B(Type-B)
USB-B接口一般用來連接打印設備、顯示器、硬盤等。
作為USB家族里的一個標準接口,USB-B接口的地位是很尷尬的。首先它沒有USB-A的用途那么廣泛,又沒有USB-C那樣小巧便利,以至于有些人天天用著它,但就是叫不出它的名字,打印機數據線?
USB-C(Type-C)
其實Type-C也是USB接口的一種,只是它的造型更加小巧了,接口無正反面區分,盲插更方便,而且傳輸速度達到了USB3.1的標準。
現在很多新款的安卓設備也采用這種接口,包括新款的ipad pro。
2、PS/2接口
作為計算機最古老的接口之一,PS/2接口設備依然還在服役,現在能見到的PS/2外接設備也就剩鼠標和鍵盤了,PS/2接口一般分為紫色(插鍵盤)和綠色(插鼠標)。
而現在鼠標鍵盤普遍也都是采用USB接口了,畢竟USB的應用范圍更廣。PS/2接口雖然支持“熱插拔”(只能針對系統已加載的設備),但是對于第一次接入的新設備,依然需要重啟電腦才能識別。其實PS/2接口的鼠標鍵盤對舊系統設備兼容要比USB還要好一點,在面對一些老舊設備的調試上,往往就是只能用PS/2接口來驅動鼠標鍵盤,但隨著舊設備的更替,PS/2接口終究會退出人們的視野。
3、以太網接口
目前個人電腦上用的網絡接口基本上都是RJ-45接口,傳輸速度最高為千兆。
一般RJ-45接口上有連接指示燈(LINK) 、信號傳輸指示燈(ACT)兩個指示燈。
4、串行接口(COM接口)、并行接口(LPT)
常見的串行接口為9針串口(DB9),普通在一些老舊設備上,DB9的外觀長得有點像VGA接口,乍一看還真容易混淆。
串行接口的工作原理簡單,主要作為一對一的數據傳輸,例如調試網絡設備。而25針并口常用于連接打印設備。而不過現在已經很少有新設備提供串口/并口了,因為工作的需求性越來越小,還有就是USB接口的普及,畢竟主板的空間就那么點,省下來多配個USB接口更加實在。
5、eSATA
eSATA接口主要用于外接硬盤,從它的名字就可以看出它也屬于SATA串行接口規范的一種。eSATA是高效直接的外接硬盤方式,只不過現在USB接口的移動硬盤更受消費者歡迎,一般在一些舊的筆記本電腦或者是外接硬盤盒上能看見它。
6、IEEE 1394
IEEE 1394是蘋果開發的串行標準接口,俗稱火線接口,主要用于連接多媒體外接設備。
IEEE 1394在有生之年經歷了幾個版本的更新,接口形態也隨之改變。
同樣在USB標準接口的洗禮下,IEEE 1394也已經變成時代的產物,在一些老舊相機上,你還能偶爾見到它。
7、SCSI(小型計算機系統接口)
SCSI是一種通用的設備接口,可以連接硬盤、光驅、軟驅(00后的小伙伴表示不認識這東西)、打印設備等。作為已經被淘汰的計算機接口,使用過它的人,基本已經老了。
8、外置wifi接口
在一些X系列的高端主板上,我們經常可以看到外置wifi接口。
因為很多臺式主機采用的是金屬材質的機箱,而且造型都比較封閉,這就導致了內置wifi會受到信號屏蔽的困擾。通過連接外置wifi天線,可以讓臺式主機也能暢快地用無線上網了。
1、VGA接口(Video Graphics Array)
VGA接口共有15針,分成3排,每排5個孔,是目前使用最廣泛的視頻接口。
作為已經存在三十年的接口,VGA接口在面對高清影像傳輸上已經越來越力不從心,所以在很多高端顯卡和顯示器上,已經慢慢地取消VGA接口了。
2、DVI接口(Digital Visual Interface)
DVI接口始于1998年,因為當時液晶顯示器的推廣,VGA接口在轉換成數字圖像顯示時會不可避免地造成圖像細節丟失,所以當時多家科技公司一起合作推出DVI接口標準。
DVI接口對比VGA?有很多優勢,可以顯示更高清的畫面,對動態畫面處理更加穩定。
3、HDMI接口(High Definition Multimedia Interface)
HDMI接口是一種可以同時傳輸視頻及音頻的全數字化接口,現在越來越多顯示設備用它來取代老舊的VGA接口。
HDMI的版本有1.0-1.2a版、1.3-1.3a版、1.4-1.4b版、2.0-2.0b版、2.1版。
不同版本是可以相互兼容的,主要區別是傳輸帶寬的高低,目前HDMI2.1版的傳輸速率已經可以達到42.6Gbit/s,可以滿足4K視頻的播放。
4、 DP接口(DisplayPort)
DP接口類似于HDMI,也屬于高清數字顯示接口。
DP接口的開發就是為了今后大分辨率顯示設備而生,高帶寬低延遲是它最大的特點,DP接口也是目前市面上性能最高的視頻接口。
DP接口還有個小尺寸版本,叫Mini DP(mini Display Port),主要用于筆記本電腦上使用。
5、 雷電接口(Thunderbolt)
在蘋果的電腦上,我們經常能看見雷電接口,很多人把蘋果的雷電接口當成mini DP來使用。確實,雷電接口和Mini DP的外形上一模一樣,雷電接口除了可以當成Mini DP一樣作為視頻傳輸,還可以作為其他數據傳輸,例如雷電轉以太網口。
在新的macbook pro上,我們可以看到新的的雷電3造型變得跟普通的type-C一樣了。其實它就是在USB-C的接口形態上運行了雷電協議,使其不僅可以兼容type-C的通用性,而且擁有更高的傳輸帶寬。
1、3.5毫米音頻接口
一般主板自帶的聲卡上有6個不同顏色的音頻接口,很多小伙伴都只認識綠色那個接口。
聲卡上不同顏色的接口分別對應了不同的功能:
紅MIC in 麥克風輸入 (有些聲卡為粉紅色)
藍 Line in 線路輸入
綠 Front 前端揚聲器(左右)
橙 C/LEF 中置/低頻加強聲道
黑 Rear 后端揚聲器(左右)
灰 Side 測環繞揚聲器(左右)
這么多接口,怎樣接才是正確的呢?
2.1聲道:音頻輸出只接綠色的音頻口就可以了。
5.1聲道:音頻輸出接綠、橙、黑這三個音頻口。
7.1聲道:音頻輸出接綠、橙、黑、灰這四個音頻口。
麥克風統一接紅色音頻口。
2、SPDIF(同軸音頻接口和光纖音頻口)
SPDIF分為同軸和光纖兩種接線方式,雖然兩者形狀和載體不一樣,但是傳輸的信號是一樣的。
同軸音頻接口是常見音響設備接口,只不過電腦領域里3.5mm音頻接口橫行的年代,為了節省成本和主板空間,很多主板已經不配同軸音頻口了,畢竟想買個同軸音頻接口的電腦耳機或者音箱也不容易呀!
光纖音頻接口有著很高大上的名字,在前面的文章里有提到這個接口,很多人聽到電腦上的光纖接口,以為是上網用的,其實它是用來傳輸音頻的,作為速度高干擾低的音頻接口,在一些高端主板上經常能看見它。
如果你有想了解內容,或者文章中有錯漏的地方,歡迎評論告訴我喔!
(本文圖片均來自網絡,如有侵權,聯系刪除)
原創不易,請勿盜發,如喜歡,求點贊支持!謝謝各位!
理想家生活#
本內容來源于@什么值得買APP,觀點僅代表作者本人 |作者:玩家精選
昨晚在逛張大媽時,偶然看到電腦風扇改插頭、改線材、改端子這樣一篇帖子,在感慨作者發布教程詳細注意細節的同時,也佩服作者的動手能力,在文章結尾處關于風扇線序的說明比較簡單,今天特意整理出來一片,希望給各位玩家能帶來幫助。
散熱風扇,英文名:Cooling fans 。散熱風扇的技術和性能方面已經完全達到了成熟的階段,并不斷有新技術出現。風扇規格尺寸從 8mm 到 280mm,電壓有 5V,12V,24V,48V,110V,220V,380V,外形有方形,圓形,橄欖形等。
散熱風扇的工作原理是按能量轉化來實現的,即:電能→電磁能→機械能→動能。其電路原理一般分為多種形式,采用的電路不同,風扇的性能就會有差異。
很多玩家對于 FAN 的針腳定義并不能很好的了解,這也是源于被忽略的說明書。不知道什么時候主板的說明書就成了擺設,很少有玩家去關注它。
大多時候都是只有遇到問題的時候才回去翻動它,那么我們下面趕緊來看看說明書中有關FAN針腳的定義。
機箱主板 4Pin 風扇接口針腳線序
主板風扇接線圖
電腦機箱散熱風扇 4Pin 針腳線序
電腦機箱散熱風扇 4Pin 針腳線序定義
電腦機箱散熱風扇 4Pin 針腳線序定義
散熱風扇有很多種分類方法,有 DC 直流、AC 交流之分,還可以分為有刷、無刷,也有滾珠軸承、含油軸承之分,我們這里主要談的是散熱風扇的電源線接口,簡單來說可以分為 2 針 (2pin)、3 針 (3pin) 及 4 針 (4pin) 之分,我們逐一來看。
散熱風扇的 2 針、3 針與 4 針 (圖片來源于 togell)
2 針的散熱風扇意味著它只有紅黑兩種電源線,一個接地,一個供電,結構簡單,但是功能也很少,不能測速,想要調速需要使用其他方案。
2 針風扇
電腦散熱風扇針腳接口順序及定義 2 針風扇 除了上面說的 2 針風扇,還有一種 D 型電源接口的風扇,也就是大 4pin 接口的風扇,這里也歸類到 2 針風扇里來說一下吧,比較有代表性的風扇就是酷冷黑旋風系列。
酷冷黑旋風大 4pin 接口風扇 (圖片來自淘寶店鋪)
這種風扇也沒有變速功能,而且供電是 12V 的,用大 4pin 接口就是為了獲得更好的性能 (功率更大),酷冷黑旋風的轉速為 1200RPM,風量 44.72CFM。說到這里,想到前幾年因為散熱環境差,腦袋一熱就買了幾個 1500RPM 轉速的暴力扇,使用的也是大 4pin 接口,風量確實強大,但是噪音受不了,用了兩次就放棄了。
目前 2 針的風扇也沒有退出舞臺,在不同的場合中依然有大量應用,不過對 DIY 玩家來說,2 針的風扇在變速等方面上已經不能滿足要求了,3 針、4 幀風扇才是更合適的選擇。
2 針風扇不能調速的問題在當前社會越來越嚴重,因為人們并不是一直需要風扇全速運行,溫度不高的時候降低風扇轉速可以帶來更低的噪音,玩家對靜音的需求日益增多,所以有了能調速的 3 針風扇接口。
3 針風扇針腳定義
3 針風扇接口在原先的紅黑基礎上增加了一條黃色的線 (也部分是黑黃綠),它主要負責測速,通過它主板可以偵測到風扇是否在轉、轉速多少,不過 3 針風扇的調速是通過調整風扇電壓來實現的,首先這樣做調節轉速依然不夠靈活,溫度探測來自主板,不能實時反映 CPU 狀態信息,而且需要主板 BIOS 設置各種參數,所以能不能調速還要看主板支持與否。
更重要的一點,不同的風扇還有不同的啟動電壓,電壓調速不是線性的,通過電壓控制轉速有可能導致低電壓時達不到風扇所需的啟動電壓,出現風扇停轉等問題。
從 2 針到 3 針,風扇調速的問題始終沒有徹底解決,所以在 LGA775 時代英特爾聯合廠商推出了新的 PWM 調速規范,散熱風扇變成了 4 個針腳,在 3 針基礎上又多了一個 PWM 線 (脈寬調變)。
4 針風扇的接口顏色也不固定,常見的有下面兩種:
主板風扇 FAN 接口圖解
主板風扇 FAN 接口圖解
圖片來源于 B 站平臺 @林海 rinhai 用戶
文章鏈接:https://www.bilibili.com/read/cv10094383
主板風扇 FAN 接口圖解,4pin 接口線序圖解
4 針風扇接口的顏色及接口定義
多出的 PWM 線就是利用 PWM 機制來調節風扇轉速,而風扇電壓是恒定的,避免了控制電壓來變速的一系列弊端。
常用風扇接口
有時候會遇到即便風扇是 4 針 PWM 控制的,但是接到主板上依然不能智能控速,這個問題可能就跟主板有關系了,因為主板上的 4 針接口不一定都是 PWM 控制的,也可能是電壓控制轉速的。
某些主板的 4 針接口不一定是 PWM
貓頭鷹在官方 FAQ 中就提到了這個問題,這個要看主板廠商的說明書描述,如果提到了 NC、VCC 等字眼,說明它不是支持 PWM 調速的,是通過降低電壓來實現的。
還有一個問題就是 3 針、4 針風扇的混插問題了,由于兩者有 3 個陣腳都是一樣的,所以是可以混插的,當然 4 針風扇插入 3 針接口會損失 PWM 調速功能,3 針風扇插入 4 針接口上也不會自動獲得 PWM 調速功能。
同型號風扇建議使用風扇一分多供電分線,更多風扇情況需要用到風扇集線器。
不推薦購買使用大 4Pin 供電的無測速風扇,風扇一直全速不符合正常用戶使用場景。
散熱風扇的2針、3針、4針是老生常談的問題了,目前2針風扇在日常使用中不多見,3針、4針的比較普遍,從使用體驗上來說,選擇帶PWM功能的4針風扇的主板是首選,大部分主板及CPU散熱器帶的風扇都是4針PWM的。
文章中所用圖片僅為科普使用,如有侵權內容,可聯系作者刪除。
作者聲明本文無利益相關,歡迎值友理性交流,和諧討論~