文档库 最新最全的文档下载
当前位置:文档库 › My97 DatePicke API

My97 DatePicke API

My97 DatePicke API
My97 DatePicke API

My97 DatePicke

一. 简介

1. 简介

目前的版本是:4.7

2. 注意事项

?My97DatePicker目录是一个整体,不可破坏里面的目录结构,也不可对里面的文件改名,可以改目录名

?My97DatePicker.htm是必须文件,不可删除

?各目录及文件的用途:

WdatePicker.js配置文件,在调用的地方仅需使用该文件,可多个共存,以xx_WdatePicker.js方式命名

config.js语言和皮肤配置文件,无需引入

calendar.js日期库主文件,无需引入

My97DatePicker.htm临时页面文件,不可删除

目录lang存放语言文件,你可以根据需要清理或添加语言文件

目录skin 存放皮肤的相关文件,你可以根据需要清理或添加皮肤文件包

?当WdatePicker.js里的属性:$wdate=true时,在input里加上class="Wdate"就会在选择框右边出现日期图标,如果您不喜欢这个样式,可以把class="Wdate"去掉,另外也可以通过修改skin目录下的WdatePicker.css文件来修改样式

3. 支持的浏览器

IE 6.0+ , Firefox 2.0+ , Chrome, Opera 9.5+ , Safari 3.0+

注意:IE 8.0是完美支持的,如果你在IE8上使用遇到问题,请与我取得联系,务必附上能再现你的问题的纯HTML代码包

二. 功能及示例

1. 常规功能

1.支持多种调用模式

除了支持常规在input单击或获得焦点调用外,还支持使用其他的元素如:

等触发

WdatePicker函数来调用弹出日期框

示例1-1-1 常规调用

示例1-1-2 图标触发

align="absmiddle">

注意:只需要传入控件的id即可

2.下拉,输入,导航选择日期

年月时分秒输入框都具备以下三种特性

1. 通过导航图标选择

2. 直接使用键盘输入数字

3. 直接从弹出的下拉框中选择

另:年份输入框有智能提示功能,当用户连续点击同一个导航按钮5次时,会自动弹出年份下拉框3.支持周显示

可以通过配置isShowWeek属性决定是否限制周,并且在返回日期的时候还可以通过自带的自定义事件和API函数返回选择的周

示例1-2-1 周显示简单应用

注意:周算法参考的是ISO8601定义的方法,如果您对此有疑问,请详

见:https://www.wendangku.net/doc/ef9606065.html,/wiki/ISO_week_date

周算法选择(4.7新增)

相关属性:whichDayIsfirstWeek

周算法不同的地方有一些差异

常见算法有三种

1. ISO8601:规定第一个星期四为第一周,默认值: 4

2. MSExcel:1月1日所在的周: 可以填写: 7

3. 自己根据需要自定义,每年的第一个星期X作为第一周,可以填写: X (X可以是1-7之间任何一个

数字)

示例1-2-2 利用onpicked事件把周赋值给另外的文本框

您选择了第格式)周, 另外您可以使用WW格式周

onFocus="WdatePicker({isShowWeek:true,onpicked:function()

{$dp.$('d122_1').value=$dp.cal.getP('W','W');$dp.$('d122_2').value=$dp.cal.getP('W','WW');}}) "/>

onpicked 用法详见自定义事件

$dp.cal.getP 用法详见内置函数和属性

4.只读开关,高亮周末功能

设置readOnly属性true 或false 可指定日期框是否只读

设置highLineWeekDay属性ture 或false 可指定是否高亮周末

5.操作按钮自定义

清空按钮和今天按钮,可以根据需要进行自定义,它们分别对应isShowClear 和isShowToday 默认值都是true

示例1-5 禁用清空功能

最好把readOnly置为true,否则即使隐藏了清空按钮,用户依然可以在输入框里把值delete掉

onFocus="WdatePicker({isShowClear:false,readOnly:true})"/>

6.自动选择显示位置

当控件处在页面边界时,它会自动选择显示的位置,所以没有必要担心弹出框会被页面边界遮住的问题了.

7.自定义弹出位置

当控件处在页面边界时,它会自动选择显示的位置.此外你还可以使用position参数对弹出位置做调整.

示例1-6 通过position属性,自定义弹出位置

使用positon属性指定,弹出日期的坐标为{left:100,top:50}

onfocus="WdatePicker({position:{left:100,top:50}})"/>

position属性的详细用法详见属性表

8.自定义星期的第一天(4.6新增)

各个国家的习惯不同,有些喜欢以星期日作为第一天,有些以星期一作为第一天.

相关属性:firstDayOfWeek: 可设置0 - 6 的任意一个数字,0:星期日1:星期一以此类推

示例1-7 以星期一作为第一天

2. 特色功能

1.平面显示

日期控件支持平面显示功能,只要设置一下eCont属性就可以把它当作日历来使用了,无需触发条件,直接显示在页面上

示例2-1 平面显示演示

$dp.cal.getDateStr 用法详见内置函数和属性

2.支持多种容器

除了可以将值返回给input以外,还可以通过配置el属性将值返回给其他的元素

(如:textarea,div,span)等,带有innerHTML属性的HTML元素

示例2-2 将日期返回到

2008-01-01

代码:

2008-01-01

width="16" height="22" align="absmiddle" style="cursor:pointer" />

3.起始日期功能

注意:日期格式必须与realDateFmt 和realTimeFmt 一致而不是与dateFmt 一致

有时在项目中需要选择生日之类的日期,而默认点开始日期都是当前日期,导致年份选择非常麻烦,你可以通过起始日期功能加上配置alwaysUseStartDate属性轻松解决此类问题

示例2-3-1 起始日期简单应用

默认的起始日期为1980-05-01

当日期框为空值时,将使用1980-05-01 做为起始日期

示例2-3-2 alwaysUseStartDate属性应用

默认的起始日期为1980-05-01

当日期框无论是何值,始终使用1980-05-01 做为起始日期

onFocus="WdatePicker({startDate:'1980-05-01',alwaysUseStartDate:true})"/>

示例2-3-3 使用内置参数

除了使用静态的日期值以外,还可以使用动态参数(如:%y,%M分别表示当前年和月)

下例演示,年月日使用当年当月的1日,时分秒使用00:00:00作为起始时间

4.自定义格式

yMdHmswW分别代表年月日时分秒星期周,你可以任意组合这些元素来自定义你个性化的日期格式.

日期格式表

格式说明

y将年份表示为最多两位数字。如果年份多于两位数,则结果中仅显示两位低位数。

yy同上,如果小于两位数,前面补零。

yyy将年份表示为三位数字。如果少于三位数,前面补零。

yyyy将年份表示为四位数字。如果少于四位数,前面补零。

M将月份表示为从1 至12 的数字

MM同上,如果小于两位数,前面补零。

MMM返回月份的缩写一月至十二月(英文状态下Jan to Dec) 。

MMMM返回月份的全称一月至十二月(英文状态下January to December) 。

d将月中日期表示为从1 至31 的数字。

dd同上,如果小于两位数,前面补零。

H将小时表示为从0 至23 的数字。

HH同上,如果小于两位数,前面补零。

m将分钟表示为从0 至59 的数字。

mm同上,如果小于两位数,前面补零。

s将秒表示为从0 至59 的数字。

ss同上,如果小于两位数,前面补零。

w返回星期对应的数字0 (星期天) - 6 (星期六) 。

D返回星期的缩写一至六(英文状态下Sun to Sat) 。

DD返回星期的全称星期一至星期六(英文状态下Sunday to Saturday) 。

W返回周对应的数字(1 - 53) 。

WW同上,如果小于两位数,前面补零(01 - 53) 。

示例

格式字符串值

yyyy-MM-dd HH:mm:ss2008-03-12 19:20:00

yy年M月08年3月

yyyyMMdd20080312

今天是:yyyy年M年d HH时mm

今天是:2008年3月12日19时20分

H:m:s19:20:0

y年8年

MMMM d, yyyy三月12, 2008

示例2-4-1: 年月日时分秒

注意:这里提前使用了皮肤(skin)属性,所以你会看到一个不同的皮肤,皮肤属性详见自定义和动态切

示例2-4-4 取得系统可识别的日期值(重要)

类似于1999年7月5日这样的日期是不能够被系统识别的,他必须转换为能够识别的类型如1999-07-05

真实的日期值是

注意:在实际应用中,一般会把vel指定为一个hidden控件,这里是为了把真实值展示出来,所以使用文本框

关键属性:vel指定一个控件或控件的ID,必须具有value属性(如input),用于存储真实值(也就是realDateFmt和realTimeFmt格式化后的值)

示例2-4-5 星期, 月日, 年(4.6新增)

class="Wdate"/>

5.双月日历功能(4.6新增)

可以同时弹出两个月的日历

示例2-5 双月日历功能

onfocus="WdatePicker({doubleCalendar:true,dateFmt:'yyyy-MM-dd'})"/>

注意:双月日历一般只用于包含年月日三个元素的场景,另外设置该属性时,autoPickDate自动设置为true

6.自动纠错功能

纠错处理可设置为3种模式:提示(默认) 自动纠错标记,当日期框中的值不符合格式时,系统会尝试自动修复,如果修复失败会根据您设置的纠错处理模式进行处理,错误判断功能非常智能它可以保证用户输入的值是一个合法的值

示例2-6-1 不合法的日期演示

请在下面的日期框中填入一个不合法的日期(如:1997-02-29),再尝试离开焦点

使用默认容错模式提示模式 errDealMode = 0 在输入错误日期时,会先提示

注意:1997年不是闰年哦

示例2-6-2 超出日期限制范围的日期也被认为是一个不合法的日期

最大日期是2000-01-10 ,如果在下框中填入的日期大于2000-01-10(如2000-01-12)也会被认为是不合法的日期

自动纠错模式 errDealMode = 1 在输入错误日期时,自动恢复前一次正确的值

示例2-6-3 使用无效天和无效日期功能限制的日期也被认为是一个不合法的日期

如:

2008-02-20 无效日期限制

2008-02-02 2008-02-09 2008-02-16 2008-02-23 无效天限制

都是无效日期

您可以尝试在下框中输入这些日期,并离开焦点

标记模式 errDealMode = 2 在输入错误日期时,不做提示和更改,只是做一个标记,但此时日期框不会马上隐藏

注意:标记类:WdateFmtErr是在skin目录下WdatePicker.css中定义的

7.跨无限级框架显示

无论你把日期控件放在哪里,你都不需要担心会被外层的iframe所遮挡进而影响客户体验,因为My97日期控件是可以跨无限级框架显示的

示例2-7 跨无限级框架演示

可无限跨越框架iframe,无论怎么嵌套框架都不必担心了,即使有滚动条也不怕

注意:Javascript是无法跨越frameset的,但是My97日期控件可无限跨越框架iframe,任何的

frameset都可以使用iframe代替

8.民国年日历和其他特殊日历

当年份格式设置为yyy格式时,利用年份差量属性yearOffset(默认值1911民国元年),可实现民国年日历和其他特殊日历

示例2-8 民国年演示

注意:年份格式设置成yyy时,真正的日期将会减去一个差量yearOffset(默认值为:1911),如果是民国年使用默认值即可无需另外配置,如果是其他的差量,可以通过参数的形式配置

9.编辑功能

当日期框里面有值时,修改完某个属性后,只要点击这个按钮就可以实现时间和日期的编辑

示例2-9 日期和时间的编辑演示

您可以尝试对下面框中的月份改为1,然后点击更新,你会发现日期由2000-02-29 01:00:00 变为2000-01-29 01:00:00

10.为编程带来方便

如果el的值是this,可省略,即所有的el:this都可以不写

日期框设置为disabled时,禁止更改日期(不弹出选择框)

如果没有定义onpicked事件,自动触发文本框的onchange事件

如果没有定义oncleared事件,清空时,自动触发onchange事件

11.其他属性

设置readOnly属性,可指定日期框是否只读

设置highLineWeekDay属性,可指定是否高亮周末

设置isShowOthers属性,可指定是否显示其他月的日期

加上class="Wdate"就会在选择框右边出现日期图标

3. 多语言和自定义皮肤

1.多语言支持

通过lang属性,可以为每个日期控件单独配置语言,当然也可以通过WdatePicker.js配置全局的语言

繁体中文

英文

简体中文

注意:默认情况lang='auto',即根据浏览器的语言自动选择语言.

技巧:很多项目中,可能有固定的语言选项,希望可以在日期选择的属性设置中强制某种语言,即:可以通过后台代码控制语言的选择,其实这个实现起来是很容易的,My97Datepicker是支持多个配置文件共存的,你可以配置类似cn_WdatePicker.js,en_WdatePicker.js(注意命名规则,必须以

WdatePicker.js结尾)等等,在这些WdatePicker.js里面设置不同的默认语言,皮肤,格式等其他可以设置的参数,然后在页面里根据你的系统变量引入不同的xx_WdatePicker.js即可

2.自定义和动态切换皮肤立刻转到皮肤中心

通过skin属性,可以为每个日期控件单独配置皮肤,当然也可以通过WdatePicker.js配置全局的皮肤

默认皮肤default: skin:'default'

注意:在WdatePicker里配置了skin='default',所以此处可省略,同理,如果你把WdatePicker里的skin 配置成'whyGreen'那么在不指定皮肤的情况下都使用'whyGreen'皮肤了

whyGreen皮肤: skin:'whyGreen'

注意:更多皮肤,请到皮肤中心下载

4. 日期范围限制

1.静态限制

注意:日期格式必须与realDateFmt 和realTimeFmt 一致而不是与dateFmt 一致

你可以给通过配置minDate(最小日期),maxDate(最大日期)为静态日期值,来限定日期的范围

示例4-1-1 限制日期的范围是2006-09-10到2008-12-20

onfocus="WdatePicker({skin:'whyGreen',minDate:'2006-09-10',maxDate:'2008-12-20'})"/>

示例4-1-2 限制日期的范围是2008-3-8 11:30:00 到2008-3-10 20:59:30

onfocus="WdatePicker({skin:'whyGreen',dateFmt:'yyyy-MM-dd HH:mm:ss',minDate:'2008-03-08 11:30:00',maxDate:'2008-03-10 20:59:30'})" value="2008-03-09 11:00:00"/>

示例4-1-3 限制日期的范围是2008年2月到2008年10月

示例4-1-4 限制日期的范围是8:00:00 到11:30:00

onfocus="WdatePicker({dateFmt:'H:mm:ss',minDate:'8:00:00',maxDate:'11:30:00'})"/>

2.动态限制

注意:日期格式必须与realDateFmt 和realTimeFmt 一致而不是与dateFmt 一致

你可以通过系统给出的动态变量,如%y(当前年),%M(当前月)等来限度日期范围,你还可以通过{}进行表达式运算,如:{%d+1}:表示明天

动态变量表

格式说明

%y当前年

%M当前月

%d当前日

%ld本月最后一天

%H当前时

%m当前分

%s当前秒

{}运算表达式,如:{%d+1}:表示明天

#F{}{}之间是函数可写自定义JS代码

示例4-2-1 只能选择今天以前的日期(包括今天)

onfocus="WdatePicker({skin:'whyGreen',maxDate:'%y-%M-%d'})"/>

示例4-2-2 使用了运算表达式只能选择今天以后的日期(不包括今天)

onfocus="WdatePicker({minDate:'%y-%M-{%d+1}'})"/>

示例4-2-3 只能选择本月的日期1号至本月最后一天

onfocus="WdatePicker({minDate:'%y-%M-01',maxDate:'%y-%M-%ld'})"/>

示例4-2-4 只能选择今天7:00:00至明天21:00:00的日期

示例4-2-5 使用了运算表达式只能选择20小时前至30小时后的日期

3.脚本自定义限制

注意:日期格式必须与realDateFmt 和realTimeFmt 一致而不是与dateFmt 一致

系统提供了$dp.$D和$dp.$DV这两个API来辅助你进行日期运算,此外你还可以通过在#F{} 中填入你自定义的脚本,做任何你想做的日期限制

示例4-3-1 前面的日期不能大于后面的日期且两个日期都不能大于2020-10-01

合同有效期从到

onFocus="WdatePicker({maxDate:'#F{$dp.$D(\'d4312\')||\'2020-10-01\'}'})"/>

onFocus="WdatePicker({minDate:'#F{$dp.$D(\'d4311\')}',maxDate:'2020-10-01'})"/>

注意:

两个日期的日期格式必须相同

$dp.$ 相当于document.getElementById 函数.

那么为什么里面的' 使用\' 呢? 那是因为" 和' 都被外围的函数使用了,故使用转义符\ ,否则会提示JS语法错误.

所以您在其他地方使用时注意把\' 改成" 或者' 来使用.

#F{$dp.$D(\'d4312\')||\'2020-10-01\'} 表示当d4312 为空时, 采用2020-10-01 的值作为最大值

示例4-3-2 前面的日期+3天不能大于后面的日期

日期从到

onFocus="WdatePicker({maxDate:'#F{$dp.$D(\'d4322\',{d:-3});}'})"/>

onFocus="WdatePicker({minDate:'#F{$dp.$D(\'d4321\',{d:3});}'})"/>

使用$dp.$D 函数可以将日期框中的值,加上定义的日期差量:

两个参数: id={字符类型}需要处理的文本框的id值 , obj={对象类型}日期差量

日期差量用法:

属性y,M,d,H,m,s分别代表年月日时分秒

为空时,表示直接取值,不做差量(示例4-3-1中的参数就是空的)

{M:5,d:7} 表示五个月零7天

{y:1,d:-3} 表示1年少3天

{d:1,H:1} 表示一天多1小时

示例4-3-3 前面的日期+3月零2天不能大于后面的日期且前面日期都不能大于2020-4-3减去3月零2天后面日期不能大于2020-4-3

住店日期从到

onFocus="WdatePicker({maxDate:'#F{$dp.$D(\'d4332\',{M:-3,d:-2})||$dp.$DV(\'2020-4-3\',{M: -3,d:-2})}'})"/>

onFocus="WdatePicker({minDate:'#F{$dp.$D(\'d4331\',{M:3,d:2});}',maxDate:'2020-4-3'})"/> 注意:

#F{$dp.$D(\'d4332\',{M:-3,d:-2}) || $dp.$DV(\'2020-4-3\',{M:-3,d:-2})}

表示当d4332 为空时, 采用$dp.$DV(\'2020-4-3\',{M:-3,d:-2})} 的值作为最大值

使用$dp.$DV 函数可以将显式传入的值,加上定义的日期差量:

两个参数: value={字符类型}需要处理的值 , obj={对象类型}日期差量

用法同上面的$dp.$D类似,如$dp.$DV(\'2020-4-3\',{M:-3,d:-2}) 表示2020-4-3减去3月零2天示例4-3-4 发挥你的JS才能,定义任何你想要的日期限制

自动转到随机生成的一天,当然,此示例没有实际的用途,只是为演示目的

4.无效天

可以使用此功能禁用周日至周六所对应的日期,相关属性:disabledDays (0至6 分别代表周日至周

六)

示例4-4-1 禁用周六所对应的日期

示例4-4-2 通过position属性,自定义弹出位置

5.无效日期

注意:日期格式必须与realDateFmt 和realTimeFmt 一致而不是与dateFmt 一致

可以使用此功能禁用,所指定的一个或多个日期,只要你熟悉正则表达式,你可以尽情发挥

用法(正则匹配):

如果你熟悉正则表达式,会很容易理解下面的匹配用法

如果不熟悉,可以参考下面的常用示例

['2008-02-01','2008-02-29'] 表示禁用2008-02-01 和2008-02-29

['2008-..-01','2008-02-29'] 表示禁用2008-所有月份-01 和2008-02-29

['200[0-8]]-02-01','2008-02-29'] 表示禁用[2000至2008]-02-01 和2008-02-29

['^2006'] 表示禁用2006年的所有日期

此外,您还可以使用%y %M %d %H %m %s 等变量, 用法同动态日期限制注意:%ld不能使用['....-..-01','%y-%M-%d'] 表示禁用所有年份和所有月份的第一天和今天

['%y-%M-{%d-1}','%y-%M-{%d+1}'] 表示禁用昨天和明天

当然,除了可以限制日期以外,您还可以限制时间

['....-..-.. 10\:00\:00'] 表示禁用每天10点(注意:需要使用\: )

不再多举例了,尽情发挥你的正则才能吧!

示例4-5-1 禁用每个月份的5日15日25日

注意:'5$'表示以5 结尾注意$的用法

示例4-5-2 禁用所有早于2000-01-01的日期

注意:'^19'表示以19 开头注意^的用法

当然,可以使用minDate实现类似的功能这里主要是在演示^ 的用法

示例4-5-3 配合min/maxDate使用,可以把可选择的日期分隔成多段

本示例本月可用日期分隔成五段分别是: 1-3 8-10 16-24 26,27 29-月末

onFocus="WdatePicker({minDate:'%y-%M-01',maxDate:'%y-%M-%ld',disabledDates:['0[4-7]$',' 1[1-5]$','2[58]$']})"/>

示例4-5-4 min/maxDate disabledDays disabledDates 配合使用即使在要求非常苛刻的情况下也能满足需求

onFocus="WdatePicker({minDate:'%y-%M-01',maxDate:'%y-%M-%ld',disabledDates:['0[4-7]$',' 1[1-5]$','2[58]$'],disabledDays:[1,3,6]})"/>

示例4-5-5 禁用前一个小时和后一个小时内所有时间使用%y %M %d %H %m %s 等变量鼠标点击小时输入框时,你会发现当然时间对应的前一个小时和后一个小时是灰色的

本示例利用自定义函数随机禁用0-23中的任何一个小时

打开小时选择框,你会发现有一个小时被禁用的,而且每次禁用的小时都不同

onFocus="WdatePicker({dateFmt:'HH:mm:ss',disabledDates:['#F{randomH()}']})"/>

6.有效天与有效日期

使用无效天和无效日期可以很方便的禁用不可用的日期,但是在只需要启用少部分日期的情况下,有效天和有效日期的功能就非常适合了.

关键属性:opposite默认为false, 为true时,无效天和无效日期变成有效天和有效日期

示例4-6 只启用每个月份的5日15日25日

onFocus="WdatePicker({opposite:true,disabledDates:['5$']})"/>

注意:'5$'表示以5 结尾注意$的用法

7.特殊天和特殊日期

特殊天和特殊日期的用法跟完全无效天和无效日期完全相同,但是opposite属性对其无效

关键属性:

specialDays (0至6 分别代表周日至周六) 用法同无效天

specialDates用法同无效日期,但是对时分秒无效

示例4-7-1 高亮每周周一周五

示例4-7-2 高亮每月1号15号

onFocus="WdatePicker({specialDates:['....-..-01','....-..-15']})"/>

5. 自定义事件

1.自定义事件

如果你需要做一些附加的操作,你也不必担心,日期控件自带的自定义事件可以满足你的需求.此外,你还可以在自定义事件中调用提供的API库来做更多的运算和扩展,绝对可以通过很少的代码满足你及其个性化的需求.

注意下面几个重要的指针,将对你的编程带来很多便利

this: 指向文本框

dp: 指向$dp

dp.cal: 指向日期控件对象

注意:函数原型必须使用类似function(dp){}的模式,这样子,在函数内部才可以使用dp

2.onpicking 和onpicked 事件

示例5-2-1 onpicking事件演示

onFocus="WdatePicker({onpicking:function(dp){if(!confirm('日期框原来的值为: '+dp.cal.getDateStr()+', 要用新选择的值:' + dp.cal.getNewDateStr() + '覆盖吗?')) return true;}})" class="Wdate"/>

选择第一个日期的时候,第二个日期选择框自动弹出

日期从至

注意:下面第一个控件代码的写法

onFocus="WdatePicker({minDate:'#F{$dp.$D(\'d5221\')}'})"/>

注意:$dp.$是一个内置函数,相当于document.getElementById

示例5-2-3 将选择的值拆分到文本框

年月日时分秒

width="16" height="22" align="absmiddle" style="cursor:pointer"/>

注意:el:'d523'中,如果你不需要d523这个框,你可以把他改成hidden,但是el属性必须指定$dp.$和$dp.cal.getP都是内置函数

3.onclearing 和oncleared 事件

示例5-3-1 使用onclearing事件取消清空操作

onFocus="WdatePicker({onclearing:function(){if(!confirm('日期框的值

为:'+this.value+', 确实要清空吗?'))return true;}})"/>

注意:当onclearing函数返回true时,系统的清空事件将被取消,

函数体里面没有引用$dp,所以函数原型里面可以省略参数dp

示例5-3-2 使用cal对象取得当前日期所选择的月份(使用了dp.cal)

onFocus="WdatePicker({oncleared:function(dp){alert('当前日期所选择的月份为:'+dp.cal.date.M);}})"/>

示例5-3-3 综合使用两个事件

4.年月日时分秒的changing和changed

年月日时分秒都有对应的changing和changed事件,分别是:

ychanging ychanged

Mchanging Mchanged

dchanging dchanged

Hchanging Hchanged

mchanging mchanged

schanging schanged

示例5-4-1 年月日改变时弹出信息

这个例子用到了$dp.cal.date 和$dp.cal.newdate 属性,你能从这里发现他们的不同之处吗?

下面是有关这两个属性的描述详见内置函数和属性

6. 快速选择功能

此功能允许指定5个最常用的日期,可以方便用户选择,如果不指定,系统将自动生成

相关属性:

qsEnabled是否启用快速选择功能, 注意:如果日期格式里不包含 d(天) 这个元素时,快速选择将一直显示,不收此属性控制

quickSel快速选择数据,可以传入5个快速选择日期,日期格式同min/maxDate

注意:

日期格式必须与 realDateFmt realTimeFmt 相匹配

除了使用静态的日期值以外,还可以使用动态参数(如:%y,%M分别表示当前年和月)

示例6-1 传入2个静态日期

注意:当传入的数据不足5个时,系统将自动补全

示例6-2 传入2个动态日期,1个静态日期

注意:当传入的数据不足5个时,系统将自动补全

1. 属性配置

1.属性表

自动化测试工具解析

7.6 AutoRunner简介 (1) 7.6.1 AutoRunner的组成 (1) 7.6.1.1 AutoRunner功能简介 (4) 7.6.2 AutoRunner的安装要求 (6) 7.6.3 AutoRunner的安装 (6) 7.6.4配置AutoRunner (9) 7.6.4.1配置AutoRunner (9) 7.6.5 AutoRunner的使用流程 (10) 7.6.5.1 AutoRunner使用流程简介 (10) 7.6.5.2创建项目 (11) 7.6.5.3 创建脚本 (14) 7.6.5.4 录制脚本 (15) 7.6.5.5 录制回放 (17) 7.6.5.6 脚本参数化 (18) 7.6.5.6 属性校验 (22) 7.6.5.7 脚本调用 (24) 7.6 AutoRunner简介 7.6.1 AutoRunner的组成

集成开发环境: (Integrated Development Environment 简称IDE)软件是用于程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面工具,也就是集成了代码编写功能、分析功能、编译功能、Debug功能等一体化的开发软件套。所有具备这一特性的软件或者软件套(组)都可以叫做IDE。如微软的Visual Studio系列,Borland的C++ Builder、Delphi系列等。 IDE环境菜单栏 AutoRunner3.9中的菜单栏如上图所示,主菜单包含文件、编辑、录制、执行、设置、许可证、帮助等菜单项,下面对每一项做一个简介。 文件菜单 如图所示,所有对脚本的管理操作都可以在文件菜单下完成,包括对脚本的新建,导入,保存,另存为,关闭,改变工作空间,最近打开,退出等等。 编辑菜单

wdm驱动开发之路

WDM驱动开发之路 写在前面:在专栏的前几期中,我们一起初步学习了vxd的开发技术。Vxd技术是很深奥的,不是一篇两篇文章能讲清楚,但你已经入了门,剩下的就要看你的修行了。多看书,多泡论坛(当然是上咱们的驱动开发网论坛了:->),多写程序…我的手不够用了。功到自然成嘛。不过话又说回来,vxd只是权宜之计,WDM才符合当今的潮流(程序员都是时髦人士,君不见先是VB、VC然后是asp、JSP、PHP,数也数不过来呀),Win9x寿终正寝时也就是vxd的末日,你不想随它而去吧(开个玩笑),那就随我来。 按笔者的想法,这篇文章写成连载形式,一次讲一个主题,并且必要时带着例子,让大伙step by step地把WDM驱动弄个透底,不想让大家觉得稀里糊涂,也不想让大家觉得白买杂志了。 今天我们一起讨论第一部分,了解篇。 (一)了解篇 WDM模型(Windows Driver Model)是微软公司为当前主流操作系统Windows98和Windows 2000的驱动程序设计的一种构架。它和传统的win3.x和win95使用的vxd的驱动是完全不同的体系结构。不过对于最终用户来说,WDM驱动程序在Windows98和Windows2000下的表现很相似。作为驱动开发人员来说,它在两者中有很多的不同。并且Windows98中的WDM只能算是Windowss2000中的WDM的一个了集。在Windows98中有一些驱动程序只能使用VXD来实现,如串行通讯驱动等。 要写驱动程序,首先要了解操作系统的结构。在WDM体系中,windows2000操作系统中是最标准的实现方式,Windows98则是部分兼容WDM结构。照微软的说法,Windows98和Windows2000 X86(Intel 架构)版本实现二进制码兼容(参见98DDK),Windows2000 x86版本与其它CPU平台版本实现源码级兼容(因为Windows 2000是基本NT相似的结构,最底层是硬件抽象层HAL,所有我们相信它们之间能源码级兼容)。但实际上,Windows2000的WDM实现中有很多例程在Windows98中没有实现,一旦试图加载这样的WDM驱动程序到Windows98中,则不能正常加载,当然我们也有办法实现它,那就是利用“桩”技术。具体可参见Walter Oney写的《Programming the Microsoft Windows Driver Model》一书。我们首先来看看Windows 2000的系统结构,然后再来看看Windows 98的。 图一是Windows 2000的系统结构图。从图中我们可以看出:整个系统被分为两个态,用户态和核心态。 从图中可以明显看出I/O操作最后是怎样作用到硬件上的。用户态应用程序对Windows 子系统进行win32 API调用,这个调用由系统服务接口作用到I/O管理器(严格地说,在Windows 系统中不存在I/O管理器这样的独立模块,这个只是为了方便叙述而将各种核心功能调用的集合称作I/O管理器,业界人士都这样称呼这个部分),I/O管理器进行必要的参数匹配和操作安全性检查,然后由这个请求构造出合适的IRP(IO Request Package,I/O请求包),并把此IRP传给驱动程序。简单情况下,驱动程序直接执行这个请求包,并与硬件打交道,从而完成I/O请求工作,最后由I/O管理器将执行结果返回给用户态程序。但在WDM体系结构中,大部分实行分层处理。即在图中“设备驱动“这部分,分成了若干层,典型地分成高层驱动程序、中间层驱动程序、底层驱动程序。每层驱动再把I/O请求划分成更简单的请求,以传给更下层的驱动执行。以文件系统驱动为例,最高层驱动只知道文件如何在磁盘上表示,但不知到怎样得到数据。最低层驱动程序只知道怎样从磁盘取出512B为单的数据块,但不知道文件怎样表示。举个更具体的生活例子。主人(最高层驱动)知道(并且需要)笔计本电脑,但不知道具体放在什么位置;而仆人(最底层驱动)却知道它放在具体什么地方,但

从零开始搭建Linux驱动开发环境

参考: 韦东山视频第10课第一节内核启动流程分析之编译体验 第11课第三节构建根文件系统之busybox 第11课第四节构建根文件系统之构建根文件系统韦东山书籍《嵌入式linux应用开发完全手册》 其他《linux设备驱动程序》第三版 平台: JZ2440、mini2440或TQ2440 交叉网线和miniUSB PC机(windows系统和Vmware下的ubuntu12.04) 一、交叉编译环境的选型 具体的安装交叉编译工具,网上很多资料都有,我的那篇《arm-linux- gcc交叉环境相关知识》也有介绍,这里我只是想提示大家:构建跟文件系统中所用到的lib库一定要是本系统Ubuntu中的交叉编译环境arm-linux- gcc中的。即如果电脑ubuntu中的交叉编译环境为arm-linux-

二、主机、开发板和虚拟机要三者互通 w IP v2.0》一文中有详细的操作步骤,不再赘述。 linux 2.6.22.6_jz2440.patch组合而来,具体操作: 1. 解压缩内核和其补丁包 tar xjvf linux-2.6.22.6.tar.bz2 # 解压内核 tar xjvf linux-2.6.22.6_jz2440.tar.bz2 # 解压补丁

cd linux_2.6.22.6 patch –p1 < ../linux-2.6.22.6_jz2440.patch 3. 配置 在内核目录下执行make 2410_defconfig生成配置菜单,至于怎么配置,《嵌入式linux应用开发完全手册》有详细介绍。 4. 生成uImage make uImage 四、移植busybox 在我们的根文件系统中的/bin和/sbin目录下有各种命令的应用程序,而这些程序在嵌入式系统中都是通过busybox来构建的,每一个命令实际上都是一个指向bu sybox的链接,busybox通过传入的参数来决定进行何种命令操作。 1)配置busybox 解压busybox-1.7.0,然后进入该目录,使用make menuconfig进行配置。这里我们这配置两项 一是在编译选项选择动态库编译,当然你也可以选择静态,不过那样构建的根文件系统会比动态编译的的大。 ->Busybox Settings ->Build Options

行为驱动开发

行为驱动开发 行为驱动开发(简称BDD)是测试驱动开发的升级版。它是一套软件工程实践方法,能帮助研发团队更快地构建和交付更有价值和更高质量的软件产品。采用BDD思想编写的测试读起来更像规格说明书而不是单元测试,所以它是使用测试作为表达和验证行为的一种手段。基于这个特性,BDD也非常适合应用在需求分析中。 一、行为驱动开发的原则 1.聚焦交付业务价值。使用验收标准作为目标,帮助业务实现更实际的可交付的功能。 2.团队共同确定交付标准。业务分析人员,开发人员,测试人员与最终用户一起定义和指定功能。 3.拥抱变化。项目开始时不锁定需求,而是假设需求,从用户那里得到早期的反馈,对需求的理解将在项目的整个生命周期中演进和变更。 4.不仅仅编写自动化测试,而是编写可执行规范和底层规范。团队将验收标准转换为自动化的验收测试,更准确地说是转换为可执行规范。在编写任何代码之前,开发人员将考虑代码实际上应该做什么,并将其表示为底层的可执行规范。可执行规范是一种自动化测试,它演示和验证应用程序如何交付特定的业务需求。自动化测试作为构建过程的一部分运行,并在对应用程序进行更改时运行,进行验收测试和回归测试。 5.交付活文档,并使用活文档来支持后续维护工作。在项目结束后持续维护项目可执行规范。 二、行为驱动开发的优势 1.专注业务目标,避免工程师把工作量浪费在不提供业务价值的功能上,能够降低成本,减少浪费。

2.完整的可执行规范,可充当开发人员的辅助技术文档,更容易理解现有的代码库并进行更改。 3.全面的自动化验收测试和回归测试,不仅可以提升执行效率,也能降低手工测试的出错率,使得迭代速度更快更可靠。 三、行为驱动开发的缺陷 1. 需要多个角色高度参与和协作,涉众如果不愿意或不能参与对话和协作,或者等到项目结束后才给出反馈,就很难充分利用BDD的优点。 2.比较适用于敏捷开发,但不太适用于瀑布式开发。 3.对参与角色能力要求很高,尤其是测试团队,不仅需要精通业务,对业务目标清晰,而且对测试技术能力要求更高,如果编写的自动化测试很烂,会导致更高的测试维护成本。

软件自动化测试工具介绍--所有

软件自动化测试工具介绍 一、功能测试工具 1、QTP测试工具 全名 HP QUiCkTeSt ProfeSSional SoftWare ,最新的版本为HP QUiCkTeSt ProfeSSional 11.0 QTP是 quickteSt PrOfeSSiOnal 的简称,是一种自动测试工具。使用QTP的目 的是想用它来执行重复的手动测试,主要是用于回归测试和测试同一软件的新版本。因此你在测试前要考虑好如何对应用程序进行测试,例如要测试那些功能、操作步骤、输入数据和期望的输出数据等 QUiCkTeSt针对的是GUl应用程序,包括传统的Windows应用程序,以及现在越来越流行的Web应用。它可以覆盖绝大多数的软件开发技术,简单高效,并具备测试用例可重用的特点。其中包括:创建测试、插入检查点、检验数据、增强测试、运行测试、分析结果和维护测试等方面。 2、WinRUnner MerCUry Interactive 公司的 WinRUnner是一种企业级的功能测试工具,用 于检测应用程序是否能够达到预期的功能及正常运行。通过自动录制、检测和回放用户的应用操作,WinRUnner能够有效地帮助测试人员对复杂的企 业级应用的不同发布版进行测试,提高测试人员的工作效率和质量,确保跨平台的、复杂的企业级应用无故障发布及长期稳定运行。 企业级应用可能包括 Web应用系统,ERP系统,CRM S统等等。这些系统在发布之前,升级之后都要经过测试,确保所有功能都能正常运行,没有任何错误。如何有效地测试不断升级更新且不同环境的应用系统,是每个公司都会面临的问题。 3、RatiOnal Robot 是业界最顶尖的功能测试工具,它甚至可以在测试人员学习高级脚本技术之前帮助其进行成功的测试。它集成在测试人员的桌面IBM Rational TeSt Manager上,在这里测试人员可以计划、组织、执行、管理和报告所有测试活动,包括手动测试报告。这种测试和管理的双重功能是自动化测试的理想开始。 4、AdVentNet QEngine AdVentNet QEngine是一个应用广泛且独立于平台的自动化软件测试工具, 测试、 可用于Web功能Web性能测试、JaVa应用功能测试、JaVa APl测试、SoAP测试、回归测试和 JaVa

软件测试自动化及工具

软件测试自动化与软件测试工具 目录 一、软件自动化测试基础 (2) 1、1 软件自动化测试的产生 (2) 1、2软件自动化测试的概念 (2) 1、3当软件开发过程中具有下列情况时首先需要考虑引入自动化测试: (2) 二、自动化测试的作用和优势 (2) 2、1概述 (2) 2、1、1产生可靠的系统 (2) 2、1、2改进测试工作质量 (2) 2、1、3.减少测试工作量并加快测试进度 (3) 2、1、4友情提醒 (3) 三、自动化测试工具 (3) 3、1软件测试工具分类 (3) 3、1、1白盒测试工具 (4) 3、1、2黑盒测试工具 (5) 3、1、3测试管理工具 (5) 3、2自动化测试工具一览 (5) 3、2、1 Rational Robot (5) 3、2、2 WinRunner (6) 3、2、3 LoadRunner (6) 3、2、4 Parasoft C++ Test (7) 3、2、5 QACenter (7) 3、2、6 WebLoad (8) 3、2、7 Web Application Stress (WAS) Tool (8) 3、2、8 TestDirector (8) 四、附录 (9)

一、软件自动化测试基础 1、1 软件自动化测试的产生 随着计算机日益广泛的应用,计算机软件越来越庞大和复杂,软件测试的工作量也越来越大。随着人们对软件测试工作的重视,大量的软件测试自动化工具不断涌现出来,自动化测试能够满足软件公司想在最短的进度内充分测试其软件的需求,一些软件公司在这方面的投入,会对整个开发工作的质量、成本和周期带来非常明显的效果。 1、2软件自动化测试的概念 软件测试自动化就是通过测试工具或其他手段,按照测试工程师的预定计划对软件产品进行自动的测试,它是软件测试的一个重要组成部分,能够完成许多手工无法完成或者难以实现的一些测试工作。正确、合理地实施自动化测试,能够快速、全面地对软件进行测试,从而提高软件质量、节省经费、缩短产品发布周期。 自动化测试能够替代大量手工测试工作,避免重复测试,同时,它还能够完成大量手工无法完成的测试工作,如并发用户测试、大数据量测试、长时间运行可靠性测试等。 1、3当软件开发过程中具有下列情况时首先需要考虑引入自动化测试: 非常重要的测试 涉及范围很广的测试 对主要功能的测试 容易自动化的测试 很快有回报的测试 运行最频繁的测试 二、自动化测试的作用和优势 2、1概述 使用测试工具的目的就是要提高软件测试的效率和软件测试的质量。通常,自动化测试的好处有: 产生可靠的系统; 改进测试工作质量; 减少测试工作量并加快测试进度。 2、1、1产生可靠的系统 测试工作的主要目标一是找出缺陷,从而减少应用中的错误;另一个是确保系统的性能满足用户的期望。为了有效地支持这些目标,在开发生存周期的需求定义阶段,当开发和细化需求时则应着手测试工作。使用自动化测试可改进所有的测试领域,包括测试程序开发、测试执行,测试结果分析、故障状况和报告生成。它还支持所有的测试阶段,其中包括单元测试、集成测试、系统测试、验收测试与回归测试等。 通过使用自动化测试可获得的效果可归纳如下。 (1)需求定义的改进 (2)性能测试的改进 (3)负载/压力测试的改进 (4)高质量测量与测试最佳化 (5)改进与开发组人员之间的关系 (6)改进系统开发生存周期 2、1、2改进测试工作质量 通过使用自动化测试工具,可增加测试的深度与广度,改进测试工作质量。其具体好处可归

单片机驱动开发班

单片机驱动开发班 课程背景: 随着经济的发展,科技的突飞猛进,芯片技术也取得了飞速发展,这就使单片机技术在各种民用和工业测控等领域得到更为广泛应用。包括如今异常火爆的汽车电子中的车身控制、底盘控制、发动机控制、安全控制、娱乐系统等;包括传统的工业控制中的电机控制、温控系统、仪表设备、楼宇自控系统、数据采集系统等;包括计算机网络通信、数据传输、军用设备、航空航天等。单片机凭借其低成本、高性能的不可替代优势,已经成为微电脑控制的主力军。据统计,我国的单片机年需求量已达2亿片以上,且每年以大约15%的速度增长,发展迅速的单片机行业有着广阔的前景。 相比于发展迅猛的单片机行业,国内的单片机设计开发从业人员缺口很大。据统计,到2015年,我国单片机开发从业人员将达350万人,而目前的从业者只有大约一百五十万人,两百万的人才缺口正驱动大量人员加入这个庞大的群体。 学院优势: 硅谷芯微是深圳市硅谷龙科技有限公司教育产业下属专门从事IT实训的独立机构,深圳市硅谷龙科技有限公司始创于中国深圳,由侯工单片机工作室投资成立,致力于通过创新、高品质的课程体系和高效、实用的教育服务推动我国芯片级IT教育体系的建设。 深圳市硅谷龙科技有限公司致力于提供个性化、着眼于未来的教育服务,把国际先进且具有自主知识产权的案例全面应用于教育服务,在IT职业教育领域,硅谷龙以实用型的工程师人才培养理念作导引,以学生就业和职业生涯发展为指向,以成熟的IT开发经验为基础,通过完善、创新的课程体系以及全球化的企业合作为保障开展IT各类职业人才教育。硅谷龙在全国范围内建立实训基地,通过系统的实训,帮助学生提高职业素质及就业竞争力,并最终完成学员的就业服务。 面向行业及岗位: 面向行业:消费类电子、工控、汽车电子、监控电子等 主要岗位:单片机工程师、单片机硬件工程师、单片机技术支持工程师、单片机销售工程师、单片机驱动工程师。 教学目标:

PerformanceRunner自动化测试工具讲解

7.7 PerformanceRunner简介 (2) 7.7.1 PerformanceRunner的组成 (2) 7.7.1.1 PerformanceRunner功能简介 (11) 7.7.2 PerformanceRunner的安装要求 (12) 7.7.3 PerformanceRunner的安装 (12) 7.7.4配置PerformanceRunner (15) 7.7.4.1配置PerformanceRunner (15) 7.7.5 PerformanceRunner的使用流程 (17) 7.7.5.1 PerformanceRunner使用流程简介 (17) 7.7.5.2创建项目 (17) 7.7.5.3创建脚本 (19) 7.7.5.4 录制脚本 (21) 7.7.5.5 录制回放 (24) 7.7.5.6 关联脚本 (25) 7.7.5.6 属性校验 (26) 7.7.5.7 添加事务 (29) 7.7.5.8 场景的创建与执行 (29) 7.7.5.9 测试结果和数据分析 (33)

7.7 PerformanceRunner简介 7.7.1 PerformanceRunner的组成 用户界面-生成器 测试或监控环境时,需要在系统中模拟用户的真实行为。PerformanceRunner 测试工具模拟多个用户在系统中同时工作或访问系统的环境。为了进行这种模拟,用虚拟用户(即 Vuser)代替现实生活中的人。Vuser执行的操作在 Vuser 脚本中进行描述。用于创建 Vuser 脚本的主要工具是脚本生成器。生成器不仅录制 Vuser 脚本,它还运行 Vuser 脚本。使用生成器运行脚本有助于进行调试。使用生成器可模拟 Vuser 脚本在大型测试中的运行情况。录制 Vuser 脚本时,生成器会生成多个函数,用以定义录制会话期间所执行的操作。生成器将这些函数插入到脚本编辑器中以创建基本 Vuser脚本。

主流软件自动化测试工具介绍

主流自动化测试工具介绍 一、功能测试工具 1、Selenium (浏览器自动化测试框架) Selenium[1] 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成 .Net、Java、Perl等不同语言的测试脚本。据 Selenium 主页所说,与其他测试工具相比,使用 Selenium 的最大好处是: Selenium [2] 测试直接在浏览器中运行,就像真实用户所做的一样。Selenium 测试可以在 Windows、Linux 和 Macintosh上的 Internet Explorer、Mozilla 和 Firefox 中运行。其他测试工具都不能覆盖如此多的平台。使用 Selenium 和在浏览器中运行测试还有很多其他好处。 下面是主要的两大好处: 通过编写模仿用户操作的 Selenium 测试脚本,可以从终端用户的角度来测试应用程序。通过在不同浏览器中运行测试,更容易发现浏览器的不兼容性。Selenium 的核心,也称browser bot,是用 JavaScript 编写的。这使得测试脚本可以在受支持的浏览器中运行。browser bot 负责执行从测试脚本接收到的命令,测试脚本要么是用 HTML 的表布局编写的,要么是使用一种受支持的编程语言编写的。 2、QTP测试工具 全名HP QuickTest Professional software ,最新的版本为HP QuickTest Professional 11.0 QTP是quicktest Professional的简称,是一种自动测试工具。使用QTP的目的是想用它来执行重复的手动测试,主要是用于回归测试和测试同一软件的新版本。因此你在测试前要考虑好如何对应用程序进行测试,例如要测试那些功能、操作步骤、输入数据和期望的输出数据等 QuickTest针对的是GUI应用程序,包括传统的Windows应用程序,以及现在越来越流行的

软件自动化测试工具介绍--全

软件自动化测试工具介绍-全 一、功能测试工具 1、QTP测试工具 全名HP QuickTest Professional software ,最新的版本为HP QuickTest Professional 11.0 QTP是quicktest Professional的简称,是一种自动测试工具。使用QTP的目的是想用它来执行重复的手动测试,主要是用于回归测试和测试同一软件的新版本。因此你在测试前要考虑好如何对应用程序进行测试,例如要测试那些功能、操作步骤、输入数据和期望的输出数据等 QuickTest针对的是GUI应用程序,包括传统的Windows应用程序,以及现在越来越流行的Web应用。它可以覆盖绝大多数的软件开发技术,简单高效,并具备测试用例可重用的特点。其中包括:创建测试、插入检查点、检验数据、增强测试、运行测试、分析结果和维护测试等方面。 2、WinRunner Mercury Interactive公司的WinRunner是一种企业级的功能测试工具,用于检测应用程序是否能够达到预期的功能及正常运行。通过自动录制、检测和回放用户的应用操作,WinRunner能够有效地帮助测试人员对复杂的企业级应用的不同发布版进行测试,提高测试人员的工作效率和质量,确保跨平台的、复杂的企业级应用无故障发布及长期稳定运行。 企业级应用可能包括Web应用系统,ERP系统,CRM系统等等。这些系统在发布之前,升级之后都要经过测试,确保所有功能都能正常运行,没有任何错误。如何有效地测试不断升级更新且不同环境的应用系统,是每个公司都会面临的问题。 3、Rational Robot 是业界最顶尖的功能测试工具,它甚至可以在测试人员学习高级脚本技术之前帮助其进行成功的测试。它集成在测试人员的桌面IBM Rational Test Manager上,在这里测试人员可以计划、组织、执行、管理和报告所有测试活动,包括手动测试报告。这种测试和管理的双重功能是自动化测试的理想开始。 4、AdventNet QEngine AdventNet QEngine是一个应用广泛且独立于平台的自动化软件测试工具,可用于Web功能测试、web性能测试、Java应用功能测试、Java API测试、SOAP测试、回归测试和Java应

基于项目驱动的嵌入式综合开发

实训报告 实训名称:基于项目驱动的嵌入式综合开发姓名: 院(系): 专业班级: 学号: 指导教师: 实习时间:

一、实训目的 (一)实习目的 本实训课程是针对嵌入式软件专业学生专门设计的,通过本课程设置的几个嵌入式综合项目的系统学习,可以使学生由浅入深的对嵌入式Linux系统进行全面学习,能够独立胜任嵌入式Linux应用开发、系统开发、驱动开发等多方面工作,并注重敬业团队精神培养。 1)增强学生的理论联系实际的能力 2)通过实训了解企业项目开发流程和学习新技术的方法 3)通过实训项目了解企业项目开发过程中文档的整理方法和问题的分析方法 4)通过实训项目加强学生对基础课程的运用能力,使其认识到基础知识的重要性5)通过实训争强学生对本专业和未来工作岗位的理解,端正心态,明确就业目标6)通过实训争强学生的编程技能,培养其良好的编码风格和编码习惯 (二)方法 本实训课程安排在学校实验室统一进行实训,学生上机独立完成规定实训项目。 (三)任务 要求每位同学独立完成实训题目的编程、调试、优化与测试,并交付使用。要求强化编程思维、编程能力和代码优化的能力,撰写《实训报告》(含:需求分析、总体设计、算法分析及设计中遇到的主要问题和解决方法,设计中尚存的不足与心得体会)。上交完成的所有源程序及相关文件。

三、实训报告 3.1 项目1名称 智能手环 3.1.1 实训内容 本次实训内容是制作智能手环,需要实现计步,测量温度,显示时间,电量,报警等功能。具体模块如下: (1)LED模块:显示电量 (2)ADC模块:模数转换 (3)PWM模块:蜂鸣器报警 (4)KEY模块:按键控制 (5)RTC模块:实时时钟 (6)计步以及温度显示模块 (7)总体实现 3.1.2 实训过程及相关结果 首先需要搭建软硬件环境,安装Ubuntu系统,安装交叉编译工具链。然后需要下载调试硬件连接,安装串口驱动等。环境搭建完成之后需要实现相应的每一个功能,具体功能如下: (1)LED模块:显示电量 此模块主要功能为点亮LED灯,以此来实现手环的点亮显示功能。 原理图如下: 在项目目录下分别创建led.c,led.h,main.c文件,根据芯片手册所分析的对应寄存器数据,在

ARM裸机驱动开发说明书

附件1: 学号: 实验设计说明书 题目ARM裸机驱动 学院计算机科学与信息工程学院 专业计算机科学与信息技术 班级12嵌入式 学生姓名古应波、卢圣 指导教师朱超平 2015年6月10日

写在前面 本文档以ARM9(三星2410/2440)为平台,介绍了如何实现裸机驱动程序的编写。初次接触裸机程序,感觉什么都是一头雾水,由于对硬件的不熟悉,所以前期花了很多时间来熟悉S3C2440的硬件原理图,初步熟悉了硬件原理之后,发现其实简单的逻辑驱动程序开发并不是很难。学习就应该这样,循序渐进。把一步步把简单的东西弄懂了,便没有复杂的了,所谓水到渠成。这篇文章是面对初学者的,把很多问题简化了。希望对刚接触ARM裸机程序开发的同学有所帮助。 由于时间和技术的限制,程序还存在不少bug,欢迎指正。

目录 第一节、项目建立 (3) 第二节、相关参数的配置 (4) 第三节、程序的编译、烧写、执行 (7) 第四节、串口驱动 (8) 第五节、LED驱动 (11) 第六节、按键及蜂鸣器驱动 (12) 第七节、步进电机驱动 (13) 第八节、RTC驱动 (14) 第九节、定时器驱动 (16) 第十节、中断驱动 (17) 第十一节、数码管驱动 (18) 第十二节、I2C矩阵键盘驱动 (19) 第十三节、LCD驱动 (20) 第十四节、触摸板驱动 (24) 第十五节、驱动整合 (26) 串口模式: (26) LCD模式: (27)

第一节、项目建立 本次项目使用的软/硬件包括: CodeWarrior for ARM Developer Suite v1.2(以下简称ADS). MagicARM2440硬件仿真平台 工程建立步骤: 打开ADS,选择File->New。在弹出的面板框中选择ARM Executable Image,项目名填写Test(可根据自己需要自行更改),项目存储位置此处选择F://ADS/Test(可根据自己需要自行更改)。注意:项目的储存位置一定不要包含中文路径,否则会出现不可预期的错误。 建立项目工程组织文件夹。在屏幕的中部点击右键,选择Create Group新建项目的组织文件夹,方便对源文件进行管理。如下图

Windows驱动开发技术详解 第六章的(Windows内核函数)自我理解

Windows驱动开发技术详解第六章的(Windows内核函数)自我理解 学习各种高级外挂制作技术,马上去百度搜索(魔鬼作坊),点击第一个站进入,快速成为做挂达人。 其实这章主要就是讲函数DDK有自己的函数跟SDK一样编写DDK使用DDK提供的函数就OK了 /////////////////////////////////////////////////////////////////////////////// ASCII字符串和宽字符串 ASCII字符构造 char*str1="abc"; 打印ASCII字符串 char*string="hello"; KdPrint("%s\n",string);\\注意是小写%s ///// UNICODE字符构造 wchar_t*str2=L"abc"; 打印宽字符串 WCHAR*string=L"hello"; KdPrint("%S\n",string);\\注意是大写%S /////////////////////////////////////////////////////////////////////////////// ANSI_STRING字符串和UNICODE_STRING字符串 ASCII字符串进行了封装 typedef struct_STRING{ USHORT Length;//字符的长度。 USHORT MaximumLength;//整个字符串缓冲区的最大长度。 PCHAR Buffer;//缓冲区的指针。 }STRING; 输出字符串 ANSI_STRING ansiString; KdPrint("%Z\n",&ansiString);//注意是%Z UNICODE_STRING宽字符串封装 typedef struct_UNICODE_STRING{ USHORT Length;//字符的长度,单位是字节。如果是N个字符,那么Length等于N的2倍。USHORT MaximumLength;//整个字符串缓冲区的最大长度,单位也是字节。 PWSTR Buffer;//缓冲区的指针。 }UNICODE_STRING*PUNICODE_STRING; 输出字符串 UNICODE_STRING ansiString; KdPrint("%wZ\n",&ansiString);//注意是%wZ ///////////////////////////////////////////////////////////////////////////////

适合公司的自动化测试工具

1、Qtp 目前主流版本9.2、10、11,推荐10版本。 Qtp是业内市场份额最大的测试工具,原Mercury公司产品,Winrunner的子嗣。摒弃了Winrunner自身的缺陷而重新装配起来的新新产品,凭借Mercury公司在测试工具市场的绝对领导地位,这个后起之秀从04年诞生后二三年,就很快取代了Winrunner在全球的市场分额,是HP旗下测试工具的主力。 测试脚本为类vbs语言,绝大部分的vbs语言都可以在qtp上运行。 2、QArun 为当今关键的的客户/服务器、电子商务到企业资源规划(ERP)应用提供企业级的功能测试。通过将费时的测试脚本开发和测试执行自动化,QARun帮助测试人员和QA管理人员更有效地工作以加快应用开发。 3、Micro Focus TestPartner QARun的升级版,支持VBA脚本,侧重于应用软件的业务逻辑测试,于Mercury早先提出的BPT测试非常类似,让非技术的业务人员进行偏向业务流层面的功能自动化测试。 4、TestComplete 强大的主流自动化测试工具,全面支持Windows应用、WEB应用、.NET、JAVA、AJAX甚至Windows Moblie、Pocket PC、SmartPhone等。另外一个无与伦比的特性,TestComplete除了主要的功能测试外,完全可以做性能测试、压力测试等。而且它具有强大的API接口,非常易于扩展,它虽是商业工具,但是非常便宜。 5、QAWizard QA Wizard Pro是Seapine的自动化测试工具产品,如今的版本功能已经非常强大,支持常规的Windows应用程序、WEB应用程序,开发技术包括C#、https://www.wendangku.net/doc/ef9606065.html,、C++、Qt、AJAX、ActiveX、JS、JAVA、Delphi、WinForms等。 6、AutoRunner 上海泽众软件公司自主研发的自动化测试工具AutoRunner,实现对WEB和Windows应用进行自动化功能测试的过程。脚本为JAVA。同意是泽众出品的TAR(Terminal AutoRunner)是面向终端系统进行自动化回归测试的工具,适用用VT100、VT220等标准应用,支持命令行和窗口模式,也支持脚本录制和回放,适合银行业务系统。

软件自动化测试工具的评估与选择

软件自动化测试工具的评估与选择 2008-12-11 来源: 数据驱动测试一用变量取代在脚本代码中固定的名字、地址、数据等,通常通过变量从外部(文件、电子表格、数据库等)读取数据的测试,数据驱动自动化测试通常是开发自动化测试工具的最终目标。[1] 映射一(1)识别在不同组,或相同组内对应项的过程。(2)是(1)的一个表示。(3)一个关联的多元性。(4)在数学上,将每个定义域集合元素(输入)均指派为值域集合上某个元素(输出)的函数。一个一对一映射将每个定义域元素均指派为值域中一个唯一元素。可能存在未被映射的值域元素。一个到上映射将每个域元素至少指派为一个定义域元素。几个定义域元素可映射为同一个值域元素。一个双映射同时为一到一和到上的。每个定义域元素被确切映射为值域上的一个元素,而每个域元素至少被影射为定义域上的一个元素。[2] 脚本一以文件形式保存,具有正规语法的数据和/或指令,通常用于测试执行自动工具中。测试脚本可以实现一个或多个测试用例、导航、设置或清除设置及比较。用于手工测试执行的测试脚本为策划过程。[3] 录制/回放一某些测试执行工具的一种功能,将测试输入记录(捕获)为脚本,然后执行软件时可以回放这个脚本。[3] 随着软件规模和复杂程度的增加,在软件测试工作需要更多时间的同时,项目周期却比以前大大缩短,如何在有限的时间内完成软件测试工作,尽最大的可能暴露软件中隐含的缺陷,是软件测试工作中亟待解决的问题,而软件测试自动化将是获取可接受的测试覆盖率的一种有效途径,也是软件测试发展的必然趋势,然而,"工欲善其事必先利其器",成功的自动化测试离不开一个合适的测试工具,

软件自动化测试工具汇总

一、自动软件测试工具的分类 目前市场上的软件测试工具,从测试方法上一般分为白盒测试工具、黑盒测试工具、测试管理工具以及辅助测试工具四大类。 a) 白盒测试工具 白盒测试工具一般是针对代码进行测试,测试中发现的缺陷可以定位到代码级,根据测试工具原理的不同,又可以分为静态测试工具和动态测试工具。 i. 静态测试工具 静态测试工具直接对代码进行分析,不需要运行代码,也不需要对代码编译链接,生成可执行文件。静态测试工具一般是对代码进行语法扫描,找出不符合编码规范的地方,根据某种质量模型评价代码的质量,生成系统的调用关系图等。 ii. 动态测试工具 动态测试工具与静态测试工具不同,动态测试工具的一般采用“插桩”的方式,向代码生成的可执行文件中插入一些监测代码,用来统计程序运行时的数据。其与静态测试工具最大的不同就是动态测试工具要求被测系统实际运行。 白盒测试工具比较多,对它们的选择必须考虑它们所支持的语言或环境,这方面网上的资料也比较多,在此无法一一进行介绍,比较有代表性的如下表所示:

b) 黑盒测试工具 黑盒测试工具适用于黑盒测试的场合,黑盒测试工具包括功能测试工具和性能测试工具。黑盒测试工具的一般原理是利用脚本的录制(Record)/回放(Playback),模拟用户的操作,然后将被测系统的输出记录下来同预先给定的标准结果比较。黑盒测试工具可以大大提高测试人员的工作效率和质量,在迭代开发的过程中,能够很好地进行回归测试。 c) 测试管理工具 测试管理工具用于对测试进行管理。一般而言,测试管理工具对测试需求、测试计划、测试用例、测试实施进行管理,并且,测试管理工具还包括对缺陷的跟踪管理。 d) 辅助测试工具

学习笔记windows驱动开发技术详解

<学习笔记>Windows驱动开发技术详解 派遣函数是Windows驱动程序中的重要概念。驱动程序的主要功能是负责处理I/O请求,其中大部分I/O请求是在派遣函数中处理的。 用户模式下所有对驱动程序的I/O请求,全部由操作系统转换为一个叫做IRP数据结构,不同的IRP会被“派遣”到不同的派遣函数中。IRP与派遣函数 IRP的处理机制类似于Windows应用程序中的“消息处理”,驱动程序接收到不同的IRP后,会进入不同的派遣函数,在派遣函数中IRP得到处理。1.IRP 在Windows内核中,有一种数据结构叫做IRP(I/O Request Package),即输入输出请求包。上层应用程序与底层驱动程序通信时,应用程序会发出I/O请求。操作系统将I/O请求转化为相应的IRP数据,不同类型的IRP会被传递到不同的派遣函数中。 IRP有两个基本的重要属性,一个是MajorFunction,另一个MinorFunction,分别记录IRP的主类型和子类型,操作系统根据MajorFunction将IRP“派遣”到不同的派遣函数中,在派遣函数中还可以继续判断这个IRP属于哪种MinorFunction。 下面是HelloDDK的DriverEntry中关于派遣函数的注册:

view plaincopy to clipboardprint? #pragma INITCODE extern "C" NTSTATUS DriverEntry( IN PDRIVER_OBJECT pDriverObject, IN PUNICODE_STRING pRegisterPath ) { NTSTATUS status; KdPrint(("Enter DriverEntry\n")); //设置卸载函数 pDriverObject->DriverUnload = HelloDDKUnload; //设置派遣函数 pDriverObject->MajorFunction[IRP_MJ_CREATE] = HelloDDKDispatchRoutine; pDriverObject->MajorFunction[IRP_MJ_CLOSE] = HelloDDKDispatchRoutine;

常用的9种自动化测试工具

常用的9种自动化测试工具 一、 QTP全名HP QuickTest Professional software ,最新的版本为HP QuickTest Professional 11.0QTP是quicktest Professional的简称,是一种自动测试工具。使用QTP的目的是想用它来执行重复的手动测试,主要是用于回归测试和测试同一软件的新版本。因此你在测试前要考虑好如何对应用程序进行测试,例如要测试那些功能、操作步骤、输入数据和期望的输出数据等QuickTest针对的是GUI应用程序,包括传统的Windows 应用程序,以及现在越来越流行的Web应用。它可以覆盖绝大多数的软件开发技术,简单高效,并具备测试用例可重用的特点。其中包括:创建测试、插入检查点、检验数据、增强测试、运行测试、分析结果和维护测试等方面。 二、 WinRunnerMercury Interactive公司的WinRunner是一种企业级的功能测试工具,用于检测应用程序是否能够达到预期的功能及正常运行。通过自动录制、检测和回放用户的应用操作,WinRunner能够有效地帮助测试人员对复杂的企业级应用的不同发布版进行测试,提高测试人员的工作效率和质量,确保跨平台的、复杂的企业级应用无故

障发布及长期稳定运行。企业级应用可能包括Web应用系统,ERP系统,CRM系统等等。这些系统在发布之前,升级之后都要经过测试,确保所有功能都能正常运行,没有任何错误。如何有效地测试不断升级更新且不同环境的应用系统,是每个公司都会面临的问题。 三、 Rational Robot是业界最顶尖的功能测试工具,它甚至可以在测试人员学习高级脚本技术之前帮助其进行成功的测试。它集成在测试人员的桌面IBM Rational Test Manager上,在这里测试人员可以计划、组织、执行、管理和报告所有测试活动,包括手动测试报告。这种测试和管理的双重功能是自动化测试的理想开始。 四、 AdventNet QEngineAdventNet QEngine是一个应用广泛且独立于平台的自动化软件测试工具,可用于Web功能测试、web性能测试、Java 应用功能测试、Java API测试、SOAP测试、回归测试和Java应用性能测试。支持对

linux的lcd驱动详细讲解

嵌入式驱动程序Day12 Top 1. LCD驱动设计开发 1 LCD驱动设计开发 1.1问题 通过led驱动开发掌握linux内核framebuffer 驱动开发通用方法。 1.2方案 一、帧缓冲(Framebuffer )。 帧缓冲(Framebuffer )是Linux为显示设备提供的一个接口,Linux抽象出FrameBuffer这个设备来供用户态进程实现直接写屏。Framebuffer机制模仿显卡的功 能,将显卡硬件结构抽象掉,可以通过Framebuffer的读写直接对显存进行操作。用户 可以将Framebuffer看成是显示内存的一个映像,将其映射到进程地址空间之后,就可以直接进行读写操作,而写操作可以立即反应在屏幕上。这种操作是抽象的,统一的。用户不必关心物理显存的位置、换页机制等等具体细节。这些都是由Framebuffer 设备驱动 来完成的。 Framebuffer本身不具备任何运算数据的能力,就只好比是一个暂时存放水的水池。CPU将运算后的结果放到这个水池,水池再将结果流到显示器,中间不会对数据做处 理。应用程序也可以直接读写这个水池的内容。在应用程序中,一般通过将FrameBuffer 设备映射到进程地址空间的方式使用,比如下面的程序就打开/dev/fbO 设备,并通过mmap系统调用进行地址映射。 FrameBuffer设备还提供了若干ioctl 命令,通过这些命令,可以获得显示设备的 一些固定信息(比如显示内存大小)、与显示模式相关的可变信息(比如分辨率、象素结构、每扫描线的字节宽度),以及伪彩色模式下的调色板信息等等。 二、FrameBuffer 在Linux中的实现和机制。 Framebuffer对应的源文件在linux/drivers/video/ 目录下。总的抽象设备文件为fbcon.c,在这个目录下还有与各种显卡驱动相关的源文件。 1. 分析Framebuffer设备驱动。 FrameBuffer设备驱动基于如下两个文件: (1) linux/include/linux/fb.h (2) linux/drivers/video/fbmem.c 2. 分析这两个文件。

相关文档
相关文档 最新文档