文档库 最新最全的文档下载
当前位置:文档库 › FreeMarker macro(宏)的使用

FreeMarker macro(宏)的使用

FreeMarker macro(宏)的使用

有人说用freemarker,但没有用到它的宏(macro),就=没有真正用过freemarker。说的就是宏是freemarker的一大特色。

宏的定义可以查看相关的文档,里面介绍得很清楚,下面来看看它的一个用法(javaeye 帖子里有讨论)。

/WEB-INF/template/common/common.ftl:

<#macro html title>

${title}

<#nested/>

然后在freemarker.properties里定义:

auto_import=/WEB-INF/template/common/common.ftl as c

然后其他的ftl文件就可以使用它了

test.ftl:

<@c.html title="OA">

你的内容

如果不在freemarker.properties里定义,可以在每个文件里包含这个ftl:

<#import "/WEB-INF/template/common/common.ftl" as c>

不同的场合有不同的运用。使用得好的话,将会大大节省你的开发时间。

macro, nested, return

语法

<#macro name param1 param2 ... paramN>

...

<#nested loopvar1, loopvar2, ..., loopvarN>

...

<#return>

...

用例

<#macro test foo bar="Bar" baaz=-1>

Test text, and the params: ${foo}, ${bar}, ${baaz}

<@test foo="a" bar="b" baaz=5*5-2/>

<@test foo="a" bar="b"/>

<@test foo="a" baaz=5*5-2/>

<@test foo="a"/>

输出

Test text, and the params: a, b, 23

Test text, and the params: a, b, -1

Test text, and the params: a, Bar, 23

Test text, and the params: a, Bar, -1

定义循环输出的宏

<#macro list title items>

${title?cap_first}:

    <#list items as x>

  • ${x?cap_first}

<@list items=["mouse", "elephant", "python"] title="Animals"/>

输出结果

Animals:

  • Mouse

  • Elephant

  • Python

包含body的宏

<#macro repeat count>

<#list 1..count as x>

<#nested x, x/2, x==count>

<@repeat count=4 ; c halfc last>

${c}. ${halfc}<#if last> Last!

输出

1. 0.5

2. 1

3. 1.5

4. 2 Last!

--------------------------------------------------------------------------------

注意在使用的时候:别忘了双引号。

<#import "/pagelibs/book.ftl" as book>

<@workorder.price value="${book.price}" />

宏Macro

宏是在模板中使用macro指令定义

l.1 基本用法

宏是和某个变量关联的模板片断,以便在模板中通过用户定义指令使用该变量,下面是一个例子:

<#macro greet> Hello Joe!

调用宏时,与使用FreeMarker的其他指令类似,只是使用@替代FTL标记中的#。

<@greet> <#--<@greet/>-->

在macro指令中可以在宏变量之后定义参数,如:

<#macro greet person> Hello ${person}!

可以这样使用这个宏变量:

<@greet person="Fred"/>

但是下面的代码具有不同的意思:

<@greet person=Fred/>

这意味着将Fred变量的值传给person参数,该值不仅是字符串,还可以是其它类型,甚至是复杂的表达式。

宏可以有多参数,下面是一个例子:

<#macro greet person color> Hello ${person}!

可以这样使用该宏变量,其中参数的次序是无关的:

<@greet person="Fred" color="black"/>

可以在定义参数时指定缺省值,否则,在调用宏的时候,必须对所有参数赋值:

<#macro greet person color="black"> Hello ${person}!

注意:宏的参数是局部变量,只能在宏定义中有效。

嵌套内容

FreeMarker的宏可以有嵌套内容,<#nested>指令会执行宏调用指令开始和结束标记之间的模板片断,举一个简单的例子:

<#macro border>

<#nested>

执行宏调用:

<@border>The bordered text

输出结果:

The bordered text

<#nested>指令可以被多次调用,每次都会执行相同的内容。

<#macro do_thrice> <#nested> <#nested> <#nested><@do_thrice> Anything.

FMPP 输出结果:

Anything.Anything.Anything.

嵌套内容可以是有效的FTL,下面是一个有些复杂的例子,我们将上面三个宏组合起来:

<@border>

    <@do_thrice>
  • <@greet person="Joe"/>

输出结果:

  • Hello Joe!
  • Hello Joe!
  • Hello Joe!

宏定义中的局部变量对嵌套内容是不可见的,例如:

<#macro repeat count> <#local y = "test"> <#list 1..count as x> ${y} ${count}/${x}: <#nested> <@repeat count=3>${y?default("?")} ${x?default("?")} ${count?default("?")}

输出结果:

test 3/1: ? ? ?test 3/2: ? ? ?test 3/3: ? ? ?

在宏定义中使用循环变量

nestted指令也可以有循环变量(循环变量的含义见下节),调用宏的时候在宏指令的参数后面依次列出循环变量的名字,格式如下:

<@ macro_name paramter list; loop variable list[,]>

例如:

<#macro repeat count> <#list 1..count as x> <#nested x, x/2, x==count> <@repeat count=4 ; c, halfc, last> ${c}. ${halfc}<#if last> Last!

这里count是宏的参数,c, halfc,last则为循环变量,输出结果:

1. 0.5

2. 1

3. 1.5

4. 2 Last!

循环变量和宏标记指定的不同不会有问题,如果调用时少指定了循环变量,那么多余的值不可见。调用时多指定了循环变量,多余的循环变量不会被创建:

<@repeat count=4 ; c, halfc, last> ${c}. ${halfc}<#if last> Last!<@repeat count=4 ; c, halfc> ${c}. ${halfc}<@repeat count=4> Just repeat it...

在模板中定义变量

在模板中定义的变量有三种类型:

plain变量:可以在模板的任何地方访问,包括使用include指令插入的模板,使用assign 指令创建和替换。

局部变量:在宏定义体中有效,使用local指令创建和替换。

循环变量:只能存在于指令的嵌套内容,由指令(如list)自动创建;宏的参数是局部变量,而不是循环变量

局部变量隐藏(而不是覆盖)同名的plain变量;循环变量隐藏同名的局部变量和plain变量,下面是一个例子:

<#assign x = "plain">${x} <#-- we see the plain var. here --><@test/>6. ${x} <#--

Spring2.5、Struts2.1、Hibernate3.2、sitemesh、freemarker整合开发常见问题及解决方案

1.在搭建SSH开发平台的时候,由MyEclipse自动导入的包存在一些冲突,主要有 (1) asm.jar与asm-2.2.3.jar asm-2.2.3是spring所依赖,而asm.jar是hibernate依赖的,应该删除asm-2.2.3.jar这个包 (2). commons-logging-1.0.4.jar与commons-logging-api-1.1.jar 这两个包中commons-logging-1.0.4.jar是spring和hibernate以及struts都要用的包,但是struts2.1以上的版本还需要commons-logging-api-1.1.jar,其实这两个包几乎一样,commons-logging-api-1.1.jar版本较新而已。 (3)异常 严重: Exception starting filter struts2 https://www.wendangku.net/doc/ce8520032.html,ng.NullPointerException at com.opensymphony.xwork2.spring.SpringObjectFactory.getClassInstance(SpringObjectF actory.java:203) ... 可能的原因是spring的默认配置文件applicationContext.xml改了名,或者没有放在classpath的根路径下面,并且没有在web.xml文件中配置spring的监听器,解决办法在web.xml中添加

org.springframework.web.context.ContextLoaderListener (4)异常 严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from ServletContext resource [/WEB-INF/applicationContext.xml]; nested exception is java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/applicationContext.xml] 可能的原因是虽然配置了spring的监听器,但是没有在web.xml中配置contextConfigLocation来指定spring配置文件列表及相应的具体路径。解决的办法是在web.xml文件中添加,例如: contextConfigLocation /WEB-INF/csdn-spring*.xml (5)异常 org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.exception.GenericJDBCException: Cannot open connection 可能的原因是缺少相应的JDBC驱动包,请把驱动包拷贝到/WEB-INF/lib下面,或者是数据源的配置有问题,例如用户名、者密码或者URL错误。

宏电物联网解决方案

内部 公开
Connecting Machine
物联网解决方案
2009.12
Hongdian, the power of m2m communications

前 言
Connecting Machine
IBM前首席执行官郭士纳提出一个重要观点,认为 IBM前首席执行官郭士纳提出一个重要观点,认为 计算模式每隔15年发生一次变革。1965年前后是 计算模式每隔15年发生一次变革。1965年前后是 以系统性为特征的大型机,1980年前后是以独特 系统性为特征的大型机,1980年前后是以独特 性为特征的个人计算机,而1995年前后则是以共 为特征的个人计算机,而1995年前后则是以共 同性为特征的互联网革命。这一判断像摩尔定律一 同性为特征的互联网革命。这一判断像摩尔定律一 样准确,人们把它称为“十五年周期定律”。 根据“十五年周期定律”,互联网革命在进入成年 的时候将会发生重大变化,这一变化就是物联网。 的时候将会发生重大变化,这一变化就是物联网。 物联网将以拟人性为特征。 物联网将以拟人性为特征。 每一次技术变革都引起企业间、产业间甚至国家间 竞争格局的重大动荡和变化。可见,我们面临着前 所未有的机遇与挑战。 所未有的机遇与挑战。
2010年4月20日
物联网解决方案
Page: 2

提 纲
Connecting Machine
n
物联网概要
n n n n n
网络网概述 物联网系统基本构架 物联网六大特征 物联网支撑技术 物联网关键技术
n n n
宏电物联网产品 宏电物联网解决方案 关于宏电
2010年4月20日
物联网解决方案
Page: 3

AERMOD中文参考手册

大气环境影响预测系统使用者参考手册 一、简介 大气环境影响预测系统是一款由浙江省环科院环评二所任剑波工程师开发的预测大气环境影响的界面化软件,其主要功能是对各类型污染源在不同条件下排放污染物进行模拟,计算其所造成的污染物地面浓度分布,用量化的方法预测污染源对大气环境的影响。 大气环境影响预测系统的核心模块采用《环境影响评价技术导则-大气环境》(HJ2.2-2008)推荐的美国Environmental Protection Agency的AERMOD预测模型和SCREEN3估算模式。AERMOD是一个稳态羽烟扩散模式,可基于大气边界层数据特征模拟点源、面源、体源等排放出的污染物在短期(小时平均、日平均)、长期(年平均)的浓度分布,适用于农村或城市地区、简单或复杂地形。AERMOD考虑了建筑物尾流的影响,即烟羽下洗。模式使用每小时连续预处理气象数据模拟大于等于1小时平均时间的浓度分布。AERMOD包括两个预处理模式,即AERMET气象预处理和AERMAP地形预处理模式。AERMOD适用于评价范围小于等于50km的一级、二级评价项目。 估算模式SCREEN3 是一个单源高斯烟羽模式,可计算点源、火炬源、面源和体源的最大地面浓度,以及下洗和岸边熏烟等特殊条件下的最大地面浓度。估算模式中嵌入了多种预设的气象组合条件,包括一些最不利的气象条件,在某个地区有可能发生,也有可能没有此种不利气象条件。所以经估算模式计算出的是某一污染源对环境空气质量的最大影响程度和影响范围的保守的计算结果。 二、操作界面介绍 大气环境影响预测系统界面非常友好,继承了windows操作系统软件的特点。其最上方为命令菜单;在命令菜单的下方是快捷工具栏;左侧区域为目标管理窗口,可以更加方便的进行输入和管理预测模型所需的各类参数数据;右侧区域为工作区,用户可在此直接操作,例如添加底图,标明污染源、计算区域和预测点位置等。 1.菜单栏 本软件操作界面中的菜单栏分为文件、显示、运行、计算结果、工具和关于六项。各命令菜单包含的内容如下: ·文件 新建; 打开; 保存; 另存为; 保存inp文件; 打开示例文件; 退出 ·显示 污染源; 预测点; 计算网格; 建筑物; 显示标尺;

FANUC宏程序编程

运算符 运算符由2个字母组成,用于两个值的比较,以决定它们是相等还是一个值小于或大于另一 示例程序下面的程序计算数值1~10的总和 O9500;#1=0;………………………………….存储和的变量初值 #2=1;………………………………….被加数变量的初值 N1 IF[#2GT 10]GOTO 2;…………….当被加数大于10时转移到N2 #1=#1+#2;…………………………….计算和 #2=#2+#1;…………………………….下一个被加数 GOTO 1;………………………………转移到N1 N2 M30;................................................程序结束 算术和逻辑运算

角度单位: SIN、ASIN、COS、ACOS、TAN和A TAN的角度单位是度 ARCSIN #i=ASIN[#j]: ●取值范围如下:当参数(N0.6004¥0)NA T位设为0时,270~90度;当参数(N0.6004¥0)NA T位设为1时,-90~90度。 ●当#j超过-1到1的范围时,发出P/S报警N0.111。 ●常数可替代变量#j。 ARCCOS #i=ACOS[#j]; ●取值范围从180~0度。 ●当#j超过-1到1的范围时,发出P/S报警N0.111。 ●常数可替代变量#j。 ARCTAN #i=A TAN[#j]; ●指定两边的长度,并用斜杠(/)分开 ●取值范围如下:当参数(N0.6004¥0)NA T位设为0时,0~360度[例如:当指定 #i=A TAN[-1]/[-1];时,#1=225度]。当参数(N0.6004¥0)NA T位设为1时,-180~180度[例如:当指定#i=A TAN[-1]/[-1];时,#1=-135度] ●常数可替代变量#j。 自然对数#i=LN[#j]; ●注意,相对误差可能大于10-8。 ●当反对数(#j)为0或小于0时,发出报警N0.111。 ●常数可替代变量#j。 指数函数#i=EXP[#j]: ●注意,相对误差可能大于10-8 ●当运算结果超过3.65×1047(j大约是110)时,出现溢出报警N0.111 ●常数可替代变量#j。 上取整下取整: CNC处理数值运算时,若操作后产生整数绝对值大于原数的绝对值时为上取整;小于为下取整。例如: 假设#1=1.2,#2=-1.2。当执行#3=FUP[#1]时,2.0赋给#3;当执行#3=FIX[#1]时1.0赋给#3;当执行#3=FUP[#2]时,-2.0赋给#3;当执行#3=FIX[#2]时,-1.0赋给#3。 宏程序语句:包含算术或逻辑运算(=)的程序;包含控制语句(例如,用GOTO,DO,END)的程序;包含宏程序调用指令(例如,用G65,G66,G67或其它G代码,M代码调用宏程序)的程序段;除宏程序以外任何程序段都为NC语句。 与NC语句的不同: 即使置于单段程序运行方式,机床也不停止。但是,当参数N0.6000#5SBM设定位、为1时,在单段程序方式中,机床停止。在刀具半径补偿方式中宏程序语句段不做为移动程序段处理 与宏程序语句相同性质的NC语句: 含有子程序调用指令(例如,用M98或其它M代码或用T代码调用子程序)但没有除O,N,P或L地址之外的其它地址指令的NC语句,其性质与宏程序语句相同;不包含除O,N,P或L以外的指令地址的程序段其性质与宏程序语句相同。 无限循环; 当指定DO而没有指定WHILE语句时,产生从DO到END的无限循环。

Quartus提供的宏模块

Quartus II开发软件中的宏模块 一、RAM电路宏模块 RAM宏模块 宏模块名称功能描述 csdpram 参数化循环共享双端口RAM lpm_ram_dp 参数化双端口RAM lpm_ram_dq 参数化RAM,输入/输出端分离 lpm_ram_io 参数化RAM,输入/输出端公用一个端口 FIFO宏模块 宏模块名称功能描述 csfifo 参数化循环共享FIFO dcfifo 参数化双时钟FIFO scfifo 参数化单时钟FIFO lpm_fifo 参数化单时钟FIFO lpm_fifo_dc 参数化双时钟FIFO ROM的设计 lpm_rom 二、时序电路宏模块 触发器 宏模块名称功能描述 lpm_ff 参数化D或T触发器 lpm_dff 参数化D触发器和移位寄存器 lpm_tff 参数化T触发器 enadff 带使能端的D触发器 expdff 用扩展电路实现的D触发器 7470 带预置和清零端的与门JK触发器 7471 带预置端的JK触发器 7472 带预置和清零端的与门JK触发器 7473 带清零端的双JK触发器 7474 带异步预置和异步清零端的双D触发器 7476 带异步预置和异步清零端的双JK触发器 7478 带异步预置、公共清零和公共时钟端的双JK触发器 74107 带清零端的双JK触发器 74109 带预置和清零端的双JK触发器 74112 带预置和清零端的双JK时钟下降沿触发器 74113 带预置端的双JK时钟下降沿触发器 74114 带异步预置、公共清零和公共时钟端的双JK时钟下降沿触发器74171 带清零端的4D触发器 74172 带三态输出的多端口寄存器 74173 4位D型寄存器

宏电DTUGPRS远传实例

GPRS信号监测装置调试 硬件接线图 一、ADAM-4117参数设置 1.将ADAM-4117模块右侧开关拨至INIT(配置状态); 2.打开调试软件https://www.wendangku.net/doc/ce8520032.html,Utility,选择相应的串口号,右击选择Search,出现对话框(图a),点击Start,直至搜索到模块()后点击Cancel; 图a 3.点击4117(*),配置并保存相应参数,如图(b)。点击右上角的“Applychange”保存设置到模块的芯片里。 图b

二、宏电H7710GPRSDTU模块参数设置 1.断电,打开调试软件sscom32.exe,选择相应串口号,设置相应参数如图c(修改参数的波特率一直为57600); 图c 2.按住空格键,通电,直至出现图d现象; 图d 3.按照帮助指示输入“H”,出现主菜单(图e),输入“C”,再输入密码“1234”,回车,进入DTU配置(C)菜单(图f); 图e图f图g 4.输入“3”,进入“数据服务中心设置(DSC)”菜单(图g), 输入“1”,配置“DSCIP地址”, ;输入“2”,配置“DSC域名”; (注:若已配置固态IP地址,则无需配置域名,即配置域名时按回车键即可;若使用动态IP地址,则将IP地址设为0.0.0.0,域名改为相应的域名地址) 输入“3”,配置“DSC通讯端口”,端口号自己定义,但必须与读取时端口号设置一致;

输入“4”,配置“DNSIP地址”, ,一般设为主站的DNSIP地址;输入“r”,保存设置输入Y或者N。 5.输入“4”进入“用户串口设置”菜单(图h) 图h图i 输入“1”,配置波特率(图i),一般采用9600bps,故输入“4”,再输入“r” 返回菜单; 输入“2”,配置数据位,一般设为8; 输入“3”,配置校验位,一般设为无校验位,故输入“1”,再输入“r”返回菜单; 输入“4”,配置停止位,一般设为1; 输入“r”,返回主菜单。 6.输入“5”,进入“特殊选项设置”菜单(图j) 图j 输入“6”,配置“通讯协议选择(透明0/DDP协议1)” ,一般选择透明,故输入“0”; 输入“7”,配置“网络连接方式(UDP0/TCP1)” ,一般采用TCP连接方式,故输入“1”; 输入“r”,再输入“r”返回主菜单。

Spring中文开发详细手册

Spring开发教程 Spring教程 (1) Spring框架概述 (2) Spring是什么? (2) Spring的历史 (3) Spring的使命(Mission Statement) (3) Spring受到的批判 (3) Spring包含的模块 (4) 总结 (5) Spring的IoC容器 (6) 用户注册的例子 (6) 面向接口编程 (7) (用户持久化类)重构第一步——面向接口编程 (8) 重构第二步——工厂(Factory)模式 (9) 重构第三步——工厂(Factory)模式的改进 (9) 重构第四步-IoC容器 (10) 控制反转(IoC)/依赖注入(DI) (10) 什么是控制反转/依赖注入? (10) 依赖注入的三种实现形式 (11) BeanFactory (13) BeanFactory管理Bean(组件)的生命周期 (14) Bean的定义 (15) Bean的之前初始化 (19) Bean的准备就绪(Ready)状态 (21) Bean的销毁 (21) ApplicationContext (21) Spring的AOP框架 (21) Spring的数据层访问 (21) Spring的声明式事务 (21) Spring对其它企业应用支持 (22)

名词解释 容器: 框架: 框架 容器 组件: 服务: Spring框架概述 主要内容:介绍Spring的历史,Spring的概论和它的体系结构,重点阐述它在J2EE中扮演的角色。 目的:让学员全面的了解Spring框架,知道Spring框架所提供的功能,并能将Spring 框架和其它框架(WebWork/Struts、hibernate)区分开来。 Spring是什么? Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring 的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 ?目的:解决企业应用开发的复杂性 ?功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能 ?范围:任何Java应用 简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 ■轻量——从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。 ■控制反转——Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。 ■面向切面——Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务()管理)进行内聚性的开发。应用对象只实

ftl编辑器(freemarker)的使用和说明

一、准备工作 1.1 下载文件 可以从https://www.wendangku.net/doc/ce8520032.html,/站点下载最新的freemarker.jar包(目前最新版本是2.3.18)与eclipse插件(最新版本是0.9.14)。 1.2 安装eclipse插件 将下载来的eclipse插件解压缩到本地磁盘,更改hudson.freemarker_ide_0.9.14文件夹中的freemarker-2.3.6.jar文件更改成最新版本的freemarker-2.3.18.jar,并且将META-INF/MANIFEST.MF文件中的Bundle-ClassPath属性值修改为freemarker-2.3.18.jar。最后将hudson.freemarker_ide_0.9.14放到eclipse的plugins目录中,完成eclipse 插件的安装。 1.3 freemarker文档下载 从https://www.wendangku.net/doc/ce8520032.html,/官方网站中下载帮助文档(也有中文的手册) 二、freemarker的使用 2.1 简介 2.1.1 FTL tag标签 由于freemarker tag标签是属于freemarker的指令,它们仅仅是freemarker 处理过程中的信息,而不会输出到页面上,所以它们与html标签有一些区别。这些标签都是以#号开头,如<#import "/public/work_public.ftl" as public>。但用户自定义的标签是以@符号开头,如在freemarker中使用struts标签:<@s.if test="results!=null&&results.size()!=0"> 注意FTL标签不可以在其他FTL标签和插值中使用(注释可以在FTL标签和插值中使用,因为它在解析时,整个注释都将抛弃,不会影响具体代码),如下面这样就是一个错误的写法: <#if <#include 'foo'>='bar'>... 2.1.2 注释 freemarker的文档注释与html相似,但它是以<#--和-->来分割的。任何介于这两个分隔符(包含分隔符本身)之间内容会被freemarker忽略,就不会输出出来了。其他任何不是FTL 标签,插值或注释的内容将被视为静态文本,这些东西就不会被freemarker所解析,会被按照原样输出出来。

宏电DTU与力控组态软件联调方法

力控组态软件与宏电DTU联调设置方法 一力控软件配置方法: 1、首先安装好力控软件,双击桌面上力控的快捷图标 点击“新建”,新建一个工程。 点击“确定”按钮,再点击工程管理器上的开发,进入开发系统 会提示找不到加密狗,点击“忽略”进入工程。 2、以下以建立一个modbus通讯设备的GPRS通讯为例,讲解如何利用力控跟Io 设备进行GPRS通讯。

双击“IO设备组态”,则进入IoManager 双击“MODBUS (RTU串口)”,弹出如下窗口:

主要完成以下几个功能:建立设备名称(必须是英文名称,不能用非法字符和数字开头);修改更新周期(相当于数据的更新周期,本参数设置的时间长一些可以节省GPRS流量);修改超时时间;设备地址(与真实硬件设备必须对应);通讯方式选择网桥,是力控特有的通讯机制,次通讯机制为多线程并发方式,通讯效率高更加稳定。完成后点击“下一步” 上图以宏电DTU的UDP通讯方式为例,需要设置端口号和设备ID号码,这些设置要与宏电DTU的设置相同。 点击“下一步”,此设置与DTU设备无关,只跟硬件设备的要求有关,一般情况下不需要特殊设置。

点击“完成”,则设备驱动建立完成 3、建点——建数据库组态连接关闭IoManager,返回到开发系统中。 双击“数据库组态”

在“数据库”处点击右键——新建,选择“模拟I/O点”,点击“继续” 建立点名称tag1(必须是英文名称,不能用非法字符和数字开头),点击“数据连接”

例如我读取设备中03号功能码、地址偏移为1的数据,则按照如上图设置;但是具体设置还是要详细看设备说明书。 如上图,则数据库IO连接建立完成。 4、保存数据库内容,关闭DbManager,进入力控开发系统 在“系统配置”中,双击初始启动程序,把网桥选项勾选上

freemarker语法

语法 FreeMarker的模板文件并不比HTML页面复杂多少,FreeMarker模板文件主要由如下4个部分组成: 1. 文本:直接输出的部分 2. 注释:<#-- ... -->格式部分,不会输出 3. 插值:即${...}或#{...}格式的部分,将使用数据模型中的部分替代输出 4. FTL指令:FreeMarker指定,和HTML标记类似,名字前加#予以区分,不会输出 1. FTL指令规则 在FreeMarker中,使用FTL标签来使用指令,FreeMarker有3种FTL标签,这和HTML标签是完全类似的. 1.开始标签:<#directivename parameter> 2.结束标签: 3.空标签:<#directivename parameter/> 实际上,使用标签时前面的符号#也可能变成@,如果该指令是一个用户指令而不是系统内建指令时,应将#符号改成@符号. 使用FTL标签时, 应该有正确的嵌套,而不是交叉使用,这和XML标签的用法完全一样.如果全用不存在的指令,FreeMarker不会使用模板输出,而是产生一个错误消息.FreeMarker会忽略FTL标签中的空白字符.值得注意的是< , /> 和指令之间不允许有空白字符. 2. 插值规则 FreeMarker的插值有如下两种类型:1,通用插值${expr};2,数字格式化插值:#{expr}或#{expr;format} 2.1 通用插值 对于通用插值,又可以分为以下4种情况: 1. 插值结果为字符串值:直接输出表达式结果 2. 插值结果为数字值:根据默认格式(由#setting指令设置)将表达式结果转换成文本输 出.可以使用内建的字符串函数格式化单个插值,如下面的例子: <#settion number_format="currency"/> <#assign answer=42/> ${answer} ${answer?string} <#-- the same as ${answer} --> ${answer?string.number} ${answer?string.currency} ${answer?string.percent}

5.宏模块(macro)

macro(宏)相当于定义一个配置模板,可以应用到接口或全局。 【配置】 Catalyst 3550交换机: 示例1: SW1(config)#macro name IF_CONF 定义名为IF_CONF的宏 Enter macro commands one per line. End with the character '@'. 进入宏定义模式,输入@结束 switchport mode access switchport access vlan 10 spanning-tree portfast @ SW1(config)#int f0/1 SW1(config-if)#macro apply IF_CONF 在接口下应用名为IF_CONF的宏 SW1(config-if)#end 查看接口F0/1的配置如下: SW1#show run int f0/1 Building configuration... Current configuration : 135 bytes ! interface FastEthernet0/1 switchport access vlan 10 switchport mode access macro description IF_CONF spanning-tree portfast end 示例2: Switch(config)#define interface-range ACCESS f0/1-10 定义名为ACCESS的interface-range(等同于命令interface range f0/1-10) Switch(config)#interface range macro ACCESS Switch(config-if-range)#switchport mode accsee Switch(config-if-range)#switchport access vlan 10 Catalyst 3750交换机: 示例3:Auto Smartports (自动的智能端口)--交换机能够根据端口检测到的对端设备,自动完成相对应的配置。 本例中交换机的f1/0/23口和f1/0/24口对端是交换机设备, 步骤1:在没有应用auto smartport前,这2个端口的配置: interface FastEthernet1/0/23 end interface FastEthernet1/0/24 end 步骤2:在全局应用对端设备是交换机时的auto smartport。 Switch(config)#macro auto global processing Switch(config)#macro auto device switch f1/0/23和f1/0/24发现对端设备为交换机,auto smartport特性开始生效。 *Mar 1 00:07:45.173: %SYS-5-CONFIG_I: Configured from console by vty0 *Mar 1 00:07:45.181: %AUTOSMARTPORT-5-INSERT: Device Switch detected on interface FastEthernet1/0/24, executed CISCO_SWITCH_EVENT Switch# *Mar 1 00:07:48.679: %SYS-5-CONFIG_I: Configured from console by vty0

宏电DTU参数配置

宏电DTU的参数配置和与DEMO的连接测试 一、DTU的参数配置与下载 1、RS232接口的DTU接线原则:232母头连接线的RXD连接DTU的RS(B-);TXD连 接DTU的TX(A+)。GND接地一定要跟电源的GND相连接。否则通讯不上。 2、RS485接口的DTU接线原则:485+接A+;485-接B-。 3、配置DTU参数的时候一定要把IP设定为公网IP,另外端口映射一定要正确。 4、具体的DTU参数配置如下图所示: 图1.1 在图1中的DSC连接类型中选择UDP连接方式。IP地址设定为公网IP。

在图2中的本地IP也不需要进行设置。 图1.3

在图8中的本地端口和DNS地址不需要配置选择系统默认的就行。 图1.5

图1.6 图1.7

图1.8 配置注意问题: 1、配置过程中一定要注意IP地址是设定公网IP,并且端口号得映射也一定要与本机电脑 在路由器上的映射端口号相一致,否则就会出现连接不上的现象。 2、在配置好参数向DTU下载的过程中一定要先把DTU断电,点击“连接”之后再给DTU 上电,才能连接成功。连接成功之后,点击“全选”然后再点击“设置”就可以把配置好的参数下载到DTU中去。 二、DTU与DSC_DEMO的连接设置 DTU演示系统与DTU的连接过程中,也要对其进行参数设置,否则无法连接成功。具体的 需要设置的参数为:“设置”,如下图所示

图2.1 图2.2 在图2.2中“指定IP”前面一定不能选,服务类型选择UDP,启动类型:自动启动。 图2.3 按照上面的步骤配置完成后,先点击“启动服务”然后再开启DTU电源,连接成功后显示如下的界面。

TRSMASv5.0置标使用手册

媒资管理系统Array TRS Media Asset System 置标使用手册 北京拓尔思信息技术股份有限公司 Beijing TRS Information Technology Co., Ltd.

版权说明 本手册由北京拓尔思信息技术股份有限公司(以下简称TRS公司)出版,版权属TRS公司所有。未经出版者正式书面许可,不得以任何方式复制本文档的部分或全部内容。 ?北京拓尔思信息技术股份有限公司版权所有。保留所有权利。 是北京拓尔思信息技术股份有限公司的注册商标。

关于本手册 置标使用手册介绍了MAS5.0中置标组件的基本使用,并提供了相关实例,方便理解置标模板的编写以及使用,进而完成前台页面定制功能。 读者对象 本手册的读者为TRSMAS的使用者。使用者应具备以下基础知识: ●熟悉Windows或Linux操作系统; ●熟悉Oracle、MySQL、Microsoft SQL Server; ●熟悉HTML基本知识 ●掌握基本的编程技巧 用户反馈 TRS公司感谢您使用TRS 产品。如果您发现本手册中有错误或者产品运行不正确,或者您对本手册有任何意见和建议,请及时与TRS公司联系。您的意见将是我们做版本修订时的重要依据

目录 第1章概述 (1) 第2章使用说明 (2) 2.1快速入门 (2) 2.2管理台使用 (3) 2.2.1 站点(Site) (3) 2.2.2 映射(Pagelink) (3) 2.2.3 模板(Template) (4) 2.3站点规划 (5) 2.3.1 站点规划 (5) 2.3.2 映射规划 (5) 2.4模板规划 (6) 2.4.1 将主页面划分成块 (6) 2.4.2 使用TRS_PAGELET填充各块 (7) 2.4.3 编写小模板 (9) 2.4.4 完善TRS_PAGELET的属性 (9) 2.4.5 切换模板展示方式 (11) 2.5获取相关模板实例 (13) 第3章置标详细参考 (14) 3.1置标规范实例 (14) 3.1.1 OBJECTS - PROPERTY(一组数据) (14) 3.1.2 OBJECT - PROPERTY (一个数据) (15) 3.1.3 OBJECTS – (PROPERTY + PAGE)(组数据分页展示) (15) 3.1.4 OBJECTS –OBJECT –PROPERTY (折行显示列表数据) (16) 3.1.5 OBJECTS-(PROPERTY+OBJECTS-PROPERTY)(树状) (17) 3.1.6 OBJECTS-SWITCH-PROPERTY(条件显示) (18) 3.1.7 LINKGROUP – LINK链接着色 (19) 3.2置标详细说明 (19) 3.2.1 TRS_OBJECTS置标 (19) 3.2.2 TRS_OBJECT置标 (20) 3.2.3 TRS_PROPERTY置标 (21) 3.2.4 TRS_PAGE置标 (23) 3.2.5 TRS_SWITCH置标 (24) 3.2.6 TRS_LOOP置标 (25) 3.2.7 TRS_LINKGROUP置标 (26) 3.2.8 TRS_LINK置标 (28) 3.2.9 TRS_PAGELET置标 (28)

宏电智能充电桩解决方案

宏电智能充电桩解决方案 一、应用背景 世界能源需求的不断攀升和自然资源的日益枯竭,对能源供应商、工业企业及消费者都提出了新的挑战,尽可能以高效和可持续的方式使用能源成为了当务之急。电动汽车产业在新能源背景下蓄势勃发,已经成为流行最广、节能环保的绿色出行交通工具,电动车数量在最近几年不断增长。但目前电动车配套的充电器,一次充电经常需要7-8小时,一旦行驶途中没有电能,将使行车人陷入尴尬的境地,这一点对电动车的发展造成了很大的困扰,如何解决充电难,充电时间久,已经成为电动车发展的一个瓶颈。 二、宏电智能充电桩方案架构: 当前充电桩行业面临的主要问题包括: 1、充电桩分布散,车主难以找到充电桩; 2、充电时间长,车主等待时间长,很多车主不愿意等待; 3、充电桩结构复杂,维护管理困难; 4、充电桩位置分布散,包括地下停车场,高速公路都可能需要大量充电桩,管理不便; 针对以上的问题,深圳宏电技术股份有限公司依托自己在互联网+行业丰富的经验,借助丰富的网络接入产品,为充电桩构建了一套基于互联网+的基础解决方案,实现充电桩的智能化,有效的解决了充电桩发展的问题。整个系统包括充电桩系统、接入系统、网络应用平台,运营管理中心以及基于服务平台的终端应用。

宏电智能充电桩系统结构 三、宏电智能充电桩解决方案 宏电智能充电桩解决方案包括一系列的个性化解决方案,结合不同的充电桩设备和需求,采用不同的宏电设备,可以实现从最简单的网络接入,到丰富的网络功能以及应用,满足不同客户不同场景的应用需求。 1、宏电DTU在充电桩无线联网管理中的应用:将宏电DTU嵌入到充电桩内部,与控制系统结合,就可以为中小型充电桩提供快速简单的网络接入以及数据透传。整个宏电智慧充电桩系统由充电桩、宏电DTU、后端网管平台、数据

freemarker中文手册文档

FreeMarker FreeMarker Java FreeMarker HTML Web MVC FreeMarker Java FreeMarker FreeMarker Web Web FreeMarker HTTP Servlet FreeMarker Web FreeMarker Model2 Struts JSP FreeMarker 1

HTML XML RTF Java Servlet Email Web Web 2 include if/elseif/else HTML 3 FreeMarker Java Java JavaBean XML SQL

4 Web Web HTML Model2 Web JSP JSP MVC 5 UNICODE US 6 XML <#recurse> <#visit> 2.3 XML XML FreeMarker (1)

1 1 + = FreeMarker —— HTML Web Web HTML FreeMarker Welcome!

Welcome ${user}!

Our latest product: ${https://www.wendangku.net/doc/ce8520032.html,}!

HTML ${…} FreeMarker FreeMarker Template user latestProduct.url https://www.wendangku.net/doc/ce8520032.html, data model (root) | +- user = "Big Joe" | +- latestProduct | +- url = "products/greenmouse.html" | +- name = "green mouse" latestProduct user url name url name latestProduct

FANUC用户宏程序(椭圆篇)

用户宏程序 宏程序是指含有变量的子程序,在程序中调用用户宏程序的那条指令叫做用户宏指令(这里用G65) 1、变量 用一个可赋值的代号代替具体的坐标值,这个代号称为变量。变量分为系统变量、全局变量和局部变量三类,它们的性质和用途个不相同。(1)系统变量是固定用途的变量,它的值决定了系统的状态。FANUC 中的系统变量为#1000~#1005、#1032、#3000等。 (2)全局变量是指在主程序内和由主程序调用的各用户宏程序内公用的变量。FANUC中的全局变量有60个,它们分两组,一组是#100~#149;另一组是#500~#509。 (3)局部变量是仅局限于在用户宏程序内使用的变量。同一个局部变量在不同的宏程序内的值是不通用的。FANUC中的局部变量有33个,分别为#1~#33。 (1)加减型运算加减型运算包括加、减、逻辑加和排它的逻辑加。分别用以下四个形式表达: #i = #j +#k #i = #j -#k #i = #j OR #k #i = #j XOR #k 式中,i、j、k为变量;+、-、OR、XOR称为为演算子。 (2)乘除型运算乘除型运算包括乘、除和逻辑乘。分别用以下形式表达: #i = #j * #k #i = #j / #k #i = #j AND #k 4.变量的赋值

由于系统变量的赋值情况比较复杂,这里只介绍公共变量和局部变量的赋值。变量的赋值方式可分为直接和间接两种。 (1)直接赋值 例:#1=115(表示将变量115赋值于#1变量) #100=#2(表示将变量#2的即时值赋于变量#100) (2)间接赋值间接赋值就是用演算式赋值,即把演算式内演算的结果赋给某个变量。在演算式中有自变量代号,自变量每得到一个即时值,相应就得到一个演算结果,该结果就赋值给变量,该变量也叫应变量。5.转向语句 转向语句分为无条件转向语句和条件转向语句两种。 (1)无条件转向语句 程序段格式:GOTO N ;其中N后面的数值为程序段号。 例如:GOTO 55;表示无条件转向执行N55程序段,而不论N55程序段在转向语句之前还是之后。 (2)条件转向语句条件转向语句一般由判断条件式和转向目标两部分构成。 程序段格式:IF [a GT b ] GOTO c;表示为“如果a>b,那么转向执行第Nc句程序段”。a和b可以是数值、变量或含有数值及变量的算式,c是转向目标的程序段。 大于、等于、大于等于、小于等于分别用GT、EQ、GE、LE表示。 三、用户宏程序的应用 下面就以椭圆为例,介绍宏程序间接赋值法的应用。 1、椭圆的中心偏离工件原点一个Z向距离 如下图是一个椭圆,椭圆的中心偏离工件原点一个Z向距离W=40,欲车削1/4椭圆(图中粗线部分)的回转轮廓线,要求在数控程序中用任意一点D的Z值(用#3号变量指定)来表达该点的X值(用#5号变量指定),由此可知,这里是以Z作为自变量,以X作为应变量。根据椭圆的方程即可以写出自变量Z与应变量X之间的关系表达式。那么,如果我们在Z向分段,以0.5mm为一个步距给Z赋值,就可以得到相应的一个X值。然后把所得各个点的坐标值用直线插补方式来逼近,就可以得到椭圆的近似轨迹。步距取的越小,所得的轨迹就越接近椭圆。 如下图所示椭圆方程为:(式中X为半径值)

freemarkermacro(宏)的使用

FreeMarker macro(宏)的使用.txt14热情是一种巨大的力量,从心灵内部迸发而出,激励我们发挥出无穷的智慧和活力;热情是一根强大的支柱,无论面临怎样的困境,总能催生我们乐观的斗志和顽强的毅力……没有热情,生命的天空就没的色彩。FreeMarker macro(宏)的使用 有人说用freemarker,但没有用到它的宏(macro),就=没有真正用过freemarker。说的就是宏是freemarker的一大特色。 宏的定义可以查看相关的文档,里面介绍得很清楚,下面来看看它的一个用法(javaeye 帖子里有讨论)。 /WEB-INF/template/common/: <#macro html title> ${title} <#nested/> 然后在里定义: auto_import=/WEB-INF/template/common/ as c 然后其他的ftl文件就可以使用它了 : title="OA"> 你的内容 > 如果不在里定义,可以在每个文件里包含这个ftl: <#import "/WEB-INF/template/common/" as c> 不同的场合有不同的运用。使用得好的话,将会大大节省你的开发时间。 macro, nested, return 语法

相关文档