应用程序界面部分用VB6编写,数据采集和驱动部分使用的是研华驱动程序所提供的API 函数。这里不介绍VB6,只介绍使用的研华API函数。
编程前的准备
安装PCI-1243U驱动程序,注意要安装Motion Manager程序,用它来进行一些设置。 阅读PCI-1243U User Manual(安装驱动后,该PDF文件能够通过Windows“开始”菜单找到)。
建立VB6工程。
将AMCL.BAS文件添加到工程中,或者将其中的一些我们要用到的函数声明和定义输入到项目的其他module文件中。这个文件在研华驱动的安装文件夹中能找到。
使用了如下函数:
1)打开板卡
板卡开始工作前,要打开,通过下面的函数完成:
ADM_OpenDevice(0, ADM_PCI1243, m_lngDriverHandle)
参数1:板卡号,在Motion Manager中设置,如果计算机上只装了1块这样的板卡就为0,如果多块,就是不同的数字,它在程序中标识指定板卡。
参数2:板卡型号标识,这里只能输入ADM_PCI1243。
参数3:一个句柄,用来标识一个打开的设备。函数执行后才能够得到,后面的各种函数都要使用这个句柄。
执行任何函数前,首先都要执行这个函数。
2)装载设置
ADM_LoadConfigFormFile(m_lngDriverHandle, strConfigFile)
参数1:设备句柄,即前面函数执行得到的。
参数2:设备参数文件。该文件用Motion Manager设置参数后,将设置结果保存,就得到一个文件(扩展名为.cfg),实际上是一个文本文件。可以将该文件拷贝至本程序的文件夹下使用。
ADM_OpenD evice后,一般要执行这个函数。执行结果是得到一些设置好的参数(在程序里先不用考虑这些)。
3)点对点参数设置
接下来使用了这个函数:
ADM_SetPtPMotionConfig(m_lngDriverHandle, wAxis, stPtPMotionConfig)
参数1:设备句柄。
参数2:轴的标志,PCI1243一共能驱动四个轴:X、Y、Z、U,如果我们驱动的是X轴,就写ADM_X_AXIS,这个值在AMCL.bas中定义。
参数3:是一个结构ADM_PtPMotionConfig,定义了各种点对点参数。比如:
stPtPMotionConfig.wAccDecMode = ADM_T_T
stPtPMotionConfig.dfAccTime_L = 100
stPtPMotionConfig.dfAccTime_S = 0
stPtPMotionConfig.dfDecTime_L = 100
stPtPMotionConfig.dfDecTime_S = 0
stPtPMotionConfig.dfSV = 500
stPtPMotionConfig.dfDV = 3000
这些内容看参考手册就可以,我就不罗嗦了。
4)连续转动
ADM_CMove(m_lngDriverHandle, ADM_X_AXIS, intDir)
参数1:设备句柄。
参数2:轴的标识,这里是X轴。
参数3:转动的方向,用0和1来标识,0为正向。
5)停止转动
ADM_StopMotion_M(m_lngDriverHandle, ADM_X_AXIS)
参数1:设备句柄。
参数2:轴的标识,这里是写的X轴。
6)关闭板卡
板卡完成所有工作后,如果不再使用,则需要关闭,通过下面的函数完成。 ADM_CloseDevice(m_lngDriverHandle)
参数就是前面函数执行后得到的句柄。
调试程序一般应经过以下几个步骤: 1、先进行人工检查,即静态检查。 在写好一个程序以后,不要匆匆忙忙上机,而应对纸面上的程序进行人工检查。这一步是十分重要的,它能发现程序设计人员由于疏忽而造成的多数错误。而这一步骤往往容易被人忽视。有人总希望把一切推给计算机系统去做,但这样就会多占用机器时间,作为一个程序人员应当养成严谨的科学作风,每一步都要严格把关,不把问题留给后面的程序。 为了更有效地进行人工检查,所编的程序应注意力求做到以下几点: (1)应当采用结构化程序方法编程,以增加可读性;(2)尽可能多加注释,以帮助理解每段程序的作用;(3)在编写复杂的程序时不要将全部语句都写在main函数中,而要多利用函数,用一个函数来实现一个单独的功能。这样既易于阅读也便于调试,各函数之间除用参数传递数据这一渠道以外,数据间尽量少出现耦合关系,便于分别检查和处理。 2、在人工检查无误后,才可以上机调试。通过上机发现错误称动态检查。在编译时给出语法错误的信息,可以根据提示的信息具体找出程序中出错之处并改正之。 应当注意的是有时提示的出错并不是真正出错的行,如果在提示出错的行上找不到错误的话应当到上一行再找。有时提示出错的类型并非绝对准确,由于出错的情况繁多各种错误互有关联,因止要善于分析,找出真正的错误,而不要只从字面意义上找出错信息,钻牛角尖。如果系统提示的出错信息多,应当从上到下一一改正。有时显示出一大片出错信息往往使人感到问题严重,无从下手。其实可能只有一二个错误。例如,对使用的变量未定义,编译时就会对所有含该变量的语句发出出错信息;有的是少了“}”或多了“}”有的是书写语句时忘记写“;”或是全角的“;”了,只要加上一个变量定义,或填加“};”就所有错误都消除了。 3、在改正语法错误后,程序经过连接就得到可执行的目标程序。运行程序,输入程序所需数据,就可得到运行结果。应当对运行结果作分析,看它是否符合要求。 有的初学者看到运行结果就认为没问题了,不作认真分析,这是危险的。 有时,数据比较复杂,难以立即判断结果是否正确。可以事先考虑好一批“试验数据”,输入这些数据可以得出容易判断正确与否的结果。可以在计算的输出结果的程序地方加入一段输出到屏幕窗口的程序,利用屏幕窗口可以方便看到结果的,很直观。例如,if语句有两个分支,有可能在流程经过其中一个分支时结果正确,而经过其它一个分支时结果不对等。必须考虑周全。 事实上,当程序复杂时很难把所有的可能方案全部都试到,选择典型的情况作试验即可。 4、运行结果不对,大多属于逻辑错误。对这类错误往往需要仔细检查和分析才能发现。可以采用以下办法: (1)将程序与流程图仔细对照,如果流程图是正确的话,程序写错了,是很容易发现的。例如,复合语句忘记写花括弧,只要一对照流程图就能很快发现。 (2)如果实在找不到错误,可以采用“分段检查”的方法。在程序不同的位置设几个printf 函数语句,输出有关变量的值,往下检查。直到找到在哪一段中数据不对为止。这时就已经把错误局限在这一段中了。不断减小“查错区”,就可能发现错误所在。 (3)也可以用“条件编译”命令进行程序调试(在程序调试阶段,若干printf函数语句就要进行编译并执行。当调试完毕,这些语句不要再编译了,也不再被执行了)。这种方法可以不必一一去printf函数语句,以提高效率。 5、如果在程序中没有发现问题,就要检查流程图有无错误,即算法有无问题,如有则改正
软件调试技巧 一、软件调试方法 软件调试有很多种方法。常用的有4种,即强行排错法、回溯排错法、归纳排错法和演绎排错法。 1.强行排错法 这种方法需要动脑筋动的地方比较少,因此叫强行排错。通常有以下3种表现形式: ●打印内存变量的值。在执行程序时,通过打印内存变量的数值,将该数值同预期的数值进行比较,判 断程序是否执行出错。对于小程序,这种方法很有效。但程序较大时,由于数据量大,逻辑关系复杂,效果较差。 ●在程序关键分支处设置断点,如弹出提示框。这种方法对于弄清多分支程序的流向很有帮助,可以很 快锁定程序出错发生的大概位置范围。 ●使用编程软件的调试工具。通常编程软件的IDE集成开发环境都有调试功能,使用最多的就是单步调 试功能。它可以一步一步地跟踪程序的执行流程,以便发现错误所在。 2.回溯排错法 这是在小程序中常用的一种有效的调试方法。一旦发现了错误,可以先分析错误现象,确定最先发现该错误的位置。然后,人工沿程序的控制流程,追踪源程序代码,直到找到错误根源或确定错误产生的范围。 3.归纳排错法 归纳法是一种从特殊推断一般的系统化思考方法。归纳法调试的基本思想是,从一些线索(错误的现象)着手,通过分析它们之间的关系来找出错误,为此可能需要列出一系列相关的输入,然后看哪些输入数据的运行结果是正确的,哪些输入数据的运行结果有错误,然后加以分析、归纳,最终得出错误原因。 4.演绎排错法 演绎法是一种从一般原理或前提出发,经过排除和精化的过程来推导出结论的思考方法。调试时,首先根据错误现象,设想及枚举出所有可能出错的原因作为假设。然后再使用相关数据进行测试,从中逐个排除不可能正确的假设。最后,再用测试数据验证余下的假设是否是出错的原因。 二、调试的原则 调试能否成功一方面在于方法,另一方面很大程度上取决于个人的经验。但在调试时,通常应该遵循以下一些原则。 1.确定错误的性质和位置的原则 用头脑去分析思考与错误征兆有关的信息,避开死胡同。调试工具只是一种辅助手段。利用调试工具可以帮助思考,但不能代替思考。通常避免使用试探法,最多只能将它当作最后的手段,毕竟小概率事件有时也会发生。 2.修改错误的原则 在出现错误的地方,很可能还有别的错误。修改错误的一个常见失误是只修改了这个错误的征兆或这个错误的表现,而没有修改错误本身。当新修正一个错误的同时又引入新的错误。 三、有效减少调试时间 1.绘制程序流程图 一些程序员认为,绘制程序流程图是件繁琐的事,而且浪费时间。其实不然,当读者对着偌大的程序一筹莫展时,面对纷纭复杂的关系理不出头绪时,使用程序流程图绝对可以事半功倍。 因此建议在编制程序前先绘制流程图,这样编程的思路有条理,调试时同样会有条不紊。若编制程序之前没有绘制流程图,当排错没有进展时,可以马上编写流程图。你会发现,程序中某些分支或细节被忽略了,这些细节可能就是程序出错的地方。 2.不要过多地依赖单步调试 有些程序对时间很敏感。数据只在那么一瞬间有效,可谓稍纵即逝。所以等到单步执行到那里时,
桌面软件: 桌面软件是一类用于更改桌面视觉效果或管理桌面设置的软甲、以及一些使电脑用起来更加方便的软件 ?桌面管理工具: 可以管理工具、可以管理操作系统桌面图标、文件、网址 ?桌面应用软件 ●浏览器 ●输入法 ●音乐盒 桌面软件测试计划 ?测试计划的测试策略 ●功能测试 检查功能项下面还有的若干项 ●性能测评 保证机器配置相同、操作步骤相同: 如打开100页签、浏览网页是否流畅 在浏览器上下载文件的速度如何 网页显示的速度、观看视频、浏览新闻、网络购物的速度如何 ●稳定性测试 稳定性测试指在一定环境下,长期运行该软件、软件不会失效,不会使计算机造成内存泄露的测试 自动化工具:AutoIt ●冲突测试 冲突测试:主要指桌面软件在安装过程中或者网络请求过程中,与防火墙、各种杀毒软件和上网助手之间是否有冲突测试。 在冲突测试里需要列出桌面软件有哪些网络请求进程、然后安装所有流行杀毒软件和防火墙进行这方面测试 ●兼容性测试 桌面软件的兼容性测试主要指桌面软件与安装在计算机上的各种个人软件、游戏同时运行时是否会兼容
测试计划的人员安排和任务安排?总体任务工期安排 结论: 性能测评、兼容性测试、稳定性测试、冲突测试一般安排在第二轮测试 用例设计占据了大部分的时间 ?人员和任务安排 冲突测试:测试人员要求对硬件和网络有所了解 兼容性测试:测试人员要求对软件应用较全面 错误类型 ?稳定性问题 应用程序造成操作系统重新启动 应用程序造成操作系统蓝屏 应用程序造成电脑死机或者不能关机 应用程序造成无法进入操作系 应用程序造出现崩溃
?性能问题 系统资源消耗严重、操作系统性能下降 网络Socket被完全占用 应用程序在使用过程存在内存泄露 应用程序在使用过程中性能低下 应用程序在使用过程中出现假死现象 应用程序的性能与同类软件有明显的不同 应用程序的性能与以往版本有明显的不同 Socke用于基于TCP/IP协议的应用程序之间的相互通信 客户方和服务器方需要采用Socket通信时、首先需要建立Socket连接 客户方发送的消息可以是文本,也可以是二进制流 反复断开下载导致无法正常连上网、这个缺陷就是网络Socket被完全占用 ?功能错误 处理流程、逻辑出现错误 功能设计不完整、大量设计和需求不符合 被测软件破坏了操作系统原来定义的权限 容错处理不完善 数据丢失 数据紊乱 案例分析:某些软件限制只能在管理员用户下安装、升级、卸载软件。如:MyQQ 在Windows XP的User权限下出发升级、提示升级失败、这个缺陷是破坏了操作系统原来定义的权限、因为不应该提示信息错误、应该非管理员用户不能升级 ?界面错误 应用程序贴图、控制显示不正确 界面出现错字、排列不整齐 对话框过小、提示信息不能完整显示 桌面软件的测试功能 熟悉了Web系统、C/S结构的系统的测试人员会习惯将菜单作为自己的测试功能模块。如:Word、可将文件、编辑、视图、插入、格式等作为它的测试功
数控车床的基本操作与简单程序调试 一、实训目的 < 1 >掌握数控车削加工基本编程指令及其应用 < 2 >熟悉了解数控车床的操作面板和控制软件; < 3 >掌握数控车床的基本操作方法和步骤; < 4 >进一步了解数控车床的结构组成、加工控制原理; < 5 >熟练掌握精车程序的输入调 二、预习要求 认真阅读数控车床组成、位置调整和坐标系设定及基本编程指令与调试的章节内容。 三、实训理论基础 1.基本编程指令功能介绍 1 ). G 功能 ( 格式: G 2 G 后可跟 2 位数 ) 常用 G 功能指令 (1) 、表内 00 组为非模态指令,只在本程序段内有效。其它组为模态指令,一次指定后持续有效,直到被本组其它代码所取代。 (2) 、标有 * 的 G 代码为数控系统通电启动后的默认状态。
2 ). M 功能 ( 格式: M2 M 后可跟 2 位数 ) 车削中常用的 M 功能指令有: M00-- 进给暂停 M01-- 条件暂停 M02-- 程序结束 M03-- 主轴正转 M04-- 主轴反转 M05-- 主轴停转 M98-- 子程序调用 M99-- 子程序返回。 M08-- 开切削液 M09-- 关切削液 M30-- 程序结束并返回到开始处 3 ). T 功能 ( 格式: T2 或 T 4 ) 有的机床 T 后只允许跟 2 位数字,即只表示刀具号,刀具补偿则由其它指令。 有的机床 T 后则允许跟 4 位数字,前 2 位表示刀具号,后 2 位表示刀具补偿号。如: T0211 表示用第二把刀具,其刀具偏置及补偿量等数据在第 11 号地址中。 4 ). S 功能 ( 格式: S4 S 后可跟 4 位数 ) 用于控制带动工件旋转的主轴的转速。实际加工时,还受到机床面板上的主轴速度修调倍率开关的影响。按公式: N=1000Vc / p D 可根据某材料查得切削速度 Vc ,然后即可求得 N. 例如:若要求车直径为 60mm 的外圆时切削速度控制到 48mm/min ,则换算得: N=250 rpm ( 转 / 分钟 ) 则在程序中指令 S250; 5 ).车床的编程方式 ( 1 ).绝对编程方式和增量编程方式。 图 2-1 编程方式示例 绝对编程是指程序段中的坐标点值均是相对于坐标原点来计量的,常用 G90 来指定。增量( 相对 ) 编程是指程序段中的坐标点值均是相对于起点来计量的。常用 G91 来指定。如对图 2-1 所示的直线段 AB 编程 绝对编程: G90 G01 X100.0 Z50.0; 增量编程: G91 G01 X60.0 Z-100.0;
UI设计工作流程 很多没有在正规的大公司工作过的设计师同学问过我面试时如果面试官问项目开发的工作流程是什么?其实,我觉得每个公司可能有自己的工作流程,有些些公司可能需要设计师从前期立项到中间开发到后期产品测试和项目上线的跟进要全程参与而有些公司可能只需要设计师在产品研发阶段进行参与,但不管那种方式,我觉得设计师有必要知道一个产品从立项到完成的所有步骤。现在我大概介绍一种工作流程给大家。 一、产品设计阶段 首先在一个项目开始之前会是立项,领导或者相关部门提出想法给产品经理,产品经理拿到项目之后,会对整个项目进行分析,这中间产品经理需要做很多工作。 1、首先产品经理配合市场部门进行市场分析,来搞清楚目标市场和产品定位,如果时 间充足的话,尽可能的也要做用户调研来确定产品的用户需求的挖掘和分析。 2、竞品分析也是产品经理和设计师都要做的功课。 3、这些前期工作完成之后,剩下的要做原型设计,预算产品周期,疏通整个产品流程,出原型图交给交互设计师 当然产品经理在做这些工作时是要保持时刻跟其他部门的同事密切共同的,例如产品的市场定位需要找市场部门的同事进行沟通,产品设计规范,界面布局等需要找UI设计师来沟通。而开发环境和项目周期可能要找到技术开发的同事来进行协调。有些公司还有专门的交互设计师,需要产品经理在前期制作原型图和交互设计师充分配合完成交互说明,以方便
后期的视觉设计和技术开发。 二、UI视觉设计 产品原型(包括前期交互稿)完成之后需要交付给UI设计师进行视觉设计,这里指的UI设计其实严格来说是属于GUI,因为UI的本意为user interface(用户界面)涵盖了交互设计,用户体验设计和视觉设计。而交互设计和用户体验是在产品开始之时就已经同时展开的,所以这里说的设计通常指的GUI界面视觉设计。 1、在UI设计师开始之前,要充分了解产品定位,通过目标用户的喜好风格分析开确定视觉设计的大概调性。 2、进行竞品分析,找出竞品优劣, 3、搜索素材灵感,多找优秀设计作为自己设计灵感的来源是一个非常有效的方法(参考学习而不是让你去抄袭)。 1)确定配色,布局和设计风格。 2)进行界面设计。 3)完稿后进行可用性测试,修改修改修改直至最重定稿。 在整个视觉设计中,设计师除了把控好整体的视觉设计风格,更要有耐心设计好各个细节,例如icon,字体,元素之间的间距等这些不起眼的地方往往代表了整个app的质量,细节之处做好,会给用户在视觉上带来一种安全可靠的感觉,所以细节非常重要。 这里有必要说一下视觉设计规范。有些公司的视觉规范是在视觉设计开始之前就要订下来的,而有些公司是整个视觉设计完成之后再来制定视觉规范。为什么可以这样呢,视觉规范是为了方便整个设计团队在设计时更容易进行沟通来进行的,而设计工作在进行中可能会随时进行变更视觉风格,所以设计前期来确定设计规范的话,可能会对后期的设计带来一定的限制,所以设计师内部可能会有一个简单的设计文档来进行交流。等设计稿定下来之后,再来制作标准的设计视觉规范,方便后期开发和之后设计工作继续跟进。 整个设计稿确定之后,设计师要出高保真视觉稿,交给技术来进行沟通,同时还需要对
B接口服务程序配置使用说明 1 B接口服务程序简介 B接口服务程序为广东移动省公司集中监控系统(CSC)地区监控中心端(LSC)服务程序。依照《中国移动机房动力环境监控系统技术规范GF006-2001》开发。由于监控之星系统与B接口规范业务配置结构不同。为了能使LSC能接入到CSC,需对监控之星作如下约束: 定义:在监控之星中,类型为“区”或“站”的逻辑对象定义为“局站”,类型为“电源”、“空调”或“环境”的逻辑对象定义为“设备”。 1.配置中设备类型为“区”或“基站”的逻辑对象总数小于1022; 2.配置中每个设备类型为“区”或“基站”的逻辑对象的下属设备类型为 “电源”、“空调”或“环境”的逻辑对象总数小于62; 3.每个逻辑对象下属数据对象数量小于2046; 4.将现系统中“楼层”及以上层次逻辑对象的设备类型属性设置为“区” 或“站”; 5.楼层内“房间”、“门禁”逻辑对象的设备类型属性设置为“环境”; 6.系统中的电源、配电柜、UPS、电池组、逆变器等电力设备逻辑对象的设 备类型属性设置为“电源”; 7.空调等环境调节设备逻辑对象的设备类型属性设置为“空调”; 8.电源、UPS等智能设备下属的模块等逻辑对象的设备类型属性设置为“其 他”; 9.逻辑对象的设备类型属性为“其他”的逻辑对象下一级不允许有逻辑对 象。 10.局站下必需有设备,否则将类型改为“环境”。 11.局站下直接挂接有环境数据的逻辑对象下添加类型为“环境”的逻辑对 象名称为“机房环境”,并将环境数据复制到“机房环境”下。 2 B接口服务程序安装 首先建立B接口服务程序的数据库表,这里用数据库脚本文件生成,B接口服务程序一共有七个数据库脚本文件,如下图1。
实验一Keil软件的使用及简单程序的调试方法 一、实验目的 掌握Keil的使用方法和建立一个完整的单片机汇编语言程序的调试过程及方法。 二、实验器材 计算机1台 三、实验内容 1.Keil的使用方法。 2.建立一个单片机汇编语言程序的调试过程及方法 四、实验步骤 1.Keil的使用方法。Keil C51 软件是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编,PLM 语言和C 语言的程序设计,界面友好,易学易用。启动Keil 后的界面如下:
几秒钟后即进入Keil的编辑界面。用户便可建立项目及应用程序。 2.简单程序的调试方法 Keil是通过项目工程来管理汇编程序的。因此在调试程序前必须建立一个工程,工程名称及保存位置由用户来指定,注意每位同学的工程名称用“学号姓名实验*”来命名。 (1)建立一工程 单击Project菜单,在弹出的下拉菜单中选中New Project选项。并在弹出的对话框中确定保存的位置及工程名称。 又弹出一对话框,要求用户选择相应的硬件CPU及相关设置。选择Atmel公司的AT89C51单片机。如下图所示
单击“确定”后在弹出的对话框中行选择“否”即工程建好了,但该工程没有任何语句,需要再建一个程序文件并将其添加到此工程中。 (2)建一文件 单击“File”/“New”命令,则弹出文件的编辑窗口,此时该文件还没有指明其文件名称及保存位置,该文件还没有加载到所建立的工程中。单击“File”/“Save”命令在弹出的对话框中指明文件的类型为.ASM汇编型及文件名后单击“保存”即可进行汇编源文件的编辑。如下图所示。 (3)将文件添加到工程中 单击“T arget 1”前的“+”号则展开后变成“-”号,并右键单击“Source Group 1”在弹出的下拉菜单中执行“Add Files to Group ‘Source Group 1’”命令并弹出对话框在该对话框中的“文件类型”下拉列表中选择“Asm source file”后找到要添加的文件名并选中,单击“Add”即可。
山西大学计算机与信息技术学院 实验报告 姓名学号专业班级计算机科学与技术 课程名称 Java实验实验日期2014/5/29 成绩指导教师陈千批改日期 实验名称实验8 图形界面程序设计 一、实验目的 掌握常用GUI控制组件及其事件处理。 二、实验内容 1.编程包含一个标签和一个按钮,单击按钮时,标签的内容在“你好”和“再见”之间切换。 程序代码: import java.awt.Color; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class ChangeGUI extends JFrame { /** * */ private static final long serialVersionUID = 1L; private JButton button; private JLabel label; public ChangeGUI() { super("Say Hello"); JPanel panel = new JPanel(); JPanel panel2 = new JPanel(); setLayout(new GridLayout(2, 1, 0, 5)); button = new JButton("OK"); button.setBackground(Color.ORANGE); button.setForeground(Color.RED); panel.add(button); button.addActionListener(new OKActionListener()); label = new JLabel("你好");
服务器启动的6种方式 Oracle 9i的数据库服务器有6种启动的方式,如表3.3所示。表3.3 服务器启动的6种方式 方式特点 正常启动启动装载和打开数据库,用户可以进行正常访问 不装载启动在未装载数据库的情况下启动服务器,由于未打开数据库,所以不允许用户访问 装载启动启动服务器并装载数据库,但不打开数据库。不允许用户访问 强制启 动 强制启动未能正常关闭或正常启动的服务器 限制会话启动只有具备“限制会话”(Restricted Session)系统权限的用户才能连接到数据库 只读启动只读方式只允许用户查询打开的数据库,因此不可能进行联机数据库修改 正常启动 (1)如图3.40所示。 (2)出现如图3.41所示的【启动选项】界面。单击“确定”按钮。 (3)服务器启动完毕,出现如图3.42所示的界面。 (4)正常启动例程后,例程状态绿灯亮,表明数据库已经正常打开可以进行连接访问,如图3.43所示。
不装载启动 (1)如图3.44所示为【启动选项】界面。单击"确定"按钮。(2)出现如图3.45所示界面,单击"关闭"按钮。 (3)如图3.46所示。
(3)如图3.46所示。 (1)如图3.47所示为【启动选项】界面。 (2)出现如图3.48所示界面。 (3)例程状态黄灯亮,【启动】单选钮被选中,如图3.49所示。
强制启动 (1)以“SYSDBA”身份登录【SQL Plus】。 (2)在【SQL Plus】中执行“startup force;”语句,出现如图3.50所示界面,说明例程已经被启动,数据库被装载和打开。 限制启动 (1)如图3.51所示为【启动选项】界面。
PLC程序的调试方法及步骤 PLC程序的调试可以分为模拟调试和现场调试两个调试过程,在此之前首先对PLC外部接线作仔细检查,这一个环节很重要。外部接线一定要准确无误。也可以用事先编写好的试验程序对外部接线做扫描通电检查来查找接线故障。不过,为了安全考虑,最好将主电路断开。当确认接线无误后再连接主电路,将模拟调试好的程序送入用户存储器进行调试,直到各部分的功能都正常,并能协调一致地完成整体的控制功能为止。 1.程序的模拟调试 将设计好的程序写入PLC后,首先逐条仔细检查,并改正写入时出现的错误。用户程序一般先在实验室模拟调试,实际的输入信号可以用钮子开关和按钮来模拟,各输出量的通/断状态用PLC上有关的发光二极管来显示,一般不用接PLC实际的负载(如接触器、电磁阀等)。可以根据功能表图,在适当的时候用开关或按钮来模拟实际的反馈信号,如限位开关触点的接通和断开。对于顺序控制程序,调试程序的主要任务是检查程序的运行是否符合功能表图的规定,即在某一转换条件实现时,是否发生步的活动状态的正确变化,即该转换所有的前级步是否变为不活动步,所有的后续步是否变为活动步,以及各步被驱动的负载是否发生相应的变化。 在调试时应充分考虑各种可能的情况,对系统各种不同的工作方式、有选择序列的功能表图中的每一条支路、各种可能的进展路线,都应逐一检查,不能遗漏。发现问题后应及时修改梯形图和PLC中的程序,直到在各种可能的情况下输入量与输出量之间的关系完全符合要求。 如果程序中某些定时器或计数器的设定值过大,为了缩短调试时间,可以在调试时将它们减小,模拟测试结束后再写入它们的实际设定值。 在设计和模拟调试程序的同时,可以设计、制作控制台或控制柜,PLC之外的其他硬件的安装、接线工作也可以同时进行。 2.程序的现场调试 完成上述的工作后,将PLC安装在控制现场进行联机总调试,在调试过程中将暴露出系统中可能存在的传感器、执行器和硬接线等方面的问题,以及PLC的外部接线图和梯形图程序设计中的问题,应对出现的问题及时加以解决。如果调试达不到指标要求,则对相应硬件和软件部分作适当调整,通常只
用delphi7编写windows服务程序总结 一、服务程序的创建 delphi编写服务程序非常简单,点击菜单File->New->Other->New属性页->Service Application,系统自动会创建基本的代码。这里需要说明的是,在“New属性页”中还有一个Service,这个Service和Service Application还是有区别的,应该说Service Application的范围大,它可以包含几个Service。 一个Service Application可以创建几个Service,service继承自TService,界面表现和TDataModel类似,做过数据库的朋友肯定都不陌生,区别是TDataModel是用来放数据库连接及操作组件的容器,而TService则是可以存放很多没有界面的组件,如indy的IDtcpclient等。 二、重要属性及事件说明 属性:DisplayName 显示名称 Name 名称,当你用命令提示符来启动、停止服务时,就需要用到 Interactive 与界面交互的选项 事件:OnCreate:类似于Tform的OnCreate OnDestroy:类似于Tform的OnDestroy OnExecute:非常重要,一般写成下面 while not Terminated do begin Sleep(10); ServiceThread.ProcessRequests(False); end; OnPause:服务暂停 OnShutdown:不太清楚 OnStart:服务启动,重要
OnStop:服务停止,重要 三、服务的依赖关系 因为我的服务是要连接数据库的,所以必须要等sql server的服务起来之后,我才能起来,这样才能连接数据库,因此这里面有个依赖关系的问题。可以在属性Dependencies 中增加一项,选择MSSQLSERVER。 四、服务与界面的通讯 服务也是可以创建form的,只是只是这个窗口,在服务启动时显示,服务停止后就关闭了。而我想做一个就象sql server 2000的服务管理器哪样的界面,不论服务启动是否,都可以显示,而且也可以在界面上直接控制服务。所以我就又建了一个应用,而这个应用和原来服务的通讯用自定义消息来传递。比如,有人通过控制面板停止服务了,服务必须通知界面上的状态。 Delphi获取Windows系统服务的状态 function ServiceGetStatus(sMachine, sService: string ): DWord; var schm, schs: SC_Handle; ss: TServiceStatus; dwStat : DWord; begin dwStat := 0; schm := OpenSCManager(PChar(sMachine), Nil, SC_MANAGER_CONNECT); if (schm > 0) then begin schs := OpenService(schm, PChar(sService), SERVICE_QUERY_STA TUS); if(schs > 0) then
一,如果遇到了一些逻辑性很强的问题比如有循环什么的我的方法是在关键地方加入debug.print 变量 这样可以比较好地找到问题 二,msgbox 三,监视窗口,如下面的例子 For i=1 to 10000 A=sqr(i) next i 你想再监视当i=799时A的值,就可以添加监视,方法:点调试,添加监视,选择“当监视值为真时中断”,上面表达式框中写上i=799, 这样你按F5,运行程序,程序会在i=799时中断。其他选项你可以自己去琢磨一下。 一个程序如何顺利的“脱产”,调试的过程是非常重要的。学过、钻研过程序设计的人都有同样的感受,很多情况下,调试程序的过程会比程序编写的过程更为困难。任何一个天才都不敢说,他编的程序是100%正确的。几乎每一个稍微复杂一点的程序都必须经过反复的调试、修改,最终才完成。所以说,程序的调试是编程中的一项重要技术。 程序中的典型错误类型 A类:语法错误。 B类:编译错误。 C类:属性设置错误。 D类:逻辑错误。 调试方法 方法一:利用“MSDN帮助菜单” “MSDN帮助菜单”是一个很好的自学工具,对于出现调试对话框的菜单来说,可以按下“帮助”按钮查看错误原因。 对于一些不是很清楚的函数格式、保留字的作用,也可以借助“帮助菜单”。 方法二:逐过程检查 主要检查代码是否写对,位置有没有错误,关键是要确定一段代码是在哪个事件控制下的。不妨先在脑海中把整个程序过一边,想一想究竟会有哪些事件发生(有些事件是人机互动的,例如:鼠标点击;而有些是机器自己执行的,这时要想到计时器的作用);然后想一想每一件事发生后有什么效果。我们代码所编写的一般就是事件发生后的这个效果,那么以此事件来决定代码所写的位置。 方法三:逐语句检查(顺序、语义) 主要检查每一句代码的顺序是否写对,语义是否正确。 把整个代码从头至尾地读一边,仔细思索每一段子过程什么时候执行,以及每一子过程中的每一句代码什么时候发生,必要时可以在程序段中插入Print语句分段查看;也可用注释语
Windows 服务应用程序介绍 Microsoft Windows 服务(即,以前的 NT 服务)使您能够创建在它们自己的Windows 会话中可长时间运行的可执行应用程序。这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面。这使服务非常适合在服务器上使用,或任何时候,为了不影响在同一台计算机上工作的其他用户,需要长时间运行功能时使用。还可以在不同于登录用户的特定用户帐户或默认计算机帐户的安全上下文中运行服务。有关服务和 Windows 会话的更多信息,请参见MSDN Online 的 Platform SDK 文档中的“About Services”部分。 注意Windows 服务应用程序项目模板和相关的功能在 Visual Basic 和 Visual C# .NET 的标准版中不可用。有关更多信息,请参见Visual Basic 标准版功能或Visual C# 标准版的功能。 通过创建作为服务安装的应用程序,可以轻松地创建服务。例如,假设要监视性能计数器数据并对阈值做出反应。可以编写一个侦听性能计数器数据的 Windows 服务应用程序、部署该应用程序并开始收集和分析数据。 将服务创建为 Microsoft Visual Studio .NET 项目,并在其中定义特定代码,以控制可以发送到服务的命令和接收到这些命令时采取的操作。可以发送到服务的命令包括开始、暂停、继续和停止该服务,以及执行自定义命令。 创建并生成了应用程序后,可以通过运行命令行实用工具InstallUtil.exe 并将路径传递给服务的可执行文件,或通过使用 Visual Studio 的部署功能来安装该应用程序。然后可以使用服务控制管理器启动、停止、暂停、继续和配置服务。这些任务中有许多也可以在“服务器资源管理器”的“服务”节点中或通过使用ServiceController类来实现。 服务应用程序与其他 Visual Studio .NET 应用程序对比 服务应用程序与其他许多项目类型的功能在几个方面有所不同: ?必须将服务应用程序项目创建的已编译可执行文件安装在服务器上,此项目才能以有意义的方式运行。不能通过按 F5 键或 F11 键来调试或运行服务应 用程序;不能立即运行服务或进入并单步执行其代码。相反,必须安装和启动服务,然后将一个调试器附加到服务的进程中。有关更多信息,请参见调试 Windows 服务应用程序。 ?与一些类型的项目不同,对于服务应用程序,必须为其创建安装组件。安装组件在服务器上安装和注册服务,并用 Windows 服务控制管理器为服务创 建一个项。有关更多信息,请参见将安装程序添加到服务应用程序。
难怪很多前辈说调试是一个程序员最基本的技能,其重要性甚至超过学习一门语言。不会调试的程序员就意味着他即使会一门语言,却不能编制出任何好的软件。 我以前接触的程序大多是有比较成形的思路和方法,调试起来出的问题都比较小,最近这个是我自己慢慢摸索调试,接触了很多新的调试方法,并查了很多前辈的总结,受益匪浅,总结以前的和新的收获如下: VC 调试篇 设置 为了调试一个程序,首先必须使程序中包含调试信息。一般情况下,一个从AppWizard 创建的工程中包含的Debug Configuration 自动包含调试信息,但是是不是Debug 版本并不是程序包含调试信息的决定因素,程序设计者可以在任意的Configuration 中增加调试信息,包括Release 版本。 为了增加调试信息,可以按照下述步骤进行: ? 打开Project settings 对话框(可以通过快捷键ALT+F7打开,也可以通过IDE 菜单Project/Settings 打开 ?选择C/C++页,Category 中选择general ,则出现一个Debug Info 下拉列表框,可供选择的调试信息方式包括: 命令行 Project settings 说明 无 None 没有调试信息 /Zd Line Numbers Only 目标文件或者可执行文件中只包含全局和导出符号以及代码行信息,不包含符号调试信息
/Z7 C 7.0- Compatible 目标文件或者可执行文件中包含行号和所有符号调试信息,包括变量名及类型,函数及原型等 /Zi Program Database 创建一个程序库(PDB,包括类型信息和符号调试信息。 /ZI Program Database for Edit and Continue 除了前面/Zi 的功能外,这个选项允许对代码进行调试过程中的修改和继续执行。这个选项同时使 #pragma 设置的优化功能无效 ? 选择Link 页,选中复选框"Generate Debug Info",这个选项将使连接器把调试信息写进可执行文件和DLL ?如果C/C++页中设置了Program Database 以上的选项,则Link incrementally 可以选择。选中这个选项,将使程序可以在上一次编译的基础上被编译(即增量编译,而不必每次都从头开始编译。调试方法: 1、使用 Assert(原则:尽量简单assert只在debug下生效,release下不会被编译。 2、防御性的编程 3、使用Trace 4、用GetLastError来检测返回值,通过得到错误代码来分析错误原因 5、把错误信息记录到文件中 位置断点(Location Breakpoint 大家最常用的断点是普通的位置断点,在源程序的某一行按F9就设置了一个位置断点。但对于很多问题,这种朴素的断点作用有限。譬如下面这段代码:
搭建Java桌面应用程序原型(一) 作者:odt团队文章来源:csdn 点击数:1131 更新时间:2006-9-24 原文地址:https://www.wendangku.net/doc/6c2784379.html,/Article/kfyy/java/jc/200609/4439.html 在这篇文章里,我将描述一个Java桌面应用的原型,我把它叫做JImageing。我打算把焦点集中在应用的框架上,解释我怎么做技术上的决定和我怎么解决在开发过程中出现的问题。 为什么要建造一个原型? 很多应用程序的开发都是由于几个原因从一个原型开始的。这些原因中的第一条就是,你必须确定用现有的技术能够满足用户的需求。例如,在不用本地代码的Swing应用程序中Windows集成不能够被实现,这就导致丧失了一些Ja va跨平台的优势。SWT提供了一个和操作系统有限制的集成,这就允许你在很多本地平台上运行同一应用程序。在很多场合,J2SE平台提供给你需要搭建复杂桌面应用程序的丰富性能。在搭建大型Java桌面工程之前,你总是应该搭建一个原型去看J2SE是否满足应用程序的需求。 另一方面证明你的想法能够被实现并且你的技术决定是正确的,一个原型能够在开发过程中尽早的获得用户的反馈。原型也能帮助你估计完成你的工程所需要的时间和资源。花大量的工作去搭建一个有着菜单,对话框,拖拽特性、剪切版支持、恢复管理、打印等功能的用户接口。在开始这些工作之前,你应该知道搭建应用程序核心功能有多困难。如果你不得不用第三方自定义组件,你应该测试他们看看是否能和你的原型一起工作。如果你不得不解决扩展和性能问题,你应该通过原型状态找到解决方案。 用户需求 JImageing原型是一个桌面应用程序,这个应用程序允许你给图片注释。Email可能是最流行的“协作工具”,但是可以通过图片工具提高在截图上做注释的能力,这种图片工具可以让你画线,画矩形、椭圆并且可以写注释信息在图片上。 如果JImageing的用户使用一个以上的操作系统,那么对于这样的一个应用程序Java是很自然的选择。当Window s支配桌面市场的时候,有一些用户选择Mac或者Linux。例如,当Java开发者通过互联网对一个项目进行合作的时候,有一可能性是他们可以不用同一种操作系统。 这个用户接口非常简单,它包括一个工具栏和一个画图区。对于测试应用程序的主要功能来说足够用了。下图显示了这个接口的样子:
UD启动盘:UD启动界面编辑MsgDiyer 及FbinstTool使用教程 第一部分:UD启动界面的编辑 1.所需软件: 1)MsgDiyer.exe(链接:https://www.wendangku.net/doc/6c2784379.html,/soft/48756.htm 或自己在网上搜索下载); 2)FBA文件里的message文件(可通过FbinstTool导出)。2. MsgDiyer软件界面如下: 3.编辑message文件: 很简单勾选“修改message”弹出文件选择框,选择你要编辑的
message文件,然后在“基本参数”和“颜色编码”两个窗口里面编辑你的启动界面的各种参数。 点击“修改预览菜单”,将你的FBA文件里的Grldr菜单复制到里面,在点击“模拟预览”就能看到你的启动界面了。 编辑好后点击“开始制作”即可生成新的message文件。这样,自己的启动画面就制作完成了。 下面就可以开始制作UD启动盘了。 第二部分:写入到U盘,以便从U盘启动 FbinstTool下载: https://www.wendangku.net/doc/6c2784379.html,/viewthread.php?tid=189221 1.所需文件: 1)FbinstTool.exe ;
2)FBA文件(*.fba)。 2.FbinstTool界面: 3.操作步骤: 1)选择U盘:
2)依次选择:启动设置 - - - 格式化:
3)在之后弹出的格式化选项界面上勾选:强行格式、UD扩展分区、闪存块对齐,同时勾选“存档文件”,选择你准备好的FBA文件。然后点“确定”,在之后弹出的提示也一直选择“确定”。 如下图所示: 说明:这里注意一下,UD扩展分区的大小要比你准备的FBA文件大,否则将出现:格式化失败“磁盘容量不足”的提示。 根据我个人的经验,其中UD扩展分区可以不要勾选,这样的话其大小由FBA文件定义了,就不会出现容量不足的提示。这里勾选是为了便于以后编辑在U盘上的UD启动文件。 4)第3步选好后直接单击“格式化”按钮,之后有提示都选“确定”
NetBeans 6的新功能第2部分:Java桌面应用程序 NetBeans 6.0 为Java 提供的新功能和扩展功能 NetBeans 6.0 提供了众多新功能和扩展功能,众所周知的GUI 设计器(Matisse 项目)也从5.5 版本开始得到了极大的增强。此外,由于整合了Profiler,5.5 版也变 有关这些新功能和扩展功能的详细信息,请参阅 https://www.wendangku.net/doc/6c2784379.html,/features/index_ja.html 现在,尝试利用Swing 应用程序框架,开发一个简单的获取图像的应用程序。实现 在Flickr(https://www.wendangku.net/doc/6c2784379.html,)进行关键字搜索,获取并且显示单幅图像的功能。(要运行此Demo,需要获取Flickr API 的API KEY,并能连接到互联网。) ■Swing 应用程序框架(JSR-296) Swing 应用程序框架可用于创建Swing 应用程序。框架给人的印象总是非常繁琐且难以使用,但Swing 应用程序框架却是一个小巧、没有特定设置文件且简单易用的框架。https://https://www.wendangku.net/doc/6c2784379.html,/ 正在进行该框架的进一步开发工作。 Swing 应用程序框架https://https://www.wendangku.net/doc/6c2784379.html,/
JSR-296 https://www.wendangku.net/doc/6c2784379.html,/en/jsr/detail?id=296 下面简要介绍该框架的基本情况。首先来看看该框架的整体结构,这对后续使用NetBeans 的GUI 设计器会有一定帮助。 图 1 Swing 应用程序框架的整体结构 Swing 应用程序框架主要由以下5 部分构成,并能提供较为复杂的生命周期管理和Session 管理等。此外,可以简单地重用添加了@Action 注释的Action。不需要使用 ■创建Java 桌面应用程序项目
《面向对象程序设计》课程界面设计练习题目 Windows NT系统内建了若干个的常用控件,极大地方便了Windows下可视化程序的开发。对于初学者来说,能够熟练地使用这些控件,是学好C++面向对象编程的关键步骤。 为了指引初学者或者检验学习效果,下面设计了五个练习题目,囊括了大部分的常用控件,以及程序界面开发中常常使用的技术。练习题目如下: 一、播放器配置程序 二、消息提示器 三、流媒体管理器 四、可定制背景的视图 五、通讯簿
一、播放器配置程序 内容: 制作一个基于对话框的播放器配置程序,能够从配置文件(*.ini )中读取设置信息;能够将修改后的设置信息保存在配置文件中。界面如图1所示: 图1 播放器设置界面 目的: 掌握使用VS 建立基于对话框的应用程序;熟悉标签(Static Text )、分组(Group Box )、按钮(Button )、编辑框(Edit Control )、组合框(Combo Box )、单选按钮(Radio Button )、复选框(Check Box )、热键设置控件(Hot Key )等常用控件的属性、事件;掌握配置文件(*.ini )的读写;学习MSDN 文档的查阅等。 要求: 1、 控件1(组合框):不可输入文字,只能从下拉列表中选取一项,列表中的 内容为:简体中文、繁軆中文、English ; 2、 控件2(复选框):默认勾选。 3、 控件3(热键设置控件):当控件2勾选时,控件才3可编辑;当控件2未1 2 3 4 5 6 7 8 9 12 13 14 15 16 10 11
勾选时,控件3灰掉(不可编辑); 4、控件4~7(复选框):默认勾选控件4和控件5; 5、控件8(编辑框):只能输入数字,范围1~60; 6、控件9~11(一组单选按钮):默认选中控件9; 7、控件12(按钮):当点击按钮时,在13中输出如图1所示的文字; 8、控件13(编辑框):能够输入换行符,具有垂直滚动条,当文本框内容不能 全部显示时,滚动条自动有效; 9、控件14~16(按钮):按钮15初始不可用,当更改设置信息后才激活;接收 回车提交命令;点击该按钮,将新的设置信息(控件12和13不触发配置信息改变)写回与程序同目录下,名称为config.ini配置文件中; 点击按钮14时,如果设置信息有更改,将设置信息写入配置文件,并关闭对话框;若设置信息未发生改变,直接关闭对话框; 点击16直接关闭对话框; 10、配置文件读写要求:程序启动时若没有找到配置文件,能够按照默认设置 初始化界面(按钮15激活),点击按钮14和15生成配置文件并写入设置信息,点击16则不生成配置文件;若找到配置文件,从文件中加载配置信息并初始化程序界面; 11、对话框样式:对话框可以最小化,不能最大化,不可以改变大小;界面布 局要工整;对话框初始时控件1取得焦点,按tab键焦点将按图中标注的序号逐一移动到下个控件上。 提示: 1、复选框勾选状态的获取:可以将复选框与一个BOOL变量关联,通过BOOL 变量得知其勾选与否;也可以获取其控件状态(state)来得到是否被勾选; 可以响应复选框的单击事件来处理复选框状态改变时的任务; 2、单选按钮组的概念:点选按钮有组的概念,同一组内的单选按钮相互排斥, 只能有一个被点选;一个单选按钮A若具有GROUP=true属性,则紧跟其后的GROUP=false属性的单选按钮同A为一组,可以为A关联一个int型变量,改变量反应了该组内那个按钮被点选; 3、配置文件的读写:配置文件(*.ini)为文本文件,常用于保存配置信息;系统具 有GetPrivateProfileString、WritePrivateProfileString等函数用于操作配置文件,具体可参见MSDN中相关介绍; 4、使用Tab键移动焦点:需要控件具有Tabstop属性;焦点移动的顺序与界面 控件的排放顺序有关,可以在界面编辑界面按Ctrl+D显示控件的序号,在序号上点击可以修改控件的顺序。