日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式教程
[導(dǎo)讀]本書(shū)在第2章中介紹“ps”的命令時(shí)提到過(guò)管道,當(dāng)時(shí)指出了管道是Linux中一種很重要的通信方式,它是把一個(gè)程序的輸出直接連接到另一個(gè)程序的輸入,這里仍以第2章中的“ps –ef | grep ntp”為例,描述管道的通信過(guò)程,如圖8.2所示

8.2管道8.2.1管道概述

本書(shū)在第2章中介紹“ps”的命令時(shí)提到過(guò)管道,當(dāng)時(shí)指出了管道是Linux中一種很重要的通信方式,它是把一個(gè)程序的輸出直接連接到另一個(gè)程序的輸入,這里仍以第2章中的“ps–ef|grepntp”為例,描述管道的通信過(guò)程,如圖8.2所示。

圖8.2管道的通信過(guò)程

管道是Linux中進(jìn)程間通信的一種方式。這里所說(shuō)的管道主要指無(wú)名管道,它具有如下特點(diǎn)。

n 它只能用于具有親緣關(guān)系的進(jìn)程之間的通信(也就是父子進(jìn)程或者兄弟進(jìn)程之間)。

n 它是一個(gè)半雙工的通信模式,具有固定的讀端和寫(xiě)端。

n 管道也可以看成是一種特殊的文件,對(duì)于它的讀寫(xiě)也可以使用普通的read()和write()等函數(shù)。但是它不是普通的文件,并不屬于其他任何文件系統(tǒng),并且只存在于內(nèi)核的內(nèi)存空間中。

8.2.2管道系統(tǒng)調(diào)用1.管道創(chuàng)建與關(guān)閉說(shuō)明

管道是基于文件描述符的通信方式,當(dāng)一個(gè)管道建立時(shí),它會(huì)創(chuàng)建兩個(gè)文件描述符fds[0]和fds[1],其中fds[0]固定用于讀管道,而fd[1]固定用于寫(xiě)管道,如圖8.3所示,這樣就構(gòu)成了一個(gè)半雙工的通道。

圖8.3Linux中管道與文件描述符的關(guān)系

管道關(guān)閉時(shí)只需將這兩個(gè)文件描述符關(guān)閉即可,可使用普通的close()函數(shù)逐個(gè)關(guān)閉各個(gè)文件描述符。

注意

當(dāng)一個(gè)管道共享多對(duì)文件描述符時(shí),若將其中的一對(duì)讀寫(xiě)文件描述符都刪除,則該管道就失效。

2.管道創(chuàng)建函數(shù)

創(chuàng)建管道可以通過(guò)調(diào)用pipe()來(lái)實(shí)現(xiàn),表8.1列出了pipe()函數(shù)的語(yǔ)法要點(diǎn)。

表8.1 pipe()函數(shù)語(yǔ)法要點(diǎn)

所需頭文件

#include<unistd.h>

函數(shù)原型

intpipe(intfd[2])

函數(shù)傳入值

fd[2]:管道的兩個(gè)文件描述符,之后就可以直接操作這兩個(gè)文件描述符

函數(shù)返回值

成功:0

出錯(cuò):-1

3.管道讀寫(xiě)說(shuō)明

用pipe()函數(shù)創(chuàng)建的管道兩端處于一個(gè)進(jìn)程中,由于管道是主要用于在不同進(jìn)程間通信的,因此這在實(shí)際應(yīng)用中沒(méi)有太大意義。實(shí)際上,通常先是創(chuàng)建一個(gè)管道,再通過(guò)fork()函數(shù)創(chuàng)建一子進(jìn)程,該子進(jìn)程會(huì)繼承父進(jìn)程所創(chuàng)建的管道,這時(shí),父子進(jìn)程管道的文件描述符對(duì)應(yīng)關(guān)系如圖8.4所示。

此時(shí)的關(guān)系看似非常復(fù)雜,實(shí)際上卻已經(jīng)給不同進(jìn)程之間的讀寫(xiě)創(chuàng)造了很好的條件。父子進(jìn)程分別擁有自己的讀寫(xiě)通道,為了實(shí)現(xiàn)父子進(jìn)程之間的讀寫(xiě),只需把無(wú)關(guān)的讀端或?qū)懚说奈募枋龇P(guān)閉即可。例如在圖8.5中將父進(jìn)程的寫(xiě)端fd[1]和子進(jìn)程的讀端fd[0]關(guān)閉。此時(shí),父子進(jìn)程之間就建立起了一條“子進(jìn)程寫(xiě)入父進(jìn)程讀取”的通道。

圖8.4父子進(jìn)程管道的文件描述符對(duì)應(yīng)關(guān)系圖8.5關(guān)閉父進(jìn)程fd[1]和子進(jìn)程fd[0]

同樣,也可以關(guān)閉父進(jìn)程的fd[0]和子進(jìn)程的fd[1],這樣就可以建立一條“父進(jìn)程寫(xiě)入子進(jìn)程讀取”的通道。另外,父進(jìn)程還可以創(chuàng)建多個(gè)子進(jìn)程,各個(gè)子進(jìn)程都繼承了相應(yīng)的fd[0]和fd[1],這時(shí),只需要關(guān)閉相應(yīng)端口就可以建立其各子進(jìn)程之間的通道。

想一想

為什么無(wú)名管道只能在具有親緣關(guān)系的進(jìn)程之間建立?

4.管道使用實(shí)例

在本例中,首先創(chuàng)建管道,之后父進(jìn)程使用fork()函數(shù)創(chuàng)建子進(jìn)程,之后通過(guò)關(guān)閉父進(jìn)程的讀描述符和子進(jìn)程的寫(xiě)描述符,建立起它們之間的管道通信。

/*pipe.c*/

#include<unistd.h>

#include<sys/types.h>

#include<errno.h>

#include<stdio.h>

#include<stdlib.h>

#defineMAX_DATA_LEN256

#defineDELAY_TIME1

intmain()

{

pid_tpid;

intpipe_fd[2];

charbuf[MAX_DATA_LEN];

constchardata[]="PipeTestProgram";

intreal_read,real_write;

memset((void*)buf,0,sizeof(buf));

/*創(chuàng)建管道*/

if(pipe(pipe_fd)<0)

{

printf("pipecreateerrorn");

exit(1);

}

/*創(chuàng)建一子進(jìn)程*/

if((pid=fork())==0)

{

/*子進(jìn)程關(guān)閉寫(xiě)描述符,并通過(guò)使子進(jìn)程暫停1s等待父進(jìn)程已關(guān)閉相應(yīng)的讀描述符*/

close(pipe_fd[1]);

sleep(DELAY_TIME*3);

/*子進(jìn)程讀取管道內(nèi)容*/

if((real_read=read(pipe_fd[0],buf,MAX_DATA_LEN))>0)

{

printf("%dbytesreadfromthepipeis'%s'n",real_read,buf);

}

/*關(guān)閉子進(jìn)程讀描述符*/

close(pipe_fd[0]);

exit(0);

}

elseif(pid>0)

{

/*父進(jìn)程關(guān)閉讀描述符,并通過(guò)使父進(jìn)程暫停1s等待子進(jìn)程已關(guān)閉相應(yīng)的寫(xiě)描述符*/

close(pipe_fd[0]);

sleep(DELAY_TIME);

if((real_write=write(pipe_fd[1],data,strlen(data)))!=-1)

{

printf("Parentwrote%dbytes:'%s'n",real_write,data);

}

/*關(guān)閉父進(jìn)程寫(xiě)描述符*/

close(pipe_fd[1]);

/*收集子進(jìn)程退出信息*/

waitpid(pid,NULL,0);

exit(0);

}

}

將該程序交叉編譯,下載到開(kāi)發(fā)板上的運(yùn)行結(jié)果如下所示:

$./pipe

Parentwrote17bytes:'PipeTestProgram'

17bytesreadfromthepipeis'PipeTestProgram'

5.管道讀寫(xiě)注意點(diǎn)

n 只有在管道的讀端存在時(shí),向管道寫(xiě)入數(shù)據(jù)才有意義。否則,向管道寫(xiě)入數(shù)據(jù)的進(jìn)程將收到內(nèi)核傳來(lái)的SIGPIPE信號(hào)(通常為Brokenpipe錯(cuò)誤)。

n 向管道寫(xiě)入數(shù)據(jù)時(shí),Linux將不保證寫(xiě)入的原子性,管道緩沖區(qū)一有空閑區(qū)域,寫(xiě)進(jìn)程就會(huì)試圖向管道寫(xiě)入數(shù)據(jù)。如果讀進(jìn)程不讀取管道緩沖區(qū)中的數(shù)據(jù),那么寫(xiě)操作將會(huì)一直阻塞。

n 父子進(jìn)程在運(yùn)行時(shí),它們的先后次序并不能保證,因此,在這里為了保證父子進(jìn)程已經(jīng)關(guān)閉了相應(yīng)的文件描述符,可在兩個(gè)進(jìn)程中調(diào)用sleep()函數(shù),當(dāng)然這種調(diào)用不是很好的解決方法,在后面學(xué)到進(jìn)程之間的同步與互斥機(jī)制之后,請(qǐng)讀者自行修改本小節(jié)的實(shí)例程序。

8.2.4標(biāo)準(zhǔn)流管道1.標(biāo)準(zhǔn)流管道函數(shù)說(shuō)明

與Linux的文件操作中有基于文件流的標(biāo)準(zhǔn)I/O操作一樣,管道的操作也支持基于文件流的模式。這種基于文件流的管道主要是用來(lái)創(chuàng)建一個(gè)連接到另一個(gè)進(jìn)程的管道,這里的“另一個(gè)進(jìn)程”也就是一個(gè)可以進(jìn)行一定操作的可執(zhí)行文件,例如,用戶執(zhí)行“ls-l”或者自己編寫(xiě)的程序“./pipe”等。由于這一類操作很常用,因此標(biāo)準(zhǔn)流管道就將一系列的創(chuàng)建過(guò)程合并到一個(gè)函數(shù)popen()中完成。它所完成的工作有以下幾步。

n 創(chuàng)建一個(gè)管道。

n fork()一個(gè)子進(jìn)程。

n 在父子進(jìn)程中關(guān)閉不需要的文件描述符。

n 執(zhí)行exec函數(shù)族調(diào)用。

n 執(zhí)行函數(shù)中所指定的命令。

這個(gè)函數(shù)的使用可以大大減少代碼的編寫(xiě)量,但同時(shí)也有一些不利之處,例如,它不如前面管道創(chuàng)建的函數(shù)那樣靈活多樣,并且用popen()創(chuàng)建的管道必須使用標(biāo)準(zhǔn)I/O函數(shù)進(jìn)行操作,但不能使用前面的read()、write()一類不帶緩沖的I/O函數(shù)。

與之相對(duì)應(yīng),關(guān)閉用popen()創(chuàng)建的流管道必須使用函數(shù)pclose()來(lái)關(guān)閉該管道流。該函數(shù)關(guān)閉標(biāo)準(zhǔn)I/O流,并等待命令執(zhí)行結(jié)束。

2.函數(shù)格式

popen()和pclose()函數(shù)格式如表8.2和表8.3所示。

表8.2 popen()函數(shù)語(yǔ)法要點(diǎn)

所需頭文件

#include<stdio.h>

函數(shù)原型

FILE*popen(constchar*command,constchar*type)

函數(shù)傳入值

command:指向的是一個(gè)以null結(jié)束符結(jié)尾的字符串,這個(gè)字符串包含一個(gè)shell命令,并被送到/bin/sh以-c參數(shù)執(zhí)行,即由shell來(lái)執(zhí)行

type:

“r”:文件指針連接到command的標(biāo)準(zhǔn)輸出,即該命令的結(jié)果產(chǎn)生輸出
“w”:文件指針連接到command的標(biāo)準(zhǔn)輸入,即該命令的結(jié)果產(chǎn)生輸入

函數(shù)返回值

成功:文件流指針

出錯(cuò):-1

表8.3 pclose()函數(shù)語(yǔ)法要點(diǎn)

所需頭文件

#include<stdio.h>

函數(shù)原型

intpclose(FILE*stream)

函數(shù)傳入值

stream:要關(guān)閉的文件流

函數(shù)返回值

成功:返回由popen()所執(zhí)行的進(jìn)程的退出碼

出錯(cuò):-1

3.函數(shù)使用實(shí)例

在該實(shí)例中,使用popen()來(lái)執(zhí)行“ps-ef”命令??梢钥闯?,popen()函數(shù)的使用能夠使程序變得短小精悍。

/*standard_pipe.c*/

#include<stdio.h>

#include<unistd.h>

#include<stdlib.h>

#include<fcntl.h>

#defineBUFSIZE1024

intmain()

{

FILE*fp;

char*cmd="ps-ef";

charbuf[BUFSIZE];

/*調(diào)用popen()函數(shù)執(zhí)行相應(yīng)的命令*/

if((fp=popen(cmd,"r"))==NULL)

{

printf("Popenerrorn");

exit(1);

}

while((fgets(buf,BUFSIZE,fp))!=NULL)

{

printf("%s",buf);

}

pclose(fp);

exit(0);

}

下面是該程序在目標(biāo)板上的執(zhí)行結(jié)果。

$./standard_pipe

PIDTTYUidSizeStateCommand

1root1832Sinit

2root0S[keventd]

3root0S[ksoftirqd_CPU0]

……

74root1284S./standard_pipe

75root1836Ssh-cps-ef

76root2020Rps–ef

8.2.5FIFO1.有名管道說(shuō)明

前面介紹的管道是無(wú)名管道,它只能用于具有親緣關(guān)系的進(jìn)程之間,這就大大地限制了管道的使用。有名管道的出現(xiàn)突破了這種限制,它可以使互不相關(guān)的兩個(gè)進(jìn)程實(shí)現(xiàn)彼此通信。該管道可以通過(guò)路徑名來(lái)指出,并且在文件系統(tǒng)中是可見(jiàn)的。在建立了管道之后,兩個(gè)進(jìn)程就可以把它當(dāng)作普通文件一樣進(jìn)行讀寫(xiě)操作,使用非常方便。不過(guò)值得注意的是,F(xiàn)IFO是嚴(yán)格地遵循先進(jìn)先出規(guī)則的,對(duì)管道及FIFO的讀總是從開(kāi)始處返回?cái)?shù)據(jù),對(duì)它們的寫(xiě)則把數(shù)據(jù)添加到末尾,它們不支持如lseek()等文件定位操作。

有名管道的創(chuàng)建可以使用函數(shù)mkfifo(),該函數(shù)類似文件中的open()操作,可以指定管道的路徑和打開(kāi)的模式。

小知識(shí)

用戶還可以在命令行使用“mknod管道名p”來(lái)創(chuàng)建有名管道。

在創(chuàng)建管道成功之后,就可以使用open()、read()和write()這些函數(shù)了。與普通文件的開(kāi)發(fā)設(shè)置一樣,對(duì)于為讀而打開(kāi)的管道可在open()中設(shè)置O_RDONLY,對(duì)于為寫(xiě)而打開(kāi)的管道可在open()中設(shè)置O_WRONLY,在這里與普通文件不同的是阻塞問(wèn)題。由于普通文件的讀寫(xiě)時(shí)不會(huì)出現(xiàn)阻塞問(wèn)題,而在管道的讀寫(xiě)中卻有阻塞的可能,這里的非阻塞標(biāo)志可以在open()函數(shù)中設(shè)定為O_NONBLOCK。下面分別對(duì)阻塞打開(kāi)和非阻塞打開(kāi)的讀寫(xiě)進(jìn)行討論。

(1)對(duì)于讀進(jìn)程。

n 若該管道是阻塞打開(kāi),且當(dāng)前FIFO內(nèi)沒(méi)有數(shù)據(jù),則對(duì)讀進(jìn)程而言將一直阻塞到有數(shù)據(jù)寫(xiě)入。

n 若該管道是非阻塞打開(kāi),則不論FIFO內(nèi)是否有數(shù)據(jù),讀進(jìn)程都會(huì)立即執(zhí)行讀操作。即如果FIFO內(nèi)沒(méi)有數(shù)據(jù),則讀函數(shù)將立刻返回0。

(2)對(duì)于寫(xiě)進(jìn)程。

n 若該管道是阻塞打開(kāi),則寫(xiě)操作將一直阻塞到數(shù)據(jù)可以被寫(xiě)入。

n 若該管道是非阻塞打開(kāi)而不能寫(xiě)入全部數(shù)據(jù),則讀操作進(jìn)行部分寫(xiě)入或者調(diào)用失敗。

2.mkfifo()函數(shù)格式

表8.4列出了mkfifo()函數(shù)的語(yǔ)法要點(diǎn)。

表8.4 mkfifo()函數(shù)語(yǔ)法要點(diǎn)

所需頭文件

#include<sys/types.h>
#include<sys/state.h>

函數(shù)原型

intmkfifo(constchar*filename,mode_tmode)

函數(shù)傳入值

filename:要?jiǎng)?chuàng)建的管道

函數(shù)傳入值

mode:

O_RDONLY:讀管道

O_WRONLY:寫(xiě)管道

O_RDWR:讀寫(xiě)管道

O_NONBLOCK:非阻塞

函數(shù)傳入值

mode:

O_CREAT:如果該文件不存在,那么就創(chuàng)建一個(gè)新的文件,并用第三個(gè)參數(shù)為其設(shè)置權(quán)限

O_EXCL:如果使用O_CREAT時(shí)文件存在,那么可返回錯(cuò)誤消息。這一參數(shù)可測(cè)試文件是否存在

函數(shù)返回值

成功:0

出錯(cuò):-1

表8.5再對(duì)FIFO相關(guān)的出錯(cuò)信息做一歸納,以方便用戶查錯(cuò)。

表8.5 FIFO相關(guān)的出錯(cuò)信息

EACCESS

參數(shù)filename所指定的目錄路徑無(wú)可執(zhí)行的權(quán)限

EEXIST

參數(shù)filename所指定的文件已存在

ENAMETOOLONG

參數(shù)filename的路徑名稱太長(zhǎng)

ENOENT

參數(shù)filename包含的目錄不存在

ENOSPC

文件系統(tǒng)的剩余空間不足

ENOTDIR

參數(shù)filename路徑中的目錄存在但卻非真正的目錄

EROFS

參數(shù)filename指定的文件存在于只讀文件系統(tǒng)內(nèi)

3.使用實(shí)例

下面的實(shí)例包含了兩個(gè)程序,一個(gè)用于讀管道,另一個(gè)用于寫(xiě)管道。其中在讀管道的程序里創(chuàng)建管道,并且作為main()函數(shù)里的參數(shù)由用戶輸入要寫(xiě)入的內(nèi)容。讀管道的程序會(huì)讀出用戶寫(xiě)入到管道的內(nèi)容,這兩個(gè)程序采用的是阻塞式讀寫(xiě)管道模式。

以下是寫(xiě)管道的程序:

/*fifo_write.c*/

#include<sys/types.h>

#include<sys/stat.h>

#include<errno.h>

#include<fcntl.h>

#include<stdio.h>

#include<stdlib.h>

#include<limits.h>

#defineMYFIFO"/tmp/myfifo"/*有名管道文件名*/

#defineMAX_BUFFER_SIZEPIPE_BUF/*定義在于limits.h中*/

intmain(intargc,char*argv[])/*參數(shù)為即將寫(xiě)入的字符串*/

{

intfd;

charbuff[MAX_BUFFER_SIZE];

intnwrite;

if(argc<=1)

{

printf("Usage:./fifo_writestringn");

exit(1);

}

sscanf(argv[1],"%s",buff);

/*以只寫(xiě)阻塞方式打開(kāi)FIFO管道*/

fd=open(MYFIFO,O_WRONLY);

if(fd==-1)

{

printf("Openfifofileerrorn");

exit(1);

}

/*向管道中寫(xiě)入字符串*/

if((nwrite=write(fd,buff,MAX_BUFFER_SIZE))>0)

{

printf("Write'%s'toFIFOn",buff);

}

close(fd);

exit(0);

}

以下是讀管道程序:

/*fifo_read.c*/

(頭文件和宏定義同fifo_write.c)

intmain()

{

charbuff[MAX_BUFFER_SIZE];

intfd;

intnread;

/*判斷有名管道是否已存在,若尚未創(chuàng)建,則以相應(yīng)的權(quán)限創(chuàng)建*/

if(access(MYFIFO,F_OK)==-1)

{

if((mkfifo(MYFIFO,0666)<0)&&(errno!=EEXIST))

{

printf("Cannotcreatefifofilen");

exit(1);

}

}

/*以只讀阻塞方式打開(kāi)有名管道*/

fd=open(MYFIFO,O_RDONLY);

if(fd==-1)

{

printf("Openfifofileerrorn");

exit(1);

}

while(1)

{

memset(buff,0,sizeof(buff));

if((nread=read(fd,buff,MAX_BUFFER_SIZE))>0)

{

printf("Read'%s'fromFIFOn",buff);

}

}

close(fd);

exit(0);

}

為了能夠較好地觀察運(yùn)行結(jié)果,需要把這兩個(gè)程序分別在兩個(gè)終端里運(yùn)行,在這里首先啟動(dòng)讀管道程序。讀管道進(jìn)程在建立管道之后就開(kāi)始循環(huán)地從管道里讀出內(nèi)容,如果沒(méi)有數(shù)據(jù)可讀,則一直阻塞到寫(xiě)管道進(jìn)程向管道寫(xiě)入數(shù)據(jù)。在啟動(dòng)了寫(xiě)管道程序后,讀進(jìn)程能夠從管道里讀出用戶的輸入內(nèi)容,程序運(yùn)行結(jié)果如下所示。

終端一:

$./fifo_read

Read'FIFO'fromFIFO

Read'Test'fromFIFO

Read'Program'fromFIFO

……

終端二:

$./fifo_writeFIFO

Write'FIFO'toFIFO

$./fifo_writeTest

Write'Test'toFIFO

$./fifo_writeProgram

Write'Program'toFIFO

……

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢(shì)抑制與過(guò)流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問(wèn)題卻十分常見(jiàn),不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問(wèn)題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車場(chǎng)照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢(shì)逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問(wèn)題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來(lái)解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開(kāi)關(guān)電源具有效率高的特性,而且開(kāi)關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開(kāi)關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉