名校網(wǎng)

LED指示燈


LED指示燈的寫法


LED指示燈介紹

一般來講,每塊網(wǎng)卡都具有1個(gè)以上的LED(LightEmittingDiode發(fā)光二極管)指示燈,用來表示網(wǎng)卡的不同工作狀態(tài),以方便我們查看網(wǎng)卡是否工作正常。典型的LED指示燈有Link/Act、Full、Power等。Link/Act表示連接活動(dòng)狀態(tài),F(xiàn)ull表示是否全雙工(FullDuplex),而Power是電源指示等。

VC基于CStatic的實(shí)現(xiàn)

在很多應(yīng)用程序,特別是工控程序中,經(jīng)常需要讀入并顯示一些開關(guān)量,比如串口通信是否正常,電源是否打開,電機(jī)工作是否正常等等。這些開關(guān)量的顯示用一些控件來實(shí)現(xiàn)。這些控件根據(jù)輸入的開關(guān)量顯示不同顏色和文字用來表示打開和關(guān)閉。NI公司專門開發(fā)了一套LabWindows控件,專門用于程序開發(fā),當(dāng)然這是要花錢的.本文以CStatic為基類,編寫了一個(gè)LED燈,它可根據(jù)輸入的bool值顯示開關(guān),類似于vb里的shape控件。

NI控件

具體實(shí)現(xiàn)請(qǐng)請(qǐng)參考CLED類,當(dāng)然這個(gè)類很簡單,完全可以自己實(shí)現(xiàn),當(dāng)時(shí)如過你不想自己動(dòng)手編寫,那么可以發(fā)郵件向我要:visualsan@yahoo.cn.也可以直接復(fù)制文章低部的類的頭文件和cpp文件。下面是程序運(yùn)行時(shí)的截圖:

//類頭文件

#if!defined(AFX[_]LED[_]H[_][_]BDAD9442[_]11BB[_]4917[_]8E43[_]0E2ACC246FE3[_][_]INCLUDED[_])

#defineAFX[_]LED[_]H[_][_]BDAD9442[_]11BB[_]4917[_]8E43[_]0E2ACC246FE3[_][_]INCLUDED[_]

#if[_]MSC[_]VER1000

#pragmaonce

#endif//[_]MSC[_]VER1000

//LED.h:headerfile

//

#defineCIRCLE0

#defineSQUARE1

#defineELLIPSE2

/////////////////////////////////////////////////////////////////////////////

//CLEDwindowclassCLED:publicCStatic

{

//Constructionpublic:

CLED();

//Attributespublic:

//Operationspublic:

COLORREFm[_]crBK,m[_]crOnFG,m[_]crOffFG;

CBrush*m[_]brOnFG,*m[_]brOffFG;

intm[_]iType;

boolm[_]bOn;

CStringm[_]sOnString,m[_]sOffString;

boolm[_]bTextOn;

//Overrides

//ClassWizardgeneratedvirtualfunctionoverrides

//{{AFX[_]VIRTUAL(CLED)

//}}AFX[_]VIRTUAL

//Implementationpublic:

intGetType();

boolGetTextOnOff();

CStringGetOnText();

BOOLGetOnOff();

COLORREFGetOnFgColor();

CStringGOffText();

COLORREFGetOffFgColor();

COLORREFGetBKColor();

voidSetTextOnOff(boolval);

voidSetOffText(CStringstr);

voidSetOnText(CStringstr);

voidSetBKColor(COLORREFC);

voidSetOnOff(boolval);

voidSetType(inttype);

voidSetOffFgColor(COLORREFC);

voidSetOnFgColor(COLORREFC);

virtual~CLED();

//Generatedmessagemapfunctionsprotected:

//{{AFX[_]MSG(CLED)

afx[_]msgintOnCreate(LPCREATESTRUCTlpCreateStruct);

afx[_]msgvoidOnPaint();

afx[_]msgvoidOnDestroy();

afx[_]msgvoidOnSize(UINTnType,intcx,intcy);

//}}AFX[_]MSGDECLARE[_]MESSAGE[_]MAP()

private:

voidDrawFigure();

};

/////////////////////////////////////////////////////////////////////////////

//{{AFX[_]INSERT[_]LOCATION}}

//MicrosoftVisualC++willinsertadditionaldeclarationsimmediatelybeforethepreviousline.

#endif//!defined(AFX[_]LED[_]H[_][_]BDAD9442[_]11BB[_]4917[_]8E43[_]0E2ACC246FE3[_][_]INCLUDED[_])

/////////////////////////////////////////////////////////////////

///////////////類cpp文件

//LED.cpp:implementationfile

//

#include"stdafx.h"

#include"colortext.h"

#include"LED.h"

#ifdef[_]DEBUG

#definenewDEBUG[_]NEW

#undefTHIS[_]FILEstaticcharTHIS[_]FILE=[_][_]FILE[_][_];

#endif

/////////////////////////////////////////////////////////////////////////////

//CLEDCLED:CLED()

{

m[_]crBK=RGB(255,255,255);

m[_]crOnFG=RGB(0,255,0);

m[_]crOffFG=RGB(255,0,0);

m[_]iType=0;

m[_]bOn=true;

m[_]brOnFG=newCBrush(m[_]crOnFG);

m[_]brOffFG=newCBrush(m[_]crOffFG);

m[_]sOnString="on";

m[_]sOffString="off";

m[_]bTextOn=true;

}

CLED:~CLED()

{

deletem[_]brOffFG;

deletem[_]brOnFG;

}

BEGIN[_]MESSAGE[_]MAP(CLED,CStatic)

//{{AFX[_]MSG[_]MAP(CLED)

ON[_]WM[_]CREATE()

ON[_]WM[_]PAINT()

ON[_]WM[_]DESTROY()

ON[_]WM[_]SIZE()

//}}AFX[_]MSG[_]MAPEND[_]MESSAGE[_]MAP()

/////////////////////////////////////////////////////////////////////////////

//CLEDmessagehandlersintCLED:OnCreate(LPCREATESTRUCTlpCreateStruct)

{

if(CStatic:OnCreate(lpCreateStruct)==-1)

return-1;

//TODO:Addyourspecializedcreationcodeherereturn0;

}

voidCLED:OnPaint()

{

CPaintDCdc(this);//devicecontextforpainting

//TODO:AddyourmessagehandlercodehereDrawFigure();

//DonotcallCStatic:OnPaint()forpaintingmessages

}

voidCLED:OnDestroy()

{

CStatic:OnDestroy();

//TODO:Addyourmessagehandlercodehere

}

voidCLED:SetOnFgColor(COLORREFC)

{

m[_]brOnFG-DeleteObject();

m[_]crOnFG=C;

m[_]brOnFG-CreateSolidBrush(m[_]crOnFG);

OnPaint();

}

COLORREFCLED:GetOnFgColor()

{

returnm[_]crOnFG;

}

voidCLED:SetOffFgColor(COLORREFC)

{

m[_]brOffFG-DeleteObject();

m[_]crOffFG=C;

m[_]brOffFG-CreateSolidBrush(m[_]crOffFG);

OnPaint();

}

COLORREFCLED:GetOffFgColor()

{

returnm[_]crOffFG;

}

voidCLED:SetType(inttype)

{

if(type0||type2)

{

return;

}

m[_]iType=type;

OnPaint();

}

intCLED:GetType()

{

returnm[_]iType;

}

voidCLED:DrawFigure()

{

CClientDCpdc(this);

CBrushb;

CRectr;

GetClientRect(r);

b.CreateSolidBrush(m[_]crBK);

pdc.SelectObject(&b);

pdc.FillRect(r,&b);

pdc.SetBkMode(TRANSPARENT);

if(m[_]bOn==true)

{

CPenpen(0,0,m[_]crOnFG);

pdc.SelectObject(&pen);

pdc.SelectObject(m[_]brOnFG);

}

else

{

CPenpen(0,0,m[_]crOffFG);

pdc.SelectObject(&pen);

pdc.SelectObject(m[_]brOffFG);

}

if(m[_]iType==0)//circle

{

CRectr1;

if(r.Width()r.Height())

{

r1.left=r.left+(r.Width()-r.Height())/2.0;

r1.right=r.right-(r.Width()-r.Height())/2.0;

r1.top=r.top;

r1.bottom=r.bottom;

}

else

{

r1.left=r.left;

r1.right=r.right;

r1.top=r.top+(r.Height()-r.Width())/2.0;

r1.bottom=r.bottom-(r.Height()-r.Width())/2.0;

}

pdc.Ellipse(r1);

}

if(m[_]iType==1)//squre

{

pdc.Rectangle(r);

}

if(m[_]iType==2)//ellipse

{

pdc.Ellipse(r);

}

if(!m[_]bTextOn)

return;

if(m[_]bOn)

pdc.TextOut(r.CenterPoint().x-m[_]sOnString.GetLength()*3.5,r.CenterPoint().y-10,m[_]sOnString,m[_]sOnString.GetLength());

elsepdc.TextOut(r.CenterPoint().x-m[_]sOffString.GetLength()*3.5,r.CenterPoint().y-10,m[_]sOffString,m[_]sOffString.GetLength());

}

voidCLED:SetOnOff(boolval)

{

m[_]bOn=val;

OnPaint();

}

BOOLCLED:GetOnOff()

{

returnm[_]bOn;

}

voidCLED:OnSize(UINTnType,intcx,intcy)

{

CStatic:OnSize(nType,cx,cy);

OnPaint();

}

voidCLED:SetBKColor(COLORREFC)

{

m[_]crBK=C;

OnPaint();

}

COLORREFCLED:GetBKColor()

{

returnm[_]crBK;

}

voidCLED:SetOnText(CStringstr)

{

m[_]sOnString=str;

OnPaint();

}

CStringCLED:GetOnText()

{

returnm[_]sOnString;

}

voidCLED:SetOffText(CStringstr)

{

m[_]sOffString=str;

OnPaint();

}

CStringCLED:GOffText()

{

returnm[_]sOffString;

}

voidCLED:SetTextOnOff(boolval)

{

m[_]bTextOn=val;

OnPaint();

}

boolCLED:GetTextOnOff()

{

returnm[_]bTextOn;

}

在網(wǎng)路卡中的作用

一般來講,每塊網(wǎng)路卡(NIC)都具有1個(gè)以上的LED(LightEmittingDiode,發(fā)光二極體)指示燈,用來表示網(wǎng)卡的不同工作狀態(tài),以方便我們查看網(wǎng)卡是否工作正常。典型的LED指示燈有Link/Act、Full、Power等。Link/Act表示連接活動(dòng)狀態(tài),Full表示是否全雙工(FullDuplex),而Power是電源指示等。

在正常情況下,在不傳送資料時(shí),網(wǎng)卡的指示燈閃爍較慢,傳送資料時(shí),閃爍較快。無論是不亮,還是長亮不滅,都表明有故障存在。如果網(wǎng)卡的指示燈不正常,需關(guān)掉電腦更換網(wǎng)卡。對(duì)于Hub的指示燈,凡是插有網(wǎng)線的埠,指示燈都亮。由于是Hub,所以,指示燈的作用只能指示該埠是否連接有終端設(shè)備,不能顯示通信狀態(tài)。

LED應(yīng)用在這類產(chǎn)品的指示燈時(shí),所選用的LED產(chǎn)品等級(jí)普遍是比較一般的產(chǎn)品,像是Lamp型LED。而比較高階的網(wǎng)路卡產(chǎn)品,會(huì)采用SMD型LED,除了省空間外,使用的電流也會(huì)比較校

除了手機(jī)背光以外,SMD型LED也很適合擔(dān)任各種電子裝置的指示燈,普遍是綠色、紅色、橘色、藍(lán)色等??色,價(jià)格上的差異日益縮小化。

在常見網(wǎng)絡(luò)設(shè)備故障診斷中的應(yīng)用

在常見網(wǎng)絡(luò)設(shè)備上都有幾個(gè)指示燈,用于監(jiān)控設(shè)備的狀態(tài)和運(yùn)行,這些指示燈稱之為發(fā)光二極管(LED)。充分了解這些指示燈的意義,往往能在網(wǎng)絡(luò)故障診斷的過程中,簡單快捷的判斷出故障原因,達(dá)到意想不到的效果。

一、網(wǎng)卡

在網(wǎng)卡后側(cè)RJ45接口一邊有兩個(gè)指示燈。它們分別為連接狀態(tài)指示燈和信號(hào)傳輸指示燈,其中正常狀態(tài)下連接狀態(tài)指示燈呈綠色并且長亮,信號(hào)指示燈呈紅色,正常應(yīng)該不停地閃爍。

如果連接指示燈,也就是綠燈不亮,那么表示網(wǎng)卡連接到HUB或交換機(jī)之間的連接有故障。一般情況下這種故障發(fā)生多半是網(wǎng)線沒有接牢或水晶頭故障所造成的。而且故障點(diǎn)大多是在連接的兩端,例如交換機(jī)的端口處和連接計(jì)算機(jī)的網(wǎng)卡處,可以借助測線儀或者采用更換網(wǎng)線的方法進(jìn)行解決。如果不是接頭的原因造成的,則需對(duì)整個(gè)鏈路用測線儀進(jìn)行分段排除。

如果信號(hào)指示燈,也就是紅燈不亮,那么則說明沒有信號(hào)進(jìn)行傳輸,但在綠燈亮的情況下,可以肯定的是線路之間是正常的??梢圆捎锰鎿Q法換一臺(tái)計(jì)算機(jī)連接到該網(wǎng)線上試試,如果所換計(jì)算機(jī)不能正常上網(wǎng),則需更換該計(jì)算機(jī)連接的交換機(jī)端口或者重啟動(dòng)交換機(jī)。如果所換計(jì)算機(jī)能正常上網(wǎng),則可以肯定有信號(hào)傳送,進(jìn)而確定是本地網(wǎng)卡的問題??梢試L試Ping一下本機(jī)的IP地址,如果不能Ping通,可以嘗試重新插拔網(wǎng)卡、安裝網(wǎng)卡驅(qū)動(dòng)來解決;如果能夠Ping通則說明網(wǎng)卡的安裝沒有太大問題,這時(shí)需要檢查IP設(shè)置是否存在錯(cuò)誤,是否存在IP沖突的情況。另外如果使用了集成網(wǎng)卡或質(zhì)量不高的網(wǎng)卡,容易出現(xiàn)不穩(wěn)定的現(xiàn)象,即所有設(shè)置都正確,但網(wǎng)絡(luò)卻不通。對(duì)此可以將網(wǎng)卡禁用,然后再重新啟用的方法,可能會(huì)解決紅燈不亮不閃的問題。

二、光纖收發(fā)器

光纖收發(fā)器是一種將短距離的雙絞線電信號(hào)和長距離的光信號(hào)進(jìn)行互換的以太網(wǎng)傳輸轉(zhuǎn)換單元,又稱為光電轉(zhuǎn)換器。光纖收發(fā)器延伸了以太網(wǎng)的連接距離,打破了雙絞線只能傳輸100m的距離限制,因此廣泛應(yīng)用于使用長距離光纖的網(wǎng)絡(luò)環(huán)境中。伴隨著光纖收發(fā)器應(yīng)用的不斷增多,它也成為網(wǎng)絡(luò)中一個(gè)比較重要的故障點(diǎn)。利用收發(fā)器的指示燈是否正常,可以快速的判斷出故障所在。

1.光路LINK燈不亮。首先檢查光纖鏈路是否有問題,光纖斷裂和光纖中間環(huán)節(jié)過多,都可能引起LINK燈不亮。比如中間有幾個(gè)接續(xù)包或者通過法蘭盤跳接等使光纖損耗過大,超出了收發(fā)器接收范圍,用光功率機(jī)測試一下就可知道。然后看收發(fā)器的兩個(gè)光纖接口與光纖的連接是否正確,A端的TX口應(yīng)與B端的RX口連接,A端的RX口應(yīng)與B端的TX連接。測試連接正確與否的方法很簡單,將與光纖收發(fā)器相連接的兩根光纖跳線互換,互換后,LINK燈亮了,即可證明原來的連接錯(cuò)誤。

2.電路LINK燈不亮。首先檢查網(wǎng)線是否有問題,是否存在網(wǎng)線不通、水晶頭故障等問題。然后根據(jù)與收發(fā)器連接的設(shè)備選用直通線或者交叉線,一般與交換機(jī)等多地址網(wǎng)絡(luò)設(shè)備連接時(shí)用交叉線,與服務(wù)器工作站等單地址網(wǎng)絡(luò)設(shè)備連接時(shí)用直通線。有些收發(fā)器有兩個(gè)RJ45端口,一個(gè)直通一個(gè)交叉,有些側(cè)面有MPR和DTE兩個(gè)選擇開關(guān),MPR表示直通連接,DTE表示交叉連接。還有一種情況是收發(fā)器與其他網(wǎng)絡(luò)設(shè)備(網(wǎng)卡、集線器、交換機(jī)等)的速率不匹配,比如100M的收發(fā)器接了個(gè)10M網(wǎng)卡或1G交換機(jī)端口,因此電路LINK燈始終不亮。要注意的是,有些收發(fā)器必須等光路連通后電路LINK燈才亮,因此要注意看收發(fā)器使用說明書。

3.收發(fā)器各指示燈都亮著,但光路LINK燈和電路LINK燈閃爍過慢或閃爍明顯不對(duì)稱,從而導(dǎo)致網(wǎng)絡(luò)不通,一般重啟一下收發(fā)器就可恢復(fù)正常。

三、交換機(jī)

交換機(jī)因其品牌、類型、模塊等差異,設(shè)備上的指示燈也存在不同,但是交換機(jī)前面板上一般都存在下列幾種指示燈:電源指示燈、連接指示燈、端口模式指示燈、端口狀態(tài)指示燈。根據(jù)這些指示燈的異常,可以判斷出交換機(jī)很多的故障原因,并快速采取相應(yīng)解決方法。

1.電源指示燈(POWERLED)

POWERLED為綠燈表示電源供應(yīng)正常,熄滅表示沒有電源供應(yīng)。電源指示燈不亮?xí)r,確認(rèn)交換機(jī)的電源線連接是否正確,使用的電源插座是否完好。可以重新安裝交換機(jī)的電源線或換用另外的電源插座。

2.連接指示燈(LNK/ACTLED)

LINKLED不亮表示沒有連接,需確認(rèn)交換機(jī)與其他設(shè)備的設(shè)置是否一致,并確認(rèn)線纜連接正確。另外,交換機(jī)與其它網(wǎng)絡(luò)設(shè)備之間的連接線纜為五類線,且距離超過100米,也會(huì)造成LINKLED不亮。

3.端口模式指示燈(MODELED)

端口模式指示燈顯示交換機(jī)端口所處的模式。如果要選擇或修改端口模式,連續(xù)的按壓Mode按鈕直到端口模式指示燈指示在所需的模式。

端口模式?jīng)Q定如何對(duì)端口狀態(tài)指示燈進(jìn)行解釋。也就是說對(duì)應(yīng)于不同的模式,端口狀態(tài)指示燈的顏色等情況表示的是不同的含義。

Mode按鈕有三種狀態(tài):

。STAT(狀態(tài),states)

。UTL(利用率,Utilization)

。FDUP(全雙工,fullduplex)

如果交換機(jī)的狀態(tài)燈為閃爍的橙色,一般表明在某一個(gè)端口或者模塊有硬件故障。

以華為S2100型交換機(jī)為例,按MODE按紐,按下后A/L和D/S的指示燈相互切換,當(dāng)用MODE按鈕切換到A/L模式時(shí),A/L燈亮,端口狀態(tài)指示燈用來指示端口的Active和Link狀態(tài),此時(shí)端口狀態(tài)指示燈為綠色,表示鏈路正常運(yùn)行。當(dāng)切換到D/S模式的時(shí)候,D/S燈亮,此時(shí)端口狀態(tài)指示燈表示端口的雙工模式和速率情況,端口上方的黃燈就跟著亮了,表示雙工的工作方式。

4.端口狀態(tài)指示燈

端口狀態(tài)指示燈能代表多種含義,取決于端口模式指示燈的當(dāng)前值。

端口模式的缺省模式為STAT狀態(tài),此時(shí)某端口狀態(tài)指示燈若關(guān)閉,表示無鏈路,即確定沒有連接到端口的設(shè)備;指示燈持續(xù)綠色,表示鏈路正常運(yùn)行;指示燈閃爍綠色,表示發(fā)送或者接收數(shù)據(jù);指示燈綠色/琥珀色交替,表示是鏈路錯(cuò)誤;指示燈持續(xù)琥珀色,表示是非轉(zhuǎn)發(fā)狀態(tài).是阻塞狀態(tài)。

端口模式處于不同狀態(tài)時(shí),各個(gè)廠商對(duì)于不同顏色的LED指示燈的功能定義是各不相同的,根據(jù)端口狀態(tài)指示燈判斷交換機(jī)的端口狀態(tài)之前,應(yīng)認(rèn)真閱讀相關(guān)產(chǎn)品的說明書。

四、路由器

路由器相比交換機(jī)而言,主要用于較大型的局域網(wǎng)和城域網(wǎng)。但隨著局域網(wǎng)的快速發(fā)展,路由器的應(yīng)用也出現(xiàn)快速上升的趨勢,各種路由器故障也隨之接踵而來。

路由器的LED指示燈較交換機(jī)的指示燈作用更局限,因?yàn)槁酚善鞯慕^大部分故障都出現(xiàn)在軟件和設(shè)置上,而路由器的LED指示燈主要用來輔助查看設(shè)備的硬件故障。比如:電源模塊上有一個(gè)綠色的POWER狀態(tài)指示燈。當(dāng)這個(gè)指示燈亮著時(shí),表示電源工作正常。接口模塊上的TX、RX指示燈。RX指示燈為綠色表示端口正在接收數(shù)據(jù)包;如果為橙色,則表示正在接收流控制的數(shù)據(jù)包。TX指示燈為綠色表示端口正在發(fā)送數(shù)據(jù)包;如果為橙色,則表示正在發(fā)送流控制的數(shù)據(jù)包。

同樣,不同品牌和型號(hào)的路由器對(duì)指示燈意義的定義不盡相同,除參考經(jīng)驗(yàn)之外,還要認(rèn)真閱讀產(chǎn)品說明書。

“LED指示燈”分字解釋


詞語首拼