`

Asterisk 学习进阶(转)

 
阅读更多

介绍篇

抛开所有概念,首先从单词学起。估计很多人和我一样没有明白这个词是什么意思,或许猜测他还可能是一个组合词。其实它就是“*”,作为搞程序的我们看到这个东东想到的也许会是乘号,当然有另外一大帮人想到的是通配符,在这儿恭喜想到通配符的兄弟,你们答对啦,这儿我们认定它的含义就是如此。

 

通过我上面牵强附会的关联,Asterisk的含义就浮出水面了,它就是一个通配的电话,这样组合的话看起来应该有点难受,我们重新润色它就变成了无所不能的电话系统。有了上面的这段废话,我其实只想传达asterisk的两个特点:

1.       功能巨强大

2.       是一个支持语音的系统

追本溯源,下面还是看看官方是怎么定义它的:www.asterisk.org

Asterisk is the most popular and extensible open source telephone system in the world, offering flexibility, functionality and features not available in advanced, high cost proprietary business systems. Asterisk is a complete IP telephony platform for business, and can be downloaded for free.

通过这段话我琢磨出下面一些意思,不晓得各位的想法。首先就是它功能很强大,成本低廉,另外就是它是免费的。

展开一下,因为它是开源代码,就容许你在已有的基础上进行修改定制,削弱了开发成本,另外就是asterisk可以跑在多个通过操作系统上,而且基本x86这个通用平台,降低了专用系统昂贵的成本。但是功能强大这个我们先悬着这个疑问,下面在慢慢的进行剖析。我们现在只要从概念上晓得asterisk是一个功能强大的IP  PBX就够了。

 

安装篇

       使用之前请购买这个陋习可以更改一下啦,因为我们已经进入GNU主义,get what you want。

 

下载通道为http://downloads.digium.com/pub/asterisk/releases/,选择一个稳定版本下载就是了。对于一个程序员而言,获得了代码还有什么不能做的。难道你给士兵一把枪还怕他打不死腿上的蚊子?解压倒合适的目录,按照他的指导手册操作就是了,不过看文档提示里面建议释放在/usr/src下面。

而且看到手册上面要下载一堆的东西,例如zaptel*,libpri*等等,这些对于我们目前都是不需要的,因为我们想构建的是一个纯粹的IP TEL,其他和老式电话的接口暂时都由我们的网关路由器完成,例如E1/T1,ISDN BRI/PRI,FXO,FXS等等,我们通过asterisk想完成的只是IP TEL,例如sip,h323等等。

我们需要下载的只是asterisk,后续操作步骤如下:

cd /usr/src

tar zxvf asterisk-*.tar.gz

通过上述命令,文件就被解压出来,接下来肯定就是编译了,略过不表,步骤如下:

#cd /usr/src

#cd asterisk-*

# ./configure

#make

#make install

#make samples   安装默认的配置文件

#make webvmail 安装语音信箱图形界面

#make config

如果对于上面的命令以及作用有疑惑的话,建议多花时间看看linux的基本操作维护命令,然后再回头继续往下。这儿需要提及的最后一点,增加了一个make samples,正如其名,他的作用就是生成默认的配置文件。众多的编译选项我也不介绍了,详细参见手册。

 

常见问题解决方案:

1.如出现找不到 PTLIB 库,则找到在LOG输出上找到有 ...ptlib.h----YES 的那一条,找到对应目录把文件改名,就不会再出错了,一般目录为:/usr/lib/ptlib.h。

2.如果出现 func_rurl.c: 106 常量无定义 之类的错误,则直接在MAKEFILE中取消此文件的编译,因为Makefile中是定义 func_*.c 参与编译,所以修改此文件为其它名字即可,如 __func_rurl.c 。

 

这儿我们就假设编译很成功,没有遇到任何编译问题,当然不可能100%都不遇到的,一部分问题在手册里面给了指点,另外的问题则需要你个人多动手,多动脑,而且baidu,google也不会拒绝你使用他的。

 

使用篇

       经过前面的步骤,代码已经编译完了,可执行文件安装完毕同时默认的配置文件也安装了,那么我们就从使用上首先简单的做个介绍,给大家带来一个直观的认识。下文所举例子都会以sip为例,其他h323,iax,mgcp等等类似,不再赘述。

       使用之前大致说明一下安装后的asterisk文件分布情况以及作用。

/etc/asterisk  Asterisk主目录,包含其它关于Asterisk的配置文件; *zaptel.conf这个配置文件放在/etc,因为其它软件也可以使用Zaptel这个硬件及其驱动,所以不是放在/etc/asterisk里.

 

/usr/lib/asterisk/modules  这个目录包含所有可以加载Asterisk模块(应用程序\编辑器\格式和有用通道),在Asterisk启运时会加载这些模块(可以编辑modules.conf).

 

/var/lib/asterisk         比较重要的是astdb文件与agi-bin目录;  astdb包含Asterisk

当地数据库信息. 

 

sounds/                所有声音提示的文件在里面,包括Asterisk原代码中的sounds.txt文件

 

mohmp3/              如果配置了音乐保持,应用程序会在这个目录下查找mp3(用CBR

从文件中去除身份标签).

 

keys/                 使用公钥和私钥系统认证与一个由RSA数字签名形成的一对等连接.公钥和私钥的扩展名分别为.pub和.key

 

firmware/              这个目录含了很多Asterisk相兼容的设备固件,它只有iax/这个子目录,其中有Digium的IAXy的二进制固件镜像.

 

images/               只有在较多的支持并且利用图解式的图像设备被发布,这个目录将会与相应的目录有更大的关联.

 

/var/lib/asterisk/agi-bin   agi-bin包含所有脚本,可以通过许多已经建立的AGI应用程序与Asterisk连接.

/var/spool/asterisk

outgoing/               现在打电话的通道——呼叫信息目录普遍使用。

 

gcall/                  撤销了——包含了特殊呼叫方法的呼叫信息文件——不是打电话的好方法,因为这种方式太硬性了——不再使用。使用outgoing替代

 

tmp/                   中间/临时数据

 

voicemail/              语音和问候语。

运行调试asterisk

1. 运行调试常用命令

./asterisk & 在后台启动asterisk

./asterisk –vvvc 启动asterisk并尽量多的在控制台显示调试信息

./asterisk –r 连接asterisk控制台

set verbose 9999 设置打印详细信息

 

2.asterisk控制台下常用命令

 

sip reload 重新加载sip配置信息

sip set debug   设置显示更多的sip信息

sip set debug off关闭显示更多的sip信息

sip show channels 显示所有活动的SIP通道

sip show peers 显示所有已定义的SIP peer

 

 

dialplan show 显示拨号方案

dialplan reload重新加载拨打方案

 

stop gracefully 优雅地停止asterisk

stop now 立即停止运行asterisk

 

module show 显示所有已加载模块

module load cdr_radius.so     加载模块cdr_radius.so

module reload cdr_radius.so 重新加载模块cdr_radius.so

module unload cdr_radius.so 卸载模块cdr_radius.so

 

core show applications 显示所有的应用,比如Dial, Radius, Hangup, Answer等

core show channels 显示所有的通话频道

core show codecs 显示所有支持的编解码器

core show functions 显示所有的功能函数 

 在asterisk源码目录下运行make menuselect可以进入模块选择页面,在里面可以选择和去除一些模块。

 看完这些目录之后,对其大体的功能也可能会有点认识,还是从启动服务器还是聊起。启动服务器方法很多,我们按照手册中的描述选取一种

Asterisk –cvvvv   具体参数含义请参考手册

 

也可以通过运行 /usr/sbin/safe_asterisk 来运行。

我们下文的描述就会基于这个简单的拓扑展开讨论,这儿的tel都是sip电话,我们假定tel1号码为808,tel2号码为830,现在的简单需求就是我808能够打通830,实现双向通话。开始配置前,先了解主要配置文件的作用。

/etc/asterisk/asterisk.conf  主要配置文件,

/etc/zaptel.conf  硬件接口的基本层.    修改这个配置文件要用modprobe装载Linux Kernel使用模块.

/etc/asterisk/zapata.conf  为硬件配置Asterisk的接口.

/etc/asterisk/extensions.conf  拨号方案.

/etc/asterisk/sip.conf  SIP协议配置文件

/etc/asterisk/iax.conf  呼入和呼出IAX通道

/etc/asterisk/extensions.conf  拨号方案配置文件

/etc/asterisk/moduprobe.conf  加载模块配置文件

 

后续的工作主要就在这两份文件中开展,如果多了h323,则需要编辑h323.conf,其他通道协议类似。

我们要做的就是定义两个用户,添加到sip.conf里面,目前只做基于文件的用户管理,后续可以扩充到数据库之类的。这儿拨号规则细节就不在赘述,欲知详情,参见手册。

这儿只是把添加的用户配置列出来。

[830]

type=friend                   ; Friends place calls and receive calls

context=830          ; Context for incoming calls from this user

;secret=blahpoly

host=dynamic               ; This peer register with us

;dtmfmode=rfc2833             ; Choices are inband, rfc2833, or info

username=830                     ; Username to use in INVITE until peer registers

; Normally you do NOT need to set this parameter

;disallow=all

;allow=ulaw                     ; dtmfmode=inband only works with ulaw or alaw!

;progressinband=no              ; Polycom phones don't work properly with "never"

 

[808]

type=friend                   ; Friends place calls and receive calls

context=808          ; Context for incoming calls from this user

;secret=blahpoly

host=dynamic               ; This peer register with us

;dtmfmode=rfc2833             ; Choices are inband, rfc2833, or info

username=808                     ; Username to use in INVITE until peer registers

; Normally you do NOT need to set this parameter

;disallow=all

;allow=ulaw                     ; dtmfmode=inband only works with ulaw or alaw!

;progressinband=no              ; Polycom phones don't work properly with "never"

 

主要是定义了一个用户,号码分别为808,830。他们所处的拨号规则段分别为808,830。接着添加拨号规则的段。如下:

[830]

exten => s,1,Wait(1)                    ; Wait a second, just for fun

exten => s,n,Answer                   ; Answer the line

exten => s,n,Set(TIMEOUT(digit)=5)   ; Set Digit Timeout to 5 seconds

exten => s,n,Set(TIMEOUT(response)=10) ; Set Response Timeout to 10 seconds

exten => s,n(restart),BackGround(demo-congrats)     ; Play a congratulatory message

exten => s,n(instruct),BackGround(demo-instruct)     ; Play some instructions

exten => s,n,WaitExten                ; Wait for an extension to be dialed.

 

exten => 2,1,BackGround(demo-moreinfo)  ; Give some more information.

exten => 2,n,Goto(s,instruct)

 

exten => 3,1,Set(LANGUAGE()=fr)            ; Set language to french

exten => 3,n,Goto(s,restart)         ; Start with the congratulations

 

exten => 1000,1,Goto(default,s,1)

 

exten => 808,1,Goto(default,s,1)

 

exten => 500,1,VoicemailMain()

 

[808]

exten => s,1,Wait(1)                    ; Wait a second, just for fun

exten => s,n,Answer                   ; Answer the line

exten => s,n,Set(TIMEOUT(digit)=5)   ; Set Digit Timeout to 5 seconds

exten => s,n,Set(TIMEOUT(response)=10) ; Set Response Timeout to 10 seconds

exten => s,n(restart),BackGround(demo-congrats)     ; Play a congratulatory message

exten => s,n(instruct),BackGround(demo-instruct)     ; Play some instructions

exten => s,n,WaitExten                ; Wait for an extension to be dialed.

 

exten => 2,1,BackGround(demo-moreinfo)  ; Give some more information.

exten => 2,n,Goto(s,instruct)

 

exten => 3,1,Set(LANGUAGE()=fr)            ; Set language to french

exten => 3,n,Goto(s,restart)         ; Start with the congratulations

 

exten => 1000,1,Goto(default,s,1)

 

exten => 600,1,MeetMe(600,i,123456)

 

 

exten => 830,1,Voicemail(830@default)

;exten => 830,1,Dial(SIP/830,3)

exten => _[58]30,2,SayDigits(${EXTERN})

exten => 830,102,Playback(priv-recordintro)

exten => 830,103,Playback(spy-h323)

exten => 830,104,Hangup()

 

为什么拨号规则段加了那么多东西,后面再慢慢解释。其实对于我们简单的通话而言,根本不需要那么多,向下面这样就足够了。

[808]

exten => s,1,Wait(1)                    ; Wait a second, just for fun

exten => s,n,Answer                   ; Answer the line

exten => 830,n,Dial(SIP/830,3)

exten => 830,n,Hangup()

只看这些就简洁多了吧,而且基本工作正常,解释一下,客户端(例如800)在sip里面进行了配置,其属于808这个context,故他的所有拨号动作都在808里面进行了定义。当用户呼叫830的时候,他就跳到830这个扩展段,进行拨号。看dial这个函数很清晰,但是他的功能确实强大无比,例如现在我们拨的是sip用户,万一我们需要拨打h323用户怎么办?那就变成dial(h323/**,),.依此类推,所有的通道都可以采用同样的格式进行定义。

       这儿当然也可以制定的复杂一些,例如遇忙时候转语音什么的,在我们的实现中,遇忙跳转到N+101扩展,我们则定义一个忙转的扩展,如下

[808]

exten => s,1,Wait(1)                    ; Wait a second, just for fun

exten => s,2,Answer                   ; Answer the line

exten => 830,3,Dial(SIP/830,3)

exten => 830,4,Hangup()

exten => 830,104,Voicemail(830@default)

 

这样遇忙的时候,则会转移到语音邮件留言,有了上面的基础,你就可以随心所欲进行扩充了,还可以组建会议电话,呼叫等待,更多的功能就留给你进行挖掘了。

下面简单介绍一下语音信箱的配置,语音信箱的配置关键两个文件voicemail.conf和拨号规则文件extensions.conf.

Voicemail.conf 中要增加用于存放语音的邮箱,在asterisk中有专门的语法格式来申明:

Mailbox => password, name, email.

这只是一个最简单的格式,还有很多选项没有列出,如果感兴趣可以参阅相关文档,这里只是给出一个概念。Mailbox是邮箱的编号,通常符合关联设置的扩展号码。后面的password,name和email的意义就比较清晰了。

例如我们在voicemail的default context申明一个 101 => 123456, jone, jone@asteriskdocs.org. 然后在相对应的extensions.conf中当用户忙时或者相应超时调用这个邮箱:

Exten => 101,1,dial(${JONE},10,r)

Exten => 101,2,voicemail(u101@default)

Exten => 101,102,voicemail(b101@default)

接下来就是接收语音邮件了,同样在extensions.conf中加入一条语句:

Exten => 500,1,voicemailmain(),让用户通过拨打500来收听语音邮件。

 

配置就先说那么一些,其他也都是类似的配置,只是熟练程度问题了,原理相通,接下来就不在赘述功能配置,我们得花些精力来分析功能模块以及他们之间的相互配合问题,因为自己这些东西看的时间也不久,同时纯粹靠蒙,肯定很多地方考虑不周到的或者直接理解就是错误的,恳请各位不吝指导。

 

都说他功能强大,那么我们就要看看他到底有哪些功能,为什么强大,体现在哪儿。我就按照功能大致进行功能分类先。Asterisk大致可以按照应用,编码,文件,接入等功能模块进行粗略的分解。

首先是应用:目前我们支持语音邮件,个性铃声,电话会议,交互应答,电话座席,三方通话,呼叫ID,通话录音等等(后续补充)。

http://www.voip-info.org/wiki/view/Asterisk+PBX+functions

http://www.voip-info.org/wiki/view/PBX+features(列出有点多,请自行查看)

 

asterisk 相关的权威网址有两个,www.asterisk.org 和 www.voip-info.org,需要资料请优先考虑这两个地方。

编码格式:     

G.711 ulaw (as used in US)

G.711 alaw (as used in Europe)

G.723.1 - pass-thru for people who need a license , free for other people

G.726 - 32kbps in Asterisk 1.0.3, 16/24/32/40kbps in CVS HEAD.

G.729 - may require a license unless using pass-thru, free version available for use in countries without patents or for educational use only

GSM

iLBC

LPC10 (not recommended!)

Speex - configurable 4-48kbps, VBR, ABR, etc. see bug

adpcm   (ADPCM)

slin     (16 bit Signed Linear PCM)

g722    (G722)

jpeg     (JPEG image)

png     (PNG image)

h261    (H.261 Video)

h263    (H.263 Video)

h263p   (H.263+ Video)

h264    (H.264 Video)

 

文件格式:

adpcm      vox        vox                

slin       wav        wav                

slin       sln        sln|raw            

g722       g722       g722               

ulaw       au         au                 

alaw       alaw       alaw|al            

ulaw       pcm        pcm|ulaw|ul|mu     

gsm        gsm        gsm                

h264       h264       h264               

h263       h263       h263               

ilbc       iLBC       ilbc               

g729       g729       g729               

g726       g726-16    g726-16            

g726       g726-24    g726-24            

g726       g726-32    g726-32            

g726       g726-40    g726-40            

g723       g723sf     g723|g723sf        

gsm        wav49      WAV|wav49  

另外还可以支持MP3的文件格式。

 

语音通道:

Agent: ACD Agent channel

Console: Linux console client driver for sound cards (using OSS or ALSA)

H.323: An older VOIP protocol

IAX and IAX2: Inter-Asterisk Exchange protocol, Asterisk's own VOIP protocol

Local: Loopback into another context

MGCP: Media Gateway Control Protocol, another VOIP protocol

mISDN: mISDN channel

Modem: Confusingly, this is for connecting ISDN lines, not for use with modems. Deprecated.

NBS: using Network Broadcast Sound

phone: Linux Telephony channel

SIP: Session Initiation Protocol, the most common VOIP protocol

Skinny: A driver for Cisco Skinny Client Control Protocol (a VOIP protocol)

Gtalk: Google Talk Channel driver.

VOFR: voice over frame relay Adtran style

VPB: For connecting ordinary telephone and telephone lines using Voicetronix cards

Zap: For connecting ordinary telephones and telephone lines using Digium cards. Also for TDMoE and for Asterisk zaphfc

Celliax: let Asterisk manage GSM and CDMA cellular phones, and Skype calls to/from cellphones

Bluetooth: Allows the use of bluetooth devices to change routing - see CVS "chan_btp"

CAPI: ISDN CAPI channel

vISDN: vISDN channel (native BRI channel for HFC chipsets)

SCCP: An alternate Skinny/SCCP channel

Sirrix: ISDN BRI for Sirrix cards (with optional ISDN encryption)

UNISTIM: Nortel Unistim channel

Unicall: Replacement for zaptel, with R2 support

SS7: SS7 (ISUP on MTP2/3) channel

 

asterisk主体可以分为模块装载器,核心交换组件,编码转换,以及调度和IO管理。首先系统启动的时候,通过模块状态器把驱动模块进行加载和初始化,是他们能够完成语音通道的初始化,文件格式以及应用等初始化。所有事情做完后,准备接受电话的呼叫。核心交换组件开始工作,他通过各种接口接受呼叫,例如T1/E1,sip,h323等等,接着开始检索拨号配置文件,然后通知对端振铃,同时连接语音邮件,外出电话或者其他的应用程序。同时他还提供了一个调度和io管理,让驱动和应用程序之间相互协作。编码转换的工作就很明确,主要完成不同编码之间的转化以及评估。这样整个系统就在这三个部分的有序协调下开始了工作。

分享到:
评论

相关推荐

    Asterisk的介绍、架构示意图

    如《Practical Asterisk 1.4》、《Asterisk: O'REILLY The Future of Telephony》和《Elastix Without Tears》等,这些资料覆盖了从入门到进阶的各个方面,为用户提供全面的学习和参考材料。 总之,Asterisk不仅是...

    Asterisk实验手册

    Asterisk是一款开源的电话交换机(PBX)功能的软件,它能够实现多种电话终端的连接和管理,包括普通电话机、IP...通过这些手册,初学者可以有效地学习Asterisk的各项功能和配置方法,从而建立起自己的VoIP电话系统。

    C语言编程基础 ,C语言函数算法

    C语言的字符集包括英文字母(大写A~Z,小写a~z),数字(0~9),以及一系列特殊字符,如空格、感叹号、井号、百分号、 caret、ampersand、asterisk、下划线、加号、等于号、减号、波浪线、小于号、大于号、正斜杠、...

    电话客服系统1

    本项目以"电话客服系统1"为标题,使用C#编程语言,并依赖SQL数据库进行数据存储,是一个非常适合初学者和进阶者学习的案例。 1. **C#编程语言**:C#是一种面向对象的编程语言,由微软公司开发,广泛应用于Windows...

    spring-ai-spring-boot-autoconfigure-1.0.0-M5.jar中文文档.zip

    # 【spring-ai-spring-boot-autoconfigure-***.jar中文文档.zip】 中包含: 中文文档:【spring-ai-spring-boot-autoconfigure-***-javadoc-API文档-中文(简体)版.zip】 jar包下载地址:【spring-ai-spring-boot-autoconfigure-***.jar下载地址(官方地址+国内镜像地址).txt】 Maven依赖:【spring-ai-spring-boot-autoconfigure-***.jar Maven依赖信息(可用于项目pom.xml).txt】 Gradle依赖:【spring-ai-spring-boot-autoconfigure-***.jar Gradle依赖信息(可用于项目build.gradle).txt】 源代码下载地址:【spring-ai-spring-boot-autoconfigure-***-sources.jar下载地址(官方地址+国内镜像地址).txt】 # 本文件关键字: spring-ai-spring-boot-autoconfigure-***.jar中文文档.zip,java,spring-ai-spring-boot-autoconfigure-***.jar,org.springframework.ai,spring-ai-spring-boot-autoconfigure,***,org.springframework.ai.autoconfigure.anthropic,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,springframework,spring,ai,boot,autoconfigure,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压 【spring-ai-spring-boot-autoconfigure-***.jar中文文档.zip】,再解压其中的 【spring-ai-spring-boot-autoconfigure-***-javadoc-API文档-中文(简体)版.zip】,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件; # Maven依赖: ``` <dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-spring-boot-autoconfigure</artifactId> <version>***</version> </dependency> ``` # Gradle依赖: ``` Gradle: implementation group: 'org.springframework.ai', name: 'spring-ai-spring-boot-autoconfigure', version: '***' Gradle (Short): implementation 'org.springframework.ai:spring-ai-spring-boot-autoconfigure:***' Gradle (Kotlin): implementation("org.springframework.ai:spring-ai-spring-boot-autoconfigure:***") ``` # 含有的 Java package(包): ``` org.springframework.ai.autoconfigure.anthropic org.springframework.ai.autoconfigure.azure.openai org.springframework.ai.autoconfigure.bedrock org.springframework.ai.autoconfigure.bedrock.anthropic org.springframework.ai.autoconfigure.bedrock.anthropic3

    50页-道路环卫保洁服务项目管理计划方案.pdf

    在当今智慧城市的建设浪潮中,智慧环卫作为城市管理的重要组成部分,正以其独特的魅力引领着环卫行业的变革。本方案旨在通过一系列高科技手段,如物联网、大数据、云计算等,全面提升环卫作业效率与管理水平,为城市居民创造更加清洁、宜居的生活环境。 一、智慧环卫系统概述与核心亮点 智慧环卫系统是一个集机械化保洁、垃圾清运、设施管理、事件指挥调度等多功能于一体的综合性管理平台。其核心亮点在于通过高精度定位、实时监控与智能分析,实现环卫作业的精细化管理。例如,机械化保洁管理子系统能够实时监控机扫车、洒水车等作业车辆的运行状态,自动规划最优作业路线,并根据作业完成情况生成考核评价报表,极大地提高了作业效率与服务质量。同时,垃圾清运管理子系统则通过安装GPS定位设备和油量传感器,对清运车辆进行全方位监控,确保垃圾清运过程的规范与高效,有效解决了城市垃圾堆积与随意倾倒的问题。此外,系统还配备了垃圾箱满溢报警系统,通过智能感应技术,当垃圾箱内垃圾达到预设高度时自动报警,提醒作业人员及时清运,避免了因垃圾满溢而引发的居民投诉与环境污染。 二、智慧环卫系统的趣味性与知识性融合 智慧环卫系统不仅实用性强,还蕴含着丰富的趣味性与知识性。以餐厨垃圾收运管理子系统为例,该系统通过为餐厨垃圾收运车辆安装GPS定位、车载称重、视频监控等多种感知设备,实现了对餐厨垃圾收运过程的全程监控与智能管理。作业人员可以通过手机APP实时查看车辆位置、行驶轨迹及收运情况,仿佛在玩一场现实版的“垃圾追踪游戏”。同时,系统还能自动生成餐厨垃圾收运统计报表,帮助管理人员轻松掌握收运量、违规情况等关键数据,让数据管理变得既科学又有趣。此外,中转站视频监控子系统更是将趣味性与实用性完美结合,通过高清摄像头与双向语音对讲功能,实现了对中转站内外环境的实时监控与远程指挥,让管理人员足不出户就能掌控全局,仿佛拥有了一双“千里眼”和一对“顺风耳”。 三、智慧环卫系统的未来展望与社会价值 随着科技的不断进步与智慧城市建设的深入推进,智慧环卫系统将迎来更加广阔的发展前景。未来,智慧环卫系统将更加注重数据的深度挖掘与分析,通过大数据与人工智能技术,为城市环卫管理提供更加精准、高效的决策支持。同时,系统还将加强与其他城市管理系统的互联互通,实现资源共享与协同作战,共同推动城市管理的智能化、精细化水平。从社会价值来看,智慧环卫系统的推广与应用将有效提升城市环境卫生质量,改善居民生活环境,提升城市形象与竞争力。此外,系统还能通过优化作业流程、减少资源浪费等方式,为城市可持续发展贡献重要力量。可以说,智慧环卫系统不仅是城市管理的得力助手,更是推动社会进步与文明发展的重要力量。

    微信小程序驾校管理平台约车小程序demo完整源码下载-完整源码.zip

    微信小程序驾校管理平台约车小程序demo完整源码下载_完整源码

    MATLAB实现含风电不确定性的电力系统低碳调度模型

    内容概要:本文详细介绍了使用MATLAB和YALMIP工具包构建的电力系统低碳调度模型。该模型主要解决风电和负荷不确定性带来的挑战,采用模糊机会约束处理风电预测误差,将复杂的非线性约束转化为混合整数线性规划问题。文中展示了如何通过分段线性化、大M法等技巧提高求解效率,并实现了包括火电、水电、风电、储能等多种能源类型的综合调度。此外,还讨论了碳排放成本、启停时间约束、爬坡率约束以及储能系统的建模方法。最终,通过结果可视化展示各成本构成及其对调度策略的影响。 适合人群:从事电力系统优化研究的专业人士,尤其是熟悉MATLAB编程并希望深入了解低碳调度模型的研究人员和技术人员。 使用场景及目标:适用于需要处理风电不确定性、优化电力系统调度的研究项目。目标是降低电力生产成本的同时减少碳排放,确保电力系统的稳定性和经济性。 其他说明:代码中包含了详细的注释和扩展提示,方便进一步修改与应用。对于大规模电力系统调度问题,提供了高效的求解策略和性能优化建议。

    OFDM、OOK、PPM、QAM 的误码率模拟【绘制不同调制方案的误码率曲线】附Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    my lib1.SCHLIB

    my lib1.SCHLIB

    工控领域西门子PLC动态加密计时催款程序:设备催款与规范验收的技术实现

    内容概要:本文详细介绍了西门子PLC动态加密计时催款程序的设计与实现。该程序旨在解决工控领域中常见的客户拖延付款问题。通过利用PLC的定时器功能和复杂的加密算法,程序能够在设备运行一段时间后自动触发锁机机制,提醒客户按时验收付款。主要内容包括加密计时的核心思路、代码示例与分析、动态加密的具体实现方法以及柔性锁机的应用技巧。此外,文中还提供了具体的SCL代码片段,展示了如何通过时间校验、动态密钥生成和渐进式降速等方式实现灵活的锁机控制。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是负责PLC编程和设备管理的专业人士。 使用场景及目标:适用于设备调试完成后客户拖延付款或拒绝验收的场景。主要目标是通过技术手段保障供应商的合法权益,促进客户按时履约,减少因款项延迟带来的经济损失。 其他说明:文中强调了技术催款并非为了惩罚客户,而是为了建立良好的契约精神。同时,作者分享了一些实用的经验和技巧,如设置合理的调试接口、时间缓冲期和操作提示,确保程序既有效又人性化。

    75页-智慧环卫平台解决方案(2022).pdf

    在当今智慧城市的建设浪潮中,智慧环卫作为城市管理的重要组成部分,正以其独特的魅力引领着环卫行业的变革。本方案旨在通过一系列高科技手段,如物联网、大数据、云计算等,全面提升环卫作业效率与管理水平,为城市居民创造更加清洁、宜居的生活环境。 一、智慧环卫系统概述与核心亮点 智慧环卫系统是一个集机械化保洁、垃圾清运、设施管理、事件指挥调度等多功能于一体的综合性管理平台。其核心亮点在于通过高精度定位、实时监控与智能分析,实现环卫作业的精细化管理。例如,机械化保洁管理子系统能够实时监控机扫车、洒水车等作业车辆的运行状态,自动规划最优作业路线,并根据作业完成情况生成考核评价报表,极大地提高了作业效率与服务质量。同时,垃圾清运管理子系统则通过安装GPS定位设备和油量传感器,对清运车辆进行全方位监控,确保垃圾清运过程的规范与高效,有效解决了城市垃圾堆积与随意倾倒的问题。此外,系统还配备了垃圾箱满溢报警系统,通过智能感应技术,当垃圾箱内垃圾达到预设高度时自动报警,提醒作业人员及时清运,避免了因垃圾满溢而引发的居民投诉与环境污染。 二、智慧环卫系统的趣味性与知识性融合 智慧环卫系统不仅实用性强,还蕴含着丰富的趣味性与知识性。以餐厨垃圾收运管理子系统为例,该系统通过为餐厨垃圾收运车辆安装GPS定位、车载称重、视频监控等多种感知设备,实现了对餐厨垃圾收运过程的全程监控与智能管理。作业人员可以通过手机APP实时查看车辆位置、行驶轨迹及收运情况,仿佛在玩一场现实版的“垃圾追踪游戏”。同时,系统还能自动生成餐厨垃圾收运统计报表,帮助管理人员轻松掌握收运量、违规情况等关键数据,让数据管理变得既科学又有趣。此外,中转站视频监控子系统更是将趣味性与实用性完美结合,通过高清摄像头与双向语音对讲功能,实现了对中转站内外环境的实时监控与远程指挥,让管理人员足不出户就能掌控全局,仿佛拥有了一双“千里眼”和一对“顺风耳”。 三、智慧环卫系统的未来展望与社会价值 随着科技的不断进步与智慧城市建设的深入推进,智慧环卫系统将迎来更加广阔的发展前景。未来,智慧环卫系统将更加注重数据的深度挖掘与分析,通过大数据与人工智能技术,为城市环卫管理提供更加精准、高效的决策支持。同时,系统还将加强与其他城市管理系统的互联互通,实现资源共享与协同作战,共同推动城市管理的智能化、精细化水平。从社会价值来看,智慧环卫系统的推广与应用将有效提升城市环境卫生质量,改善居民生活环境,提升城市形象与竞争力。此外,系统还能通过优化作业流程、减少资源浪费等方式,为城市可持续发展贡献重要力量。可以说,智慧环卫系统不仅是城市管理的得力助手,更是推动社会进步与文明发展的重要力量。

    spring-ai-autoconfigure-vector-store-mongodb-atlas-1.0.0-M7.jar中文-英文对照文档.zip

    # 【spring-ai-autoconfigure-vector-store-mongodb-atlas-1.0.0-M7.jar中文-英文对照文档.zip】 中包含: 中文-英文对照文档:【spring-ai-autoconfigure-vector-store-mongodb-atlas-1.0.0-M7-javadoc-API文档-中文(简体)-英语-对照版.zip】 jar包下载地址:【spring-ai-autoconfigure-vector-store-mongodb-atlas-1.0.0-M7.jar下载地址(官方地址+国内镜像地址).txt】 Maven依赖:【spring-ai-autoconfigure-vector-store-mongodb-atlas-1.0.0-M7.jar Maven依赖信息(可用于项目pom.xml).txt】 Gradle依赖:【spring-ai-autoconfigure-vector-store-mongodb-atlas-1.0.0-M7.jar Gradle依赖信息(可用于项目build.gradle).txt】 源代码下载地址:【spring-ai-autoconfigure-vector-store-mongodb-atlas-1.0.0-M7-sources.jar下载地址(官方地址+国内镜像地址).txt】 # 本文件关键字: spring-ai-autoconfigure-vector-store-mongodb-atlas-1.0.0-M7.jar中文-英文对照文档.zip,java,spring-ai-autoconfigure-vector-store-mongodb-atlas-1.0.0-M7.jar,org.springframework.ai,spring-ai-auto

    MATLAB多目标粒子群算法优化冷热电联供系统运行成本与能效

    内容概要:本文介绍了利用MATLAB实现多目标粒子群算法(MOPSO),用于优化冷热电联供(CCHP)系统的运行。文中详细描述了系统架构,包括燃气轮机、电制冷机、锅炉以及风光机组等设备的协同工作。通过引入多目标优化,同时追求最低运行成本和最高综合能效。算法实现了自适应惯性权重调整、动态边界处理、非支配排序等关键技术,显著提升了优化性能。实验结果显示,相比传统方案,该方法能够节省15%以上的运营成本,并提高系统能效23.7%,减少碳排放18.2%。 适用人群:从事能源管理、电力系统优化的研究人员和技术人员,尤其是对MATLAB编程有一定基础的人士。 使用场景及目标:适用于需要进行冷热电联供系统优化的企业或研究机构,旨在寻找成本与能效之间的最佳平衡点,提供多种可供选择的优化方案,帮助决策者制定合理的运行策略。 其他说明:代码设计注重实用性,包含详细的注释和模块化的文件结构,便于理解和修改。此外,还提供了24小时调度结果的三维可视化展示,直观地反映了不同目标间的权衡关系。

    【医疗影像分析】深度学习技术在医学影像诊断中的多维度优势及典型应用:从自动特征提取到临床价值创造

    内容概要:深度学习在医疗影像分析中展现出多维度的优势。首先,它能够自动特征提取并高效学习,通过多层神经网络自动识别医学影像中的复杂特征,无需人工干预,并能整合多种模态的数据,如CT、MRI、X光等,结合患者其他信息建立更全面的诊断模型。其次,在高精度诊断与效率提升方面,深度学习模型在多个任务中的准确率普遍超过90%,基于GPU加速的模型还能实现快速影像分析。第三,其具有复杂的场景适应性与创新应用,可以进行精准分割、三维重建以及长尾问题与罕见病的识别。第四,从临床价值来看,它减轻了医生的工作负担,促进了医疗资源的公平化。最后,深度学习还具有良好的可扩展性,支持跨学科研究,开源生态也有助于标准化建设。尽管存在数据标注依赖、模型可解释性和计算资源限制等问题,但深度学习的应用正逐步从辅助诊断向精准治疗、预后预测等全流程渗透。 适合人群:医疗影像研究人员、临床医生、AI医疗从业者。 使用场景及目标:①了解深度学习在医疗影像分析中的具体优势和技术细节;②探索深度学习应用于医疗影像分析的新思路和新方法;③评估深度学习技术在实际临床环境中的可行性。 其他说明:深度学习虽然具有诸多优势,但在实际应用中还需考虑数据标注质量、模型可解释性和计算资源等因素,同时应关注技术创新与伦理规范的平衡。

    塘沽市民滨海旅游与生态意识的调查报告.doc

    塘沽市民滨海旅游与生态意识的调查报告.doc

    spring-ai-mcp-1.0.0-M6.jar中文文档.zip

    # 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    UDQsinepwm_1p_UPFC.png

    UDQsinepwm_1p_UPFC

    spring-ai-zhipuai-1.0.0-M6.jar中文文档.zip

    # 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    3dmax插件LMExporter.ms

    3dmax插件LMExporter

Global site tag (gtag.js) - Google Analytics