控制系统工程实例-abb acs510 变频器中文使用说明书
第11章 控制系统工程实例
本章主要知识点
实际工程案例的应用
本章节会针对实际工程来给读者作介绍,从简单的控制系统开始讲解,深入浅出,重点讲解实
例编程的思想、程序执行过程和编程体会,使初学 CoDeSys 的读者能够尽快的掌握编程技巧。
11.1.1 圆盘 180°正反转控制
1. 控制要求
圆盘由电动机拖动,当按下启动按钮后,控制转盘正转 180°后,停留 30s,再反转 180°,并不
断重复上述过程。按下停止按钮,转盘应转 180°到原位,碰到限位开关并停止。若整个过程中有意
外,按下急停按钮后,要求转盘立即停止。
图 11.X 圆盘控制示意图
系统的 I/O 地址分配表如表 11-x 所示。
表 11-x I/O地址分配表
地址 说明 地址 说明
%IX0.0 限位开关 bLimited %QX0.0 正转接触器 bCW
%IX0.1 启动按钮 bStart %QX0.1 反转接触器 bCCW
%IX0.2 停止按钮 bStop
%IX0.3 手动开关 bManual
%IX0.4 急停按钮 bEMO
2. 编程
整个圆盘 180°正反转控制系统的变量声明如下:
VAR
bLimmited AT%IX0.0:BOOL;
bStart AT%IX0.1:BOOL;
bStop AT%IX0.2:BOOL;
bEMO AT%IX0.3:BOOL;
bCW AT%QX0.0:BOOL;
bCCW AT%QX0.1:BOOL;
bStarted:BOOL;
bStopped:BOOL;
中控台
启动 停止 急停
圆盘
正转 反转
限位开关
0°
随机变量序列的两种收敛性-840dsl五轴应用调试包
第四章 大数定律与中心极限定理
§ 4.1 随机变量序列的两种收敛性
肉窑’要
1. 依概率收敛 设 i XI 为一随机变量序列,X 为一随机变量.如果对任意
的 e > 0 ,有
旦旦P l Ix. - x I < s l = 1 ,
则称 l XB l 依概率收敛于 X,记作 x. 工今 x.
2. 依概率收敛与服从大鼓定律闹的关系 设 l x. 1 为一随机变量序列,记Y. =
_!_ ) X,,E(Y) =土了 E(X,). 则 l x. l 服从大数定律等价于 Y. - E( Y. ) 工,. 0.
n f;"l n t;1
3. 侬概率收敏的四则运算 如果 x. 工+ α, Y. 工+ b,则有
p
( 1) x. 土 Y”一→ α 土 b ;
p
(2)X.xY. 一-+ a x b;
(3) x. ÷ Y.~ a÷ b ( b 手 0).
4. 按分布收敏、弱收敛 设 i F二( x) l 是随机变量序列 l X. l 的分布函数列,
F(x) 为 X的分布函数.若对 F(功的任一连续点 z,都有 lim F” ( x) = F(x ) ,则称
w
! F. ( 先) I 弱收敛于 F( x ) ,记作 F.(x) ---+F(x ) .也称 i x路 i 按分布收敛于X,记作
L
X 一→ x.
5. 侬概率收触与按分布收敛阔的关系
p L
( 1) x. 一→ X =辛 x. 一→ x.
p L
(2) x. _:_→ C 字辛 X抱 一→ c (其中 c 为常数).
习题局僻答 4.1
p
1. 如果 x. 一→ X,且 x. 一→ Y. 试证:P( X = Y) = 1.
BUS部份-academicwriting3rdedanswerkey
9.1 BUS部份
在 Constraint Manager 中可以将相同作用的讯号组合在一起,成为一组 BUS,
以方便使用者查看或是同时设定整组 BUS。
接下来将介绍如何使用 BUS 的相关功能。
9.1.1 藉由一个讯号建立 BUS
首先复制范例光盘中的AllegroII\Cmgr目录下的 cmgr1.brd到你的工作目录
下,然后使用 Allegro 开启电路板档案 cmgr1.brd。
1. 先确认 Allegro 系统没有执行任何的命令后,执行 Setup>Electrical
Constraint Spreadsheet…命令,出现 Constraint Manager 的窗口。
(1) 如果在 Constraint Manager 的窗口中没有出现工作窗体选择区,可以使
用 View>Options…命令,然后勾选在 Main Window 中的 Worksheet
Selector 选项,即可再次显示出工作窗体选择区。
(2) 首 先 使 用 鼠 标 左 键 点 选 位 于 左 边 工 作 窗 体 选 择 区 中 的
Net>Routing>Relative_Propagation_Delay 工作窗体,然后此窗体会出现
在右边的工作窗体编辑区中。
(3) 最后在左边工作窗体选择区中的下面空白处按下鼠标右键,出现一个
弹出式选单,选择 Hide 功能,将左边的工作窗体选择区隐藏起来,如
图 9-1 所示。
图 9-1
管理任务和调度任务-北邮通信原理复试
实验名称: 6.10 管理任务和调度任务
管理任务
任务表示不立即完成的系统活动,如迁移虚拟机。任务由通过 vSphere Web Client 实时执
行的高级别活动以及调度在以后或定期进行的活动启动。例如,关闭虚拟机电源就是一项
任务。您可以在每天晚上手动执行此任务,或者也可以设置一个已调度任务在每天晚上为
您关闭虚拟机电源。
查看任务
您可在 vSphere Web Client 中查看与单个对象或所有对象关联的任务。
默认情况下,对象的任务列表还包括针对其子对象执行的任务。可以通过移除对子对象执
行的任务或通过使用关键字搜索任务的方式筛选列表。如果登录到属于连接组的 vCenter
Server 系统中,则任务列表的相应列中将显示在其上执行任务的 vCenter Server 系统的名
称。
顶层结构-小米2018年财务年报
1.1 功能特点
● 采用完全同步设计
● 指令集和标准 8051 微控制器完全兼容
● 指令执行时间为 1~4 个时钟周期,执行性能优于标准 8051 微控制器 8 倍左右
● 用户可选择定时器/计数器、串行接口单元的数量
● 新增了特殊功能寄存器用于选择不同的定时器/计数器、串行接口单元
● 可选择是否使用乘法器(乘法指令 MUL)
● 可选择是否使用除法器(除法指令 DIV)
● 可选择是否使用十进制调整功能(十进制调整指令 DA)
● I/O 口不复用
● 内部带 256Bytes RAM
● 最多可扩展至 64Kbytes 的 ROM 和 64Kbytes 的 RAM
● 最多可扩展至 64Kbytes 的 ROM 和 64Kbytes 的 RAM
1.2 顶层结构
MC8051 IP Core 顶层结构图如图 1.1 所示,图中指示了 mc8051_core 的顶层结构以及
同 三个存储模块的连接关系,同时显示了顶层的输入输出 I/O 口,各 I/O 信号的描述如表
1.1 所示。定时器/计数器和串行接口单元对应于图中的 mc8051_tmrctr 和 mc8051_siu 模块,
数量是可选择的,在图中用虚线表示。
其他生成方案-彩色uml建模(四色原型)object modeling in color _peter coaderic lefebvrejeff de luca著
20.13 其他生成方案
目前为止我们已经描述的方法,使用 MCMC 采样、原始采样或两者的一些混
合来生成样本。虽然这些是生成式建模中 流行的方法,但它们绝不是唯一的方法。
从自编码器采样-彩色uml建模(四色原型)object modeling in color _peter coaderic lefebvrejeff de luca著
20.11 从自编码器采样
在第十四章中,我们看到许多种学习数据分布的自编码器。得分匹配、去噪自
编码器和收缩自编码器之间有着密切的联系。这些联系表明某些类型的自编码器以
某些方式学习数据分布。我们还没有讨论如何从这样的模型中采样。
某些类型的自编码器,例如变分自编码器,明确地表示概率分布并且允许直接
的原始采样。而大多数其他类型的自编码器则需要 MCMC 采样。
TCP的首部-深信服scsa认证考试总题库
17.3 TCP的首部
T C P数据被封装在一个 I P数据报中,如图1 7 - 1所示。
图17-1 TCP数据在IP数据报中的封装
图1 7 - 2显示T C P首部的数据格式。如果不计任选字段,它通常是 2 0个字节。
图17-2 TCP包首部
第17章 TCP:传输控制协议使用171
下载
IP数据报
TCP报文段
IP首部
20字节 20字节
TCP首部 TCP数据
16位源端口号 16位目的端口号
32位序号
32位确认序号
16位窗口大小
16位紧急指针16位检验和
保留(6位)
选项
数据
4位首部
长度
组件更换示例-安川伺服驱动说明书.
驱动系统基本信息
13.8 组件更换示例
驱动功能
886 功能手册, (FH1), 04/2014, 6SL3097-4AB00-0RP4
13.8 组件更换示例
说明
我们建议一个驱动组合中的所有组件应采用相同的固件版本,这样便可以使用该版本的所
有功能。
描述
比较方式设为最高级时,请遵照以下示例。
分为以下情况:
● 组件订货号不同
● 组件订货号相同
– 组件更换时拓扑结构比较激活(p9909 = 1)
– 组件更换时拓扑结构比较不激活(p9909 = 0)
p9909 = 1
时,会自动从实际拓扑结构中将新换入组件的序列号、硬件版本自动传送到设定拓扑结构
中,并非易失地加以保存。
p9909 = 0 时不会自动传送序列号和硬件版本。
此时,当电子功率铭牌中的数据一致时,必须由 p9904 = 1 或 p9905 = 1 激活传送。
新换入组件的电子功率铭牌上的以下数据必须和旧组件相同:
● 组件类型,例如:SMC20
● 订货号,例如:6SL3055–0AA00–5Bxx
电压监控模块-安川伺服驱动说明书.
矢量控制
5.19 电压监控模块
驱动功能
功能手册, (FH1), 04/2014, 6SL3097-4AB00-0RP4 257
5.19 电压监控模块
在矢量控制和“V/f”控制中使用以下功能时,需要使用电压监控模块(VSM):
● 同步
通过“同步”功能可以使驱动和当前电源/电网同步,同步后便可以直接切换到电网上(
旁路)。
另一个用途是电机在电网上暂时工作,这样可以在设备不停机的状态下进行变频器维
护。
选择了外部采集实际电压 (p3800 = 1) 时,电压由 VSM
采集,该模块连接到电源相位上。 该电压值必须由模拟量接口 r3661 和 r3662
传送给同步。
● 捕捉重启
在上电后,“捕捉重启”功能将电机模块自行切换到一个正在旋转的电机上。
在无编码器运行中,首先搜索当前电机转速。
使用永磁同步电机时,需要使用一个电压监控模块(VSM),详细说明请参见文档:SIN
AMICS S120 控制单元手册。
可在异步电机上使用一个 VSM,以缩短查找时间(参见 快速捕捉重启 (页 252))。
如果只有一个 VSM,那么当“同步”被禁用时,该 VSM 只用于采集电机电压 (p3800 =
0)。
拓扑结构视图
在 SINAMICS S120 驱动上,VSM 应用在编码器侧。 在驱动对象“VECTOR”上,VSM
只在无编码器运行方式中使用。 VSM连接到拓扑结构中电机编码器的位置上。
通过 STARTER 调试 VSM
在 STARTER 的调试向导中可以选择 VSM 用于驱动对象“VECTOR” 。 由于 VSM
没有分配到编码器数据组(EDS),因此不能在编码器侧选择。 在参数 p0151[0...1]
中必须输入 VSM 在当前拓扑结构中的组件号。 该参数会向 VSM 分析环节分配 VSM
数据组。 通过参数 p0155[0...n]“激活/禁用电压监控模块”,可以将 VSM
作为拓扑结构中的组件明确地激活或禁用。
软化功能-安川伺服驱动说明书.
矢量控制
5.6 软化功能
驱动功能
214 功能手册, (FH1), 04/2014, 6SL3097-4AB00-0RP4
5.6 软化功能
软化功能(通过 p1492 使能)可以确保在负载力矩增加时转速设定值按比例降低。
① 仅在前馈控制激活时生效 (p1496 > 0)
② 仅在 SLVC 中生效
图 5-11 带有软化功能的转速控制器
软化功能会限制机械相连、但以另一转速旋转的驱动的转矩,比如:货车上的导辊。
因此,当它和转速受控的主驱动的转矩设定值综合应用时,也可以实现有效的负载分配;
与转矩控制以及采用过调制和限幅的负载分配方式相比,该功能在设置合理时甚至可“软
化”机械连接,控制滑差。
该方法只适用于经常需要进行急剧加速和制动的驱动。
比如:在 2
个或多个电机机械连接或者在一根轴上工作,并且满足上述要求时,可使用软化。
该功能会相应地调节单个电机的转速,从而限制可能由机械连接产生的转矩差值,并且在
转矩过大时减轻驱动负载。
马尔科夫模型-effective akka
13.1 马尔科夫模型
处理顺序数据的最简单的⽅式是忽略顺序的性质,将观测看做独⽴同分布,对应于图13.2所
⽰的图。然⽽,这种⽅法⽆法利⽤数据中的顺序模式,例如序列中距离较近的观测之间的相关
性。例如,假设我们观测⼀个⼆值变量,这个⼆值变量表⽰某⼀天是否下⾬。给定这个变量的
⼀系列观测,我们希望预测下⼀天是否会下⾬。如果我们将所有的数据都看成独⽴同分布的,
那么我们能够从数据中得到的唯⼀的信息就是⾬天的相对频率。然⽽,在实际⽣活中,我们知
道天⽓经常会呈现出持续若⼲天的趋势。因此,观测到今天是否下⾬对于预测明天是否下⾬会
有极⼤的帮助。
为了在概率模型中表⽰这种效果,我们需要放松独⽴同分布的假设。完成这件事的⼀种最简
单的⽅式是考虑马尔科夫模型(Markov model)。⾸先我们注意到,不失⼀般性,我们可以使
⽤概率的乘积规则来表⽰观测序列的联合概率分布,形式为
p(x1, . . . ,xN ) = p(x1)
N∏
n=2
p(xn | x1, . . . ,xn−1) (13.1)
如果我们现在假设右侧的每个条件概率分布只与最近的⼀次观测有关,⽽独⽴于其他所有之前
的观测,那么我们就得到了⼀阶马尔科夫链(first-order Markov chain),如图13.3所⽰。这个模
型中,N次观测的序列的联合概率分布为
p(x1, . . . ,xN ) = p(x1)
N∑
n=2
p(xn | xn−1) (13.2)
410
判别函数-effective akka
4.1 判别函数
判别函数是⼀个以向量x为输⼊,把它分配到K个类别中的某⼀个类别(记作Ck)的函数。
本章中,我们把我们的精⼒集中于线性判别函数(linear discriminant function),即那些决策⾯
是超平⾯的判别函数。为了简化讨论,我们⾸先考虑两类的情形,然后把讨论扩展到K > 2的
情形。
4.1.1 ⼆分类
线性判别函数的最简单的形式是输⼊向量的线性函数,即
y(x) = wTx+ w0 (4.4)
其中w被称为权向量(weight vector),w0被称为偏置(bias)。注意不要把这⾥的偏置与统计
学中的偏置弄混淆。偏置的相反数有时被称为阈值(threshold)。对于⼀个输⼊向量x,如
果y(x) ≥ 0,那么它被分到C1中,否则被分到C2中。对应的决策边界因此由y(x) = 0确定,它对
应着D维空间的⼀个(D − 1)维的超平⾯。考虑两个点xA和xB,两个点都位于决策⾯上。由
于y(xA) = y(xB) = 0,我们有wT (xA − xB) = 0,因此向量w与决策⾯内的任何向量都正交,
从⽽w确定了决策⾯的⽅向。类似地,如果x是决策⾯内的⼀个点,那么y(x) = 0,因此从原点
到决策⾯的垂直距离为
wTx
∥w∥
= −
w0
∥x∥
(4.5)
因此我们看到偏置参数w0确定了决策⾯的位置。图4.1给出了D = 2的情况下的这些性质。
此外,我们注意到y(x)的值给出了点x到决策⾯的垂直距离r的⼀个有符号的度量。为了说
明这⼀点,考虑任意⼀点x和它在决策⾯上的投影x⊥,我们有
x = x⊥ + r
w
∥w∥
(4.6)
将 这 个 等 式 的 两 侧 同 时 乘 以wT , 然 后 加 上w0, 并 且 使 ⽤y(x) = wT + w0以
及y(x⊥) = wTx⊥ + w0 = 0,我们有
r =
y(x)
∥w∥
(4.7)
图4.1说明了这个结果。
131
林冠变化检测-pt5108规格书 high-psrr 500ma ldo
图3.5 快速大气校正参数设置
(3) 使用同样方法对“aug_25_2007.dat”进行大气校正。
3.3 林冠变化检测
本步骤获取两个时相的归一化植被指数差,通过分析归一化植被指数差获取林冠变化信
息,在 Image Difference Workflow 工具中完成整个处理过程,操作过程如下:
(1) 在 Toolbox 工具箱中,双击 Change Detection/Image Change Workflow 工具,打
开 Image Change 面板,分别为 Time1 File 选项选择“oct_07_2002_quac.dat”大气校正结果
和为 Time2 File 选择“aug_25_2007_quac.dat”大气校正结果。切换 Mask 选项,选择前面获
取的林区分类栅格图像。
比较指令概述-arcgis中面提取中心线_流程
2.1 比较指令概述
描述
根据您选择的比较类型来比较 ACCU1和 ACCU2:
== ACCU1等于 ACCU2
<> ACCU1不等于 ACCU2
> ACCU1大于 ACCU2
< ACCU1小于 ACCU2
>= ACCU1大于等于 ACCU2
<= ACCU1小于等于 ACCU2
如果比较结果为 true,则此函数的 RLO为“1”。状态字位 CC 1和 CC 0表示关系
“小于”、“等于”或“大于”。
有执行以下功能的比较指令:
• ? I 比较整数(16位)
• ? D 比较长整数(32位)
• ? R 比较浮点数(32位)
工控编程吧 gkbc8.com
工控编程吧 gkbc8.com
其他一些例子-高校正版授权endnote x9下载、安装及使用详细教程
25.9 其他一些例子
现在开始回答前面一些没有回答的问题,我们将用 S N M P的知识进行解释。
25.9.1 接口MTU
回忆一下在11 . 6节的实验中,我们试图得出一条从 n e t b到s u n的S L I P连接的M T U。现在可
以采用 S N M P得到这个 M T U。首先从 I P路由表中取到 S L I P连接( 1 4 0 . 2 5 2 . 1 . 2 9)的接口号
(i p R o u t e I f I n d e x),然后就可以用这个数值进入接口表并且取得想要的 S L I P连接的M T U
(通过S L I P的描述和数据类型)。
可以看到,即使连接的类型是 S L I P连接,但是M T U仍设置为以太网,其值为 1 5 0 0,目的
可能是为了避免分片。
25.9.2 路由表
回忆一下在 1 4 . 4节中,我们讨论了 D N S如何进行地址排序的问题。当时我们介绍了从域
名服务器返回的第 1个I P地址是和客户有相同子网掩码的情况。还介绍了用其他的 I P地址也会
正常工作,但是效率比较低。现在我们从 S N M P的角度来查阅路由表的入口,在这里将用到前
面章节中和 I P路由有关的很多相关知识。
路由器g e m i n i是一个多接口主机,有两个以太网接口。首先确认一下两个接口都可以
Te l n e t登录:
288使用TCP/IP详解,卷1:协议
下载
来替代地子采样-vscode 配置 python3开发环境的方法
整变换函数来说太慢了。如果我们通过把 ImageSampleDistance 设置为 2.0 来替代地子采样
沿着沿着每个轴的其它光线,我们会只用 1 妙就可以得到像中间展示的那个一样的图象。因
为对于有效的交互这仍然可能太慢,我们可以每次子采样四个光线,而且每秒得到几乎 4
帧绘制率的在右侧展示的图象。它可能是 blocky 的,但是每秒 4 帧地旋转一个 blocky 体比
每 4 秒 1 帧地旋转一个完全分辨率的体要容易地多。
对于纹理投射方法中精度和速度的平衡来说没有嵌入的自动技术。这可以由用户使用
vtkImageResample 相当容易地创建一个低分辨率体,和替代地绘制这个新体来做到。因为纹
理投射方法的速度高度地取决于体的大小,这会取得在一个光线投射方法中降低光线数目的
类似结果。另外一个选择是降低穿过体的被采样的平面的数目。默认地,被绘制的纹理化的
嵌块数目会等同于沿着体的主要轴(由观察方向决定)的采样的数目。你可能设置
MaximumNumberOfPlanes 实例变量来降低纹理化的嵌块数目因此改善了效果。默认的值是
0,这意味着对于平面的数目没有限制。
使用 vtkLODProp3D 来改善效果
vtkLODProp3D 是一个允许多个层次细节的集成而且根据 prop 的被分配的绘制时间决定了
对于每个帧绘制哪个的一个 3D prop。(看 64 页的“vtkLODProp3D”)。prop 的被分配的绘
制时间取决于绘制窗口的期望跟新率,绘制窗口中的绘制器的数目,绘制器中 prop 的数目,
和一个 culler 根据屏幕范围或者其他重要的因素可能作出的任何可能的调整。
使用一个 vtkLODProp3D,把一些绘制技术收集到一个 prop 是可能的,而且允许 prop
决定使用哪个技术。考虑以下的创建一个 vtkLODProp3D 例子:
什么是Web页面?-(华为入门教程)verilog hdl 华为入门教程
29.1 什么是Web页面?
We b页面或文挡是包含有H T M L标记的文件。当浏览器连接到一个 We b页面上时,浏览器
就会根据相应的H T M L标记来显示该页面。We b页面中可以含有非常丰富的信息,它可以包含
指向其他页面的链接、各种色彩、高亮标题、各种字体、直线、表格,还可以包含图像和声
音。
We b页面可以分为两类:动态的页面和静态的页面。静态的页面是用于显示信息或下载
文件。而动态的页面是交互型的,它们可以按照你所提供的信息产生相应的结果。动态页面
还可以用于显示实时变化的信息,如股票价格,或用于完成某些监视任务。如果想要执行这
种类型的处理,就需要编写脚本。
如果一个We b服务器能够交换信息脚本,那么它必须支持一种被称为公共网关接口的协
议,即大家所熟悉的 c g i。
29.2 cgi
c g i是一种规范,它规定了获取信息的脚本如何从服务器中取得信息或向服务器中写入信
息。这种脚本或 c g i脚本可以用任何语言来实现。最为流行的是 P e r l语言,不过你将会发现,
shell输入与输出-(华为入门教程)verilog hdl 华为入门教程
第5章 shell输入与输出
在s h e l l脚本中,可以用几种不同的方式读入数据:可以使用标准输入—缺省为键盘,或
者指定一个文件作为输入。对于输出也是一样:如果不指定某个文件作为输出,标准输出总
是和终端屏幕相关联。如果所使用命令出现了什么错误,它也会缺省输出到屏幕上,如果不
想把这些信息输出到屏幕上,也可以把这些信息指定到一个文件中。
大多数使用标准输入的命令都指定一个文件作为标准输入。如果能够从一个文件中读取
数据,何必要费时费力地从键盘输入呢?
本章我们将讨论以下内容:
• 使用标准输入、标准输出及标准错误。
• 重定向标准输入和标准输出。
本章全面讨论了s h e l l对数据和信息的标准输入、标准输出,对重定向也做了一定的介绍。
5.1 echo
使用e c h o命令可以显示文本行或变量,或者把字符串输入到文件。它的一般形式为:
echo string
e c h o命令有很多功能,其中最常用的是下面几个:
\c 不换行。
\f 进纸。
\t 跳格。
\n 换行。
如果希望提示符出现在输出的字符串之后,可以用:
上面的命令将会有如下的显示:
其中“□”是光标。
如果想在输出字符之后,让光标移到下一行,可以用:
$ echo "The red pen ran out of ink"
还可以用e c h o命令输出转义符以及变量。在下面的例子中,你可以让终端铃响一声,显
示出$ H O M E目录,并且可以让系统执行 t t y命令(注意,该命令用键盘左上角的符号,法语中
的抑音符引起来,不是单引号, )。
如果是LINUX系统,那么
必须使用- n选项来禁止echo命令输出后换行:
chown和chgrp-(华为入门教程)verilog hdl 华为入门教程
1.7 chown和chgrp
当你创建一个文件时,你就是该文件的属主。一旦你拥有某个文件,就可以改变它的所
有权,把它的所有权交给另外一个 / e t c / p a s s w d文件中存在的合法用户。可以使用用户名或用
户I D号来完成这一操作。在改变一个文件的所有权时,相应的 s u i d也将被清除,这是出于安
全性的考虑。只有文件的属主和系统管理员可以改变文件的所有权。一旦将文件的所有权交
给另外一个用户,就无法再重新收回它的所有权。如果真的需要这样做,那么就只有求助于
系统管理员了。
c h o w n命令的一般形式为:
chmod -R -h owner file
- R选项意味着对所有子目录下的文件也都进行同样的操作。 - h选项意味着在改变符号链
接文件的属主时不影响该链接所指向的目标文件。
1.7.1 chown举例
这里给出几个例子:
文件p r o j e c t的所有权现在由用户 l o u i s e交给了用户p a u l i n e。
1.7.2 chgrp举例
c h g r p命令和c h o w n命令的格式差不多,下面给出一个例子。
用户p a u l i n e现在把该文件所属的组由 a d m i n变为s y b a d m i n(系统中的另外一个用户组)。
1.7.3 找出你所属于的用户组
如果你希望知道自己属于哪些用户组,可以用如下的命令:
第1章 文件安全与权限 9
下载
硬件设计-gbase sql参考手册
7.1 蜂鸣器简介
蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、
复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。蜂鸣
器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。
战舰 STM32 开发板板载的蜂鸣器是电磁式的有源蜂鸣器,如图 7.1.1 所示:
图 7.1.1 有源蜂鸣器
这里的有源不是指电源的“源”,而是指有没有自带震荡电路,有源蜂鸣器自带了震荡电路,
一通电就会发声;无源蜂鸣器则没有自带震荡电路,必须外部提供 2~5Khz 左右的方波驱动,
才能发声。
前面我们已经对 STM32 的 IO 做了简单介绍,上一章,我们就是利用 STM32 的 IO 口直接
驱动 LED 的,本章的蜂鸣器,我们能否直接用 STM32 的 IO 口驱动呢?让我们来分析下:STM32
的单个 IO 最大可以提供 25mA 电流(来自数据手册),而蜂鸣器的驱动电流是 30mA 左右,两
者十分相近,但是全盘考虑,STM32 整个芯片的电流,最大也就 150mA,如果用 IO 口直接驱
动蜂鸣器,其他地方用电就得省着点了…所以,我们不用 STM32 的 IO 直接驱动蜂鸣器,而是
通过三极管扩流后再驱动蜂鸣器,这样 STM32 的 IO 只需要提供不到 1mA 的电流就足够了。
IO 口使用虽然简单,但是和外部电路的匹配设计,还是要十分讲究的,考虑越多,设计就
越可靠,可能出现的问题也就越少。
本章将要实现的是控制 ALIENTEK 战舰 STM32 开发板上的蜂鸣器发出:“嘀”…“ 嘀”…
的间隔声,进一步熟悉 STM32 IO 口的使用。
7.2 硬件设计
本章需要用到的硬件有:
1)指示灯 DS0
2)蜂鸣器
DS0 在上一章已有介绍,而蜂鸣器在硬件上也是直接连接好了的,不需要经过任何设置,
直接编写代码就可以了。蜂鸣器的驱动信号连接在 STM32 的 PB8 上。如图 7.2.1 所示:
脉宽测量输入捕获实验-天线测量手册
32.7 脉宽测量输入捕获实验
上一节我们讲了输出比较,这一节我们讲输入捕获。输入捕获有常见的测量脉宽和特
殊的 PWM 输入,这节我们先讲测量一个信号的脉宽,下一节再讲 PWM 输入。
32.7.1 硬件设计
根据开发板引脚使用情况,我们选用通用定时器 TIM5 的 CH1,就 PA0 这个 GPIO 来
测量信号的脉宽。在开发板中 PA0 接的是一个按键,默认接 GND,当按键按下的时候 IO
口会被拉高,这个时候我们可以利用定时器的输入捕获功能来测量按键按下的这段高电平
的时间,按键的具体原理图见图 32-18。
中断/事件线-天线测量手册
18.3 中断/事件线
EXTI有 20个中断/事件线,每个 GPIO都可以被设置为输入线,占用 EXTI0至 EXTI15,
还有另外七根用于特定的外设事件,见表 18-1。
4根特定外设中断/事件线由外设触发,具体用法参考《STM32F10X-中文参考手册》中
对外设的具体说明。
表 18-1 EXTI 中断/事件线
中断/事件线 输入源
EXTI0 PX0(X 可为 A,B,C,D,E,F,G,H,I)
EXTI1 PX1(X 可为 A,B,C,D,E,F,G,H,I)
EXTI2 PX2(X 可为 A,B,C,D,E,F,G,H,I)
EXTI3 PX3(X 可为 A,B,C,D,E,F,G,H,I)
EXTI4 PX4(X 可为 A,B,C,D,E,F,G,H,I)
EXTI5 PX5(X 可为 A,B,C,D,E,F,G,H,I)
EXTI6 PX6(X 可为 A,B,C,D,E,F,G,H,I)
EXTI7 PX7(X 可为 A,B,C,D,E,F,G,H,I)
EXTI8 PX8(X 可为 A,B,C,D,E,F,G,H,I)
EXTI9 PX9(X 可为 A,B,C,D,E,F,G,H,I)
EXTI10 PX10(X 可为 A,B,C,D,E,F,G,H,I)
EXTI11 PX11(X 可为 A,B,C,D,E,F,G,H,I)
EXTI12 PX12(X 可为 A,B,C,D,E,F,G,H,I)
EXTI13 PX13(X 可为 A,B,C,D,E,F,G,H,I)
EXTI14 PX14(X 可为 A,B,C,D,E,F,G,H,I)
EXTI15 PX15(X 可为 A,B,C,D,E,F,G,H,I)
EXTI16 PVD 输出
EXTI17 RTC 闹钟事件
EXTI18 USB 唤醒事件
EXTI19 以太网唤醒事件(只适用互联型)
EXTI0至 EXTI15用于 GPIO,通过编程控制可以实现任意一个 GPIO作为 EXTI的输入
源。由表 18-1 可知,EXTI0 可以通过 AFIO 的外部中断配置寄存器 1(AFIO_EXTICR1)的
EXTI0[3:0]位选择配置为 PA0、PB0、PC0、PD0、PE0、PF0、PG0、PH0 或者 PI0,见图
18-2。其他 EXTI 线(EXTI 中断/事件线)使用配置都是类似的。
快捷方式-ft-2000四核cpu硬件设计指导手册-v1.5
5.4 快捷方式
► 切换到其他图表的步骤:
如果您的图表布局良好,但想要将其中一个图表更改为其他类型,您可以在该图表上单
击鼠标右键,然后选择“切换图表至”> [所需图表]。
► 更改图表标题的步骤:
1. 双击图表标题栏。
2. 键入新“标题”。
3. 单击“关闭”。
► 若要隐藏图表的标题栏,请执行以下操作:
1. 将鼠标指针悬停在图表的标题栏上,然后单击右侧的小箭头。
2. 选择“标题栏”。
► 若要显示图表的标题栏,请执行以下操作:
1. 在图表上单击鼠标右键。
2. 仍弹出式菜单中选择“图表功能”>“标题栏”。
注释:您也可以从―图表属性‖对话框的―常规‖页面显示标题栏。
► 若要显示图表的图例,请执行以下操作:
1. 如果显示标题栏,请单击图例图标 。
注释:您也可以右键菜单图表并仍弹出式菜单中选择“图表功能”>“图例”。
2. 如果图例显示为一个弹出窗口,并且您希望将其锁定在图表中,则请单击―停驻‖
按钮。
► 显示或隐藏刻度标签的步骤:
这适用于仅包含传统轴的图表,例如散点图、折线图和条形图等。
1. 在其中一个刻度标签上单击鼠标右键。
2. 在弹出式菜单上选择“显示标签”。
► 更改刻度标签方向的步骤:
这适用于仅包含传统轴的图表,例如散点图、折线图和条形图等。
1. 在其中一个刻度标签上单击鼠标右键。
是向上舍入到更高数量级的数-ft-2000四核cpu硬件设计指导手册-v1.5
数,可舍入到 10s、100s 等。0.5 是向上舍入到更高数量级的数
字(忽略符号)。
示例:
Round(PI(), 3) -> 3.142
Round(-0.5, 0) -> -1
Round(25, -1) -> 30
Sin(Arg1) 返回 Arg1 的正弦值,其中 Arg1 是以弧度表示的角度。参数和
结果是实数类型。
Sqrt(Arg1) 返回 Arg1 的平方根。参数和结果是实数类型。如果 Arg1 为负
数,结果为 #NA 错误。
Sum(Arg1, ...) 统计函数下提供了求和。
返回参数的总和。Null 参数被忽略并且不能求和。
示例:
Sum(-1) -> -1
Sum (1.5, -2, 3) -> 2.5
Sum (1, null, 3) -> 4
Sum (null) -> (Empty)
Tan(Arg1) 返回 Arg1 的正切值,其中 Arg1 是以弧度表示的角度。参数和
结果是实数类型。
3.1.4.3.8 OVER 函数
OVER 函数用于确定数据划分的方式,例如相对于时间段。有关详细信息,请参见自定
义表达式中的 OVER 和高级自定义表达式。
选项 说明
All 将使用引用的层级中的所有节点。它在当前节点与多个层级相交
的情况下很有用。例如,您可以呈现不同产品类别每月的相对销
售数据。
示例:
Sum([Sales]) / Sum([Sales]) OVER (Intersect(All([Axis.Color]),
[Axis.X]))
Sum([Sales]) / Sum([Sales]) OVER (All([Axis.X])) * 100
启动编程环境-nasa系统工程手册
2.1 启动编程环境
1) 双击桌面 AM600 编程软件图标:
即可启动 InoProShop 编程环境,见到的画面如下图,与大多数 Windows 应用软件的界面相似,
常见的命令菜单项:
2) 点击左上角 新建工程或者“文件”-“新建工程”,其中要选择工程类型、工程文件名及
保存路径,如下图所示:
填写工程名
选择存放路径
插补指令-computational lithography
6.3 插补指令
6.3 插补指令
插补指令,支持绝对位置和相对位置插补,支持的插补轨迹类型包括:两轴直线插补、两轴顺时针圆弧插补、两轴
逆时针圆弧插补。指令如下:
H3U 机型插补
“G90G01 两轴直线绝对位置插补”
“G91G01 两轴直线相对位置插补”
“G90G02 两轴顺圆弧绝对位置插补”
“G91G02 两轴顺圆弧相对位置插补”
“G90G03 两轴逆圆弧绝对位置插补”
“G91G03 两轴逆圆弧相对位置插补”
上述指令只支持 32 位运算,不支持脉冲型指令。
》源码包-sql server 数据库基本操作语句总结
MPU6050 官方提供的上位机的使用说明可在配套资料 《motion_driver6.12》源码包
documentation 文件夹里的《Motion Driver 6.12 – Getting Started Guide》找到。上位机的源码
在《motion_driver6.12》源码包的 eMPL-pythonclient 文件夹,里边有三个 python 文件,见
图 51-15。
图 51-15 源码包里的 python 上位机源码
2. 安装 Python 环境
要利用上面的源码,需要先安装 Python 环境,该上位机支持 python2.7 环境(仅支持 32
位),并且需要安装 Pyserial 库(仅支持 Pyserial2.6,不支持 3 版本)、Pygame 库。
可通过如下网址找到安装包。
Python: https://www.python.org/downloads/
Pyserial: https://pypi.python.org/pypi/pyserial
Pygame: http://www.pygame.org/download.shtml
3. Python 上位机的使用步骤
先把本 STM32 工程代码编译后下载到开发板上运行,确认开发板的 USB TO USART
接口已与电脑相连,正常时开发板的液晶屏现象跟上一章例程的现象一样。
编写中断服务程序-sql server 数据库基本操作语句总结
(2) 初始化时基初始化结构体;
(3) 使能 TIMx, x[6,7] update 中断;
(4) 打开定时器;
(5) 编写中断服务程序
通用定时器和高级定时器的定时编程要点跟基本定时器差不多,只是还要再选择下计
数器的计数模式,是向上还是向下。因为基本定时器只能向上计数,且没有配置计数模式
的寄存器,默认是向上。
2. 软件分析
基本定时器宏定义
代码清单 33-2 宏定义
1 /********************基本定时器 TIM 参数定义,只限 TIM6、7************/
2 #define BASIC_TIM6 // 如果使用 TIM7,注释掉这个宏即可
3
4 #ifdef BASIC_TIM6 // 使用基本定时器 TIM6
5 #define BASIC_TIM TIM6
6 #define BASIC_TIM_APBxClock_FUN RCC_APB1PeriphClockCmd
7 #define BASIC_TIM_CLK RCC_APB1Periph_TIM6
8 #define BASIC_TIM_IRQ TIM6_IRQn
9 #define BASIC_TIM_IRQHandler TIM6_IRQHandler
10
11 #else // 使用基本定时器 TIM7
12 #define BASIC_TIM TIM7
13 #define BASIC_TIM_APBxClock_FUN RCC_APB1PeriphClockCmd
14 #define BASIC_TIM_CLK RCC_APB1Periph_TIM7
15 #define BASIC_TIM_IRQ TIM7_IRQn
16 #define BASIC_TIM_IRQHandler TIM7_IRQHandler
17
18 #endif
基本定时器有 TIM6 和 TIM7,我们可以有选择的使用,为了提高代码的可移植性,我
们把当需要修改定时器时需要修改的代码定义成宏,默认使用的是定时器 6,如果想修改
成定时器 7,只需要把宏 BASIC_TIM6 注释掉即可。
基本定时器配置
代码清单 33-3 基本定时器模式配置
1 void BASIC_TIM_Config(void)
2 {
3 TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
4
5 // 开启定时器时钟,即内部时钟 CK_INT=72M
6 BASIC_TIM_APBxClock_FUN(BASIC_TIM_CLK, ENABLE);
7
8 // 自动重装载寄存器周的值(计数值)
9 TIM_TimeBaseStructure.TIM_Period=1000;
10
11 // 累计 TIM_Period 个频率后产生一个更新或者中断
12 // 时钟预分频数为 71,则驱动计数器的时钟 CK_CNT = CK_INT / (71+1)=1M
13 TIM_TimeBaseStructure.TIM_Prescaler= 71;
14
软件定时器实验-ce 6810配置手册
15.1 软件定时器简介
15.2 定时器服务/Daemon 任务
15.3 单次定时器和周期定时器
15.4 复位软件定时器
15.5 创建软件定时器
15.6 开启软件定时器
15.7 停止软件定时器
15.8 软件定时器实验
路段作为行人面域建模-劳特巴赫工具简介
9.10 路段作为行人面域建模
平面显示在列表平面和平面栏中。
提示:您可以在平面栏中隐藏、显示平面并勾选或禁用可选择性(参见第 45 页的 “使用
界面栏” )。
9.10 路段作为行人面域建模
您可以将路段定义为行人面域,借此为车辆交通和行人交通之间的交互作用建模。
此外可以为行人交通定义构造元素,例如面域、斜坡或障碍物(参见第 536 页的 “为构造元素建
模” )。
可以按规定编辑和删除作为行人面域的路段。删除时,自动删除相反方向生成的行人路段。
9.10.1 车辆交通路段和行人路段之间的差别
车辆交通路段和作为行人面域的路段之间的差别。适用于用作行人面域的路段:
路段未指定方向。
路段未划分。
路段不包含几何样中间点。
路段无输入。
路段没有连接路段的开始和结束部分。
您可以按规定定义和编译用作行人面域的路段(参见第 265 页的 “创建车辆和行人路段的模型”
)。
9.10.2 可通行结构元素和基于路段的行人面域之间的区别
可通行结构元素( 例如:面域和斜坡) 与用作行人面域的路段之间存在以下区别。
适用于用作行人面域的路段:
路段不能作为面域编辑。
路段不能是斜坡。
路段不能是行人路径的开始、结束或中间点。
行人面域可以位于行人路段上。在此定义行人路径的开始、目的地和中间点。
© PTV GROUP 559
时间中的离散点-idl/envi培训教材
3.3 绘图软件
3.3.1 可选项
3.3.2 取舍
3.4 地图绘制工具
3.4.1 可选项
3.4.2 取舍
3.5 衡量各种可选项
3.6 小结
第4章 有关时间趋势的可视化
4.1 在时间中寻求什么
4.2 时间中的离散点
4.2.1 柱形
模块参数设置-python network programming cookbook 2nd edition - 2017
3.6 模块参数设置
3.6.1 设置 AH5x0與 AH5x1模块内部参数
在 HWCONFIG 中,用戶可各别为每个配置的模块设置内部参数,而这些参数亦将决定实际运作时,
各个模块所表现出来的功能与特性。欲进行模块参数的设置时,请于系统配置区的模块图标上双击鼠
标左键,之后系统便会自动打开该模块的参数设置窗口。各机种系列的编辑接口略有不同,如下图。
此处的参数主要还是依据模块本身所支持的功能,因此设置前请务必查阅该模块的操作手册,并
确认所设置的参数对模块本身以及整体系统的影响,以避免造成系统或人员的伤害。
AH5x0与 AH5x1机种在设置窗口的主画面中包含「MDS信息」与「常态交换区」两个页面,并可藉
由上方的选项卡来进行切换。而其中「MDS 信息」页面主要会显示目前的 MDS 文档版本,而 MDS
版本亦会决定该模块可设置的参数数量与参数值范围。此外,若某个项目文件中的 HWCONFIG 参数
是以较新的MDS文档所建立的,则在打开该项目文件的HWCONFIG时,系统便会提示用戶更新MDS
文档的文件。
AH5x0与
AH5x1系列
新建位图-db52t 1467-2019 区块链 系统测评和选型规范 (贵州区块链地方标准-2)
(2)新建位图
【范例】绘制一个名称为“Button”,具有两种状态的按钮,点击工具栏上的 图标或从【绘图】菜单中选择“新建
图形”,弹出【新建图形】对话框:
选择类型为“位图”,并输入名称“Button”,设置状态数为 2。设置完成后点击【建立】按钮进入到图形编辑窗口。
首先制作状态 0 的按钮:
state0 state1
2
4
3
1
从指定路径导入bmp、jpg等格式的图片
制作状态 1 的按钮:
state0 state1
2
1
3
从指定路径导入bmp、jpg等格式的图片
4
270
软件应用程序介绍-db52t 1467-2019 区块链 系统测评和选型规范 (贵州区块链地方标准-2)
2.11 软件应用程序介绍
Kinco HMIware 集成开发环境集成了 Kinco HMIware.exe、KHManager、KHPLCAddressView、RecipeEditor 和
PDOManager 等组件,另外,Kinco HMIware 的安装包附带有两个使用手册,用户可在【开始】à【所有程序】à【Kinco】
à【KincoHMIWare】下看到这些组件的快捷方式。关于这些功能组件的描述见下表:
功能组件 描述
主软件,用于组态工程的建立、编辑、编译、模拟和下载
本手册
Kinco HMIware 支持的控制设备与 HMI 通讯相关的设置、支持寄存器、电
缆制作等指导手册
辅助软件,用于工程的上传、下载及反编译,HMI 固件更新,获取 HMI 系
统信息等
辅助软件,用于配置 HMI 与控制设备 CAN 通讯的参数
辅助软件,主要用于新建、查看或编辑配方数据文件和扩展内存数据文件
辅助软件,用于监视 HMI 和 plc 的寄存器
软件卸载程序。用于解除安装 Kinco HMIware
20
公共函数介绍-pt100换算表
17.5 公共函数介绍
17.5 公共函数介绍
上一节介绍了地图设计器的开发,这一节主要介绍的是本应用的公共函数,包括工具函数文
件 GLUtil.js、obj 加载文件 LoadObjUtil.js、着色器加载文件 LoadShaderUtil.js、3D 物体绘制文件
ObjObject.js、和矩阵操作函数文件 MatrixState.js 等。下面将逐一介绍其具体实现代码。
17.5.1 工具函数文件 GLUtil.js
本小节介绍的是公共函数文件 GLUtil.js。其中包括创建并初始化 WebGL Canvas 的函数
initWebGLCanvas、加载着色器的函数 loadSingleShader 和纹理图的函数 loadImageTexture 等,基
于 WebGL 的 3D 楼盘展示系统开发中将多次用到该工具文件中的函数。其开发的详细步骤如下。
(1)首先向读者详细介绍的是创建并初始化 WebGL Canvas 的 initWebGLCanvas 函数,该函
数的主要作用是先根据传入的参数获取 Canvas 对象,然后声明上下文变量并初始化 GLES,最后
返回该 context 上下文对象,其具体内容如下所示。
代码位置:见随书光盘中源代码/第 17 章/ResidentialGarden/js/util 目录下的 GLUtil.js 文件。
1 function initWebGLCanvas(canvasName){ //初始化 WebGL Canvas
2 var canvas = document.getElementById(canvasName); //获取 Canvas 对象
3 var names = ["webgl", "experimental-webgl", "webkit-3d", "moz-webgl"];
4 var context = null; //声明上下文变量
5 for (var ii = 0; ii < names.length; ++ii) {
6 try {
7 context = canvas.getContext(names[ii], null); //获取 GL 上下文
8 }catch(e) {}
9 if (context) {
10 break; //跳出循环
11 }}
12 return context; //返回 GL 上下文对象
13 }
说明
此部分代码为获取 Canvas 对象并创建参数数组,然后按照参数数组初始化上下
文对象并返回。通过该函数代码便可初始化 Canvas 对象并准备渲染 WebGL 场景。
(2)上面介绍的是初始化 WebGL Canvas 函数,下面将为读者介绍的是 WebGL 中加载并编译
着色器的两个函数,其中一个是加载并编译单个着色器的函数 loadSingleShader,一个是加载并编
译顶点着色器与片元着色器套件的函数 loadShaderSerial。具体开发代码如此。
代码位置:见随书光盘中源代码/第 17 章/ResidentialGarden/js/util 目录下的 GLUtil.js 文件。
1 function loadSingleShader(ctx, shaderScript){ //加载单个着色器的函数
2 if (shaderScript.type == "vertex") //若为顶点着色器
3 var shaderType = ctx.VERTEX_SHADER; //顶点着色器类型
4 else if (shaderScript.type == "fragment") //若为片元着色器
5 var shaderType = ctx.FRAGMENT_SHADER; //片元着色器类型
6 else {
7 log("*** Error: shader script of undefined type '"+shaderScript.type+"'");
//打印错误
8 return null;
9 }
10 var shader = ctx.createShader(shaderType); //根据类型创建着色器程序
11 ctx.shaderSource(shader, shaderScript.text); //加载着色器脚本
12 ctx.compileShader(shader); //编译着色器
13 var compiled = ctx.getShaderParameter(shader, ctx.COMPILE_STATUS);
//检查编译状态
14 if (!compiled && !ctx.isContextLost()) { //若编译出错,获取并打印错误
15 var error = ctx.getShaderInfoLog(shader); //获取错误信息
16 log("*** Error compiling shader '"+shaderId+"':"+error);//打印错误
17 ctx.deleteShader(shader); //删除着色程序
功能预览及架构-pt100换算表
17.2 功能预览及架构
的具体功能。做好应用开发的准备工作,将为整个项目的开发奠定一个良好的基础。通过对楼盘的
深入了解以及与开发商负责人的交流,对基于 WebGL 的 3D 楼盘展示系统设计了如下基本功能。
查看楼房展示
用户可以通过单击主界面左侧的模型 1-4 按钮查看楼房模型 1、楼房模型 2、楼房模型 3 以及
楼房模型 4 的 3D 楼房模型,且用户可以通过鼠标对该楼房模型进行旋转移动,从不同方位对楼
房的外围结构进行仔细查看,真正达到了全方位查看楼房的目的,使用户购房更加放心。
查看楼房户型展示
用户可以单击楼房展示界面左侧的楼房户型展示按钮查看该楼房的 3 种户型,且每个户型都
配备有齐全的家具,室内设计以素雅为主。用户可通过移动鼠标从不同方位来查看户型,同时也
可通过滑动鼠标滑轮来放大缩小户型。
进入小区漫游浏览模式
用户可以单击主界面右侧的漫游模式按钮进入小区漫游浏览模式,该功能是让用户随着原先
设计好的漫游路线对小区各个区域中的楼房布局及其周围环境进行粗略浏览,且该路线是从南门
进入,构成环形,实现了对小区的整体浏览,使用户对楼盘有一个整体的了解。
进入小区自由浏览模式
用户单击主界面右侧的自由模式按钮进入小区
自由浏览模式,用户可通过控制摇杆对整个小区进行
详细查看。该功能做到了对现实世界中小区的真正模
拟,增加了用户对楼房售出者的信任度,给用户一种
身临其境的感觉,大大提高了用户的购买欲望。
根据上述功能的介绍,可知本应用主要包括楼房
展示、楼房户型展示、小区漫游浏览模式、小区自由
浏览模式 4 大项,其功能结构如图 17-1 所示。
说明
图 17-1 表示的是基于 WebGL 的 3D 楼盘展示系统的功能结构图,其包含基于
WebGL 的 3D 楼盘展示系统的楼房展示、小区漫游浏览模式、小区自由浏览模式等
全部功能。认识该功能结构图有助于读者了解本应用的开发。
17.2 功能预览及架构
通过上一节的介绍,相信读者对本应用的背景和基本功能有了一定的了解,本节将着重讲解
基于 WebGL 的 3D 楼盘展示系统的基本功能预览以及总架构。通过对本节的学习,读者将对基于
WebGL 的 3D 楼盘展示系统的架构有一个大致的了解。
17.2.1 基于 WebGL 的 3D 楼盘展示系统功能预览
本小节将向读者介绍基于 WebGL 的 3D 楼盘展示系统的基本功能预览,主要包括加载资源、
楼房展示、楼房户型展示、小区漫游浏览模式以及小区自由浏览模式等功能,下面将一一进行介
绍,请读者仔细阅读。
(1)使用支持 WebGL 的浏览器打开本应用,首先映入眼帘的是基于 WebGL 的 3D 楼盘展示
系统的加载图,效果如图 17-2 所示。当主界面所需要的资源被加载完毕后,才进入主界面,其效
果如图 17-3 所示。可以通过单击主界面左边或者右边的不同按钮,跳转到不同的模块界面。
▲图 17-1 基于 WebGL 的 3D 楼盘
展示系统功能结构图
节的案例中运行观察实际的地形效-pt100换算表
的角度、位置观察生成的地形。
沉积完成后,可以按下导出灰度图按钮将生成的地形对应的灰度图导出。
地形灰度图成功导出后,读者可以将其引入本章前面 11.2 节的案例中运行观察实际的地形效
果。在以后的项目开发中,读者也可以使用此工具生成需要的地形灰度图。
提示
本地形设计工具允许对同一个地形进行多次不同参数组合的粒子沉积,方便读
者生成所需要的目标地形,请读者自行运行试用、体会。
11.3.3 粒子沉积的核心算法类
上一小节介绍了地形设计器的使用,下面将为读者介绍该地形设计器中的核心算法类
LiZiChenJiUtil。此类是上一小节介绍的地形设计器的核心类,粒子沉积过程的计算就是通过此类
实现的。其功能是模拟粒子的沉积过程,根据粒子的释放位置以及扰动因素计算出每个粒子最终
的沉淀位置,最终生成地形数据,其具体代码如下。
代码位置:见随书中源代码/第 11 章/粒子沉积目录下的 LiZiChenJiUtil.java。
1 package com.bn; //包声明
2 import java.util.ArrayList;import java.util.Collections; //相关类的引用
3 public class LiZiChenJiUtil {
4 @SuppressWarnings("unchecked")
5 public static void genCJ( //产生沉积数据的方法
6 float[][] result, //记录地形高度数据的数组
7 int cx, //粒子掉落的中心点 x坐标
8 int cy, //粒子掉落的中心点 y坐标
9 int count, //总粒子数
10 int span, //搜索步进
11 int gdyzIn, //高度阈值范围
12 boolean ssfxjh, //搜索方向是否均衡
13 boolean sfSmms, //是否采用山脉模式
14 int[][] smwz //山脉位置数组
15 ){
16 @SuppressWarnings("rawtypes")
17 ArrayList[] knPosition=new ArrayList[span]; //创建可能的搜索位置列表
18 for(int k=1;k<=span;k++){ //生成可能的搜索位置数据
19 knPosition[k-1]=new ArrayList();//创建步长范围为k时所有可能搜索位置的列表
20 int powerSpan=k*k; //求出允许搜素范围值的平方
21 for(int i=-k;i<=k;i++){ //在-k~+k 的行列范围内循环查看
22 for(int j=-k;j<=k;j++){
23 if(i==0&&j==0) continue;
24 if(i*i+j*j<=powerSpan){ //若此位置距离平方小于允许搜素范围的平方
25 knPosition[k-1].add(new int[]{i,j});
//记录此位置进可能搜索位置列表
26 }}}}
27 int width=result.length; //获取地形的列数与行数
28 int height=result[0].length; //对应灰度图的宽度与高度
29 for(int i=0;i<count;i++){ //循环沉积指定数量的粒子
30 int currX=cx; //粒子当前行列
31 int currY=cy; //粒子当前行
32 if(sfSmms){ //若采用山脉模式
33 currX=smwz[i%smwz.length][0];
34 currY=smwz[i%smwz.length][1];
35 }
36 //循环探查周围位置的高度,直至找到此粒子最终沉积的位置
游戏中的音效-pt100换算表
2.1 游戏中的音效
一款好游戏,除了具备优质的画面和较高的可玩性之外,还应该有出色的音效。音效一般指
的是游戏中发生特定行为或进行特定操作时播放的效果音乐或为了渲染整体气氛播放的背景音乐
等,如远处隆隆的炮声、由远而近的脚步声等。
开发人员通过精心准备的声音特效,并结合游戏酷炫的场景,可以渲染出一种紧张刺激的氛
围,使玩家产生身临其境的感觉。这就像电影中的声音特效一样,假如没有了合适的音效,那么
游戏和电影一样,真实感会大打折扣。
提示
按照作用的不同,可以将音效划分为即时音效和背景音乐。两种音效在 Android
中的实现技术不同,本节将向读者详细介绍两种音效在 Android 中的具体实现。
2.1.1 游戏中的即时音效
游戏中有时需要根据情况播放即时音效,如枪炮声、碰撞声等。即时音效的特点是短暂、可
以重复、可以同时播放的。由于 Android 提供的 MediaPlayer(媒体播放器)会占用大量的系统资
源,而且播放时还需要进行缓冲,有较大的时延,因此使用 MediaPlayer 无法实现即时音效。
Android 系统的设计者也考虑到了这个问题,为即时音效的实现提供了一个专门的类—
SoundPool。SoundPool 类用于管理和播放应用程序中的声音资源,使用该类时首先需要通过该类
将声音资源加载到内存中,然后在需要即时音效的地方播放即可,几乎没有时延,可以满足游戏
实时性的需要。