编程处理

关键词:

编程处理(精选十篇)

编程处理 篇1

ARM处理器异常中断处理概述

当异常中断发生时, 系统执行完当前指令后, 将跳转到相应的异常中断处理程序处执行。当异常中断处理程序执行完成后, 程序返回到发生中断的指令的下一条指令处执行。在进入异常中断处理程序时, 要保存被中断的程序的执行现场。从异常中断处理程序退出时, 要恢复被中断的程序的执行现场。ARM体系中通常在存储地址的低端固化了一个32字节的硬件中断向量表, 用来指定各异常中断及其处理程序的对应关系。当一个异常出现以后, ARM微处理器会执行以下几步操作:

1) 保存处理器当前状态、中断屏蔽位以及各条件标志位;

2) 设置当前程序状态寄存器CPSR中相应的位;

3) 将寄存器lr_mode设置成返回地址;

4) 将程序计数器 (PC) 值设置成该异常中断的中断向量地址, 从而跳转到相应的异常中断处理程序处执行。

在接收到中断请求以后, ARM处理器内核会自动执行以上四步, 程序计数器PC总是跳转到相应的固定地址。从异常中断处理程序中返回包括下面两个基本操作:

1) 恢复被屏蔽的程序的处理器状态;

2) 返回到发生异常中断的指令的下一条指令处继续执行。

当异常中断发生时, 程序计数器PC所指的位置对于各种不同的异常中断是不同的, 同样, 返回地址对于各种不同的异常中断也是不同的。例外的是, 复位异常中断处理程序不需要返回, 因为整个应用系统是从复位异常中断处理程序开始执行的。

支持中断跳转的解析程序

解析程序的概念和作用

如前所述, ARM处理器响应中断的时候, 总是从固定的地址开始的, 而在高级语言环境下开发中断服务程序时, 无法控制固定地址开始的跳转流程。为了使得上层应用程序与硬件中断跳转联系起来, 需要编写一段中间的服务程序来进行连接。这样的服务程序常被称作中断解析程序。

每个异常中断对应一个4字节的空间, 正好放置一条跳转指令或者向PC寄存器赋值的数据访问指令。理论上可以通过这两种指令直接使得程序跳转到对应的中断处理程序中去。但实际上由于函数地址值为未知和其它一些问题, 并不这么做。这里给出一种常用的中断跳转流程:

这个流程中的关键部分是中断向量表, 为了让解析程序能找到向量表, 应该将向量表的地址固定化 (编程者自定义) 。这样, 整个跳转流程的所有程序地址都是固定的, 当中断触发后, 就可以自动运行。其中, 只有向量表的内容是可变的, 编程者只要在向量表中填入正确的目标地址值就可以了。这使得上层中断处理程序和底层硬件跳转有机地联系起来。

解析过程示例

以一次IRQ跳转为例, 假定中断向量表定义在0x00400000开始的外部RAM空间:

一般作为boot代码的一部分放在系统的底层模块中。填写向量表的操作可以在上层应用程序中方便地实现, 比如在C语言中:* (in* (0x00400018) ) = (int) ISR_IRQ;这样就将IRQ中断的服务程序入口地址 (0x00300260) 填写到中断向量表中的固定地址0x00400018开始的4字节空间了。

如此一来, 就可避免在应用程序中计算中断的跳转地址, 并且可以很方便的选择不同的函数作为指定中断的服务程序。当然, 在程序开发时要合理开辟好向量表, 避免对向量表地址空间不必要的写操作。

解析程序的扩展

众所周知, 在ARM处理器中会包含很多中断源, 通常会在ARM内核外面扩展一个中断控制器来管理各种原因产生的中断。比如, 三星公司的S3C4510B处理器中的IRQ/FIQ类型的中断源可以有21个, S3C44B0X有26个。这时候中断处理的原理还是一样的, 无非是向量表更长, 并且当一个中断触发以后, 需要在解析程序里查询中断控制器的状态来确定具体的中断源, 再根据中断源来读取向量表中的对应地址内容。

向量中断的处理

一些处理器在设计外扩的中断控制器时提供了一种叫做“向量中断”的中断跳转机制。这与前文叙述的扩展解析跳转流程有所不同, 它不需要软件来识别具体的中断源, 也就是不需要添加IRQ/FIQ服务程序, 而完全由硬件自动跳转到对应的中断地址。其它跳转流程的原理都是一样的。这相当于扩展了ARM内核的硬件中断向量表, 减小了中断响应延时。以S3C44B0X处理器的外部中断0为例, 需要在其对应的硬件固定跳转地址0x00000020处添加指令:ldr pc, =HandlerEINT, 使得程序跳转到其服务程序Handler EINT0处执行。

结语

数控车床编程加工工艺处理 篇2

数控车床集电信号,机械操控,液压控制,微电子技术的综合载体,其工作原理是该控制系统能够逻辑地处理具有控制编码或其他符号指令规定的程序,并将其译码,用代码化的数字表示,数控车床有一个专门的操作平台,供程序员进行编程处理,要按照编码把要加工的工件详细信息输入进数控机床里,通过微电子芯片进行运算,指定机床的加工方案,一台数控车床,要想应用首先是设定程序加工程序,拿过来一个零件样本,通过人工分析,确定加工的方式方法,选择道具与夹具,然后确定刀的走向以及路线,深浅等等,编程人员要对零件样本进行检查,确定几何形状,尺寸及工艺要求进行分析,并且结合数控机床使用的基础知识,如数控机床的规格、性能、数控系统的功能等,确定加工方法和加工路线。只有这样才能做出符合规格,精密度高的零件。

2.2 数控车床加工工艺处理和数控车床编程

数控车床编程首先分为四步,第一步是:明确加工工艺的过程。要通过专业的数控车床编程人员对示例工件进行该有的分析,确定工件是由什么几何图形组成,是由什么材料制成,选择什么刀具,选择什么样的夹具,从哪下刀,刀的走线,线的深浅等等都要通过一个优秀的数控车床的编程人员来事先设定好的,所以一个工件是否能制造成功,编程人员的经验是非常重要的。第二步是:精确的测量值计算,在经过了第一个步骤以后,编程人员要运用测量工具,测量刀的走位,以及刀是以什么中心运动的,只有这样才能获取到刀位的测量数据。一般的数控系统里会提供一些常规的集合图形的数据,如圆形,直线型等等,但是注意在加工,如果刀工轨迹有误的话,工件指定不合乎规格,如果这种不合乎规格的工件,流入市场会给人民生命财产安全造成隐患,所以一定要有检测员检测,否则难以完成。第三步,编制加工程序和校验方法,经过以上两个步骤以后,便可以写程序来加工工件了,编写程序编制人员使用数控系统程序指令,按照数控车床厂家规定的程序格式输入,程序录入人员,必须对该机床的功能了如指掌,对代码程序也要非常熟悉,才能完成工件制作程序的设定工作。第四步骤 序检验及试切削,在系统中输入以编写好的程序,在正式发表之前检验。通常可采用机床空运转的方式来检查。

3结论

社会进步发展,工业水平也不断发展,所以数控车床的应用于众多的工厂,在生产中,现在很多工作都讲究自动化,从工厂到银行,从学校到研究院各个都讲究办公自动化,那么什么是自动化,就是一切尽量通过电脑,机械来完成生产,安装等一系列的工作,自动化的特点就是工件精度高准、确性高,节省人力,工作效率高,自动化系统有着非常深远的意义。自动化系统不仅能够提升传统制造水平,而且能够满足高技术发展要求。由于数控机床的参与,大大节省了人力,使产品得到了质的飞跃,工业水平是衡量一个国家的标准,在工业发达的国家,包括美国,英国,德国等,其应用是非常广泛的,我国还处在发展中阶段,所以工业水平有待提高。

参考文献

[1]李艳霞.数控机床及应用技术.人民邮电出版社,1992-.

[2]严建红.数控机床原理及应用.2版,机械工业出版社,-.

编程处理 篇3

摘 要:数字信号处理的概念抽象,基本理论和方法不容易掌握。MATLAB是一款强大的计算机计算软件,能将数字信号处理的抽象理论以直观的形式展示出来。该文根据 FIR数字滤波器设计的基本原理,详细说明了基于MATLAB 的FIR数字滤波器的窗函数设计法。并对所设计的滤波器进行滤波仿真验证能否达到设计要求。

关键词:MATLAB;数字信号处理;窗函数;FIR数字滤波器

当今人类正进入信息时代,而数字化是信息时代发展的方向。因此,数字信号处理是21世纪对科学和工程发展具有深远意义的一门技术,他的应用领域非常宽广,如通信、语音、图像、自动控制、石油工程等。MATLAB在信号处理方面有着明显的优势,它使用方便、编程简单、绘图简便,已经成为数字信号处理应用中分析和仿真设计的主要工具。

一、基于MATLAB的数字信号处理

应用MATLAB可对数字信号处理的理论和算法进行设计仿真,同时可对音频数字信号进行读取,播放,滤波等操作。滤波器的设计是数字信号处理中很重要的内容,下面以窗函数法设计有限冲激响应(FIR)数字滤波器为例,说明MATLAB在数字信号处理中的应用。

二、FIR滤波器的设计

1.窗函数设计FIR数字滤波器的基本原理

窗函数法是设计FIR数字滤波器的最简单的方法。用窗函数法设计FIR数字滤波器的基本原理就是根据给定的滤波器的技术指标,选择滤波器的窗长N和窗函数w(n),使其具有最窄的主瓣和最小的方瓣。其核心是由给定的频率特性通过加窗确定有限长单位脉冲响应h(n)。考虑到数字滤波器的频率响应是以2π为周期的周期函数,若指标所要求的频响为Hd(ejω),则与它相应的序列hd(n),根据DTFT变换对的关系有:

2.几种典型窗函数以及选窗原则

目前几种主要窗函数为:矩形窗、三角形窗、汉宁窗、汉明窗、布拉克曼窗。窗函数的选择原则是:(1)具有较低的旁瓣幅度, 尤其是第一旁瓣的幅度;(2)旁瓣的幅度下降的速率要快, 有利于增加阻带衰减;(3)主瓣的宽度要窄, 这样可以得到较窄的速度带。

三、实例

试用布拉克曼窗设计FIR数字滤波器对给定的音频信号(“西海情歌”)进行滤波。根据音频选择合适的指标,其中要求阶数N=33,截止频率wc=π/4。并显示滤波后的音频图。

运行结果:

通过观察可以发现:理想低通滤波器经布拉克曼窗截后,在通带内相对来说比较平滑,没有肩峰值,但其过渡带比较宽。阻带最小衰减为-74db,布拉克曼窗的滤波效果比较好,达到了想要的滤波效果。

四、结语

采用窗函数法设计FIR数字滤波器具有设计简单,方便,实用等优点,因而受到广泛运用。 在设计数字滤波器时, 善于应用MATLAB进行辅助设计, 能够大大提高设计效率。从例子我们可以看出,MATLAB提供强大的运算功能,而且能够以丰富的图形系统形象地展示出来。MATLAB的数字信号处理工具箱与工程实际相结合,将大大提高研究进度并开创更广阔的研究空间。

参考文献:

[1]彭红平杨福宝.基于 Matlab 的 FIR 数字滤波器设计.武汉理工大学学报2005,27(5):275- 278.

[2]奥本海姆 A V,谢弗 R W.离散时间信号处理[M].刘树棠,译.西安:西安交通大学出版社,2001.

[3]程佩青 数字信号处理教程(第三版) 清华大学出版社2007.

[4]李正周MATLAB数字信号处理与应用 北京:清华大学出版社 2008.

位图处理在线切割编程的应用 篇4

计算机显示的图形文件分两类———矢量图和位图。位图图像也叫点阵图像、绘制图像, 是由可以进行不同的排列和染色的单个像素点组成的。放大位图会看见用来构成整个图像的无数独立方块, 放大位图尺寸其实是增大单个像素, 效果是使线条和形状变得参差不齐。矢量图是用点、线、矩形、多边形、圆和弧线等元素通过数学公式计算获得直线和曲线从而构成图形, 其显示颜色由边线的颜色以及边线间封闭区域的颜色决定。由于矢量图通过公式计算获得, 移动、缩放、旋转、拷贝、改变属性等都很容易, 且文件较小, 用来表达比较小的图像。矢量图无论放大、缩小或旋转等不会失真, 但是难以表现色彩层次丰富的逼真图像那样的效果。Corel的CorelDRAW、Adobe的Illustrator是最优秀的矢量图形设计软件, 甚至FlashMX制作的动画都是矢量图形动画。

将位图图像转成矢量图的软件有:Flash的Fireworks、CorelDRAW的Corel Power TRACE、Adobe Streamline等。但是对于线切割来说, 使用CAXA线切割软件就可以了。CAXA线切割XP的位图矢量化功能可以将BMP、GIF、JPG、PNG、PCX格式的图形文件进行矢量化处理, 生成可用于加工编程的轮廓线。该功能解决了实物、美术画、美术字等各种有实物无尺寸图案的加工编程难题, 原先一些难以加工甚至不能加工的零件, 如今可以通过扫描仪将图片或实物转换为图像输入, 利用位图矢量化处理, 生成矢量图, 并生成加工代码, 便能极为便利地对其进行编程和加工。

2 在CAXA线切割中对位图矢量化处理

(1) 打开CAXA线切割XP软件, 通过菜单“绘图 (A) ”→“高级曲线 (A) ”→“位图矢量化 (V) ”→“矢量化 (V) ”的操作, 在弹出的对话框选择要进行位图矢量化的图像文件后, 单击“打开 (O) ”, 如图1所示。

BMP、GIF、JPG、PNG、PCX格式的图形文件可以直接进行矢量化处理, 其他格式的文件需要转换成以上几种格式文件后再进行矢量化。

(2) 移动位图到适当的位置后, 在系统弹出的矢量化菜单中, 进行适当选择, 如图2所示。

点击对应下拉菜单或使用“Alt+1”组合键可选择背景:描暗色域边界/描亮色域边界/指定临界灰度值。当图像颜色较深而背景颜色较浅, 且背景颜色较均匀时, 选择“描暗色域边界”;当图像颜色较浅而背景颜色较深, 且图像颜色较均匀时, 选择“描亮色域边界”;若让系统通过计算位图灰度值的最大值、最小值然后取其平均值作为临界灰度值, 选择“指定临界灰度值”。

点击对应下拉菜单或使用“Alt+2”组合键可选择拟合方式:直线拟合/圆弧拟合。采用直线拟合时所生成的轮廓只包含直线段;采用圆弧拟合方式时所产生的轮廓则由圆弧和直线段组成。两种拟合方式均能保证拟合精度, 圆弧拟合优点在于生成的图形比较光滑、线段少, 因此生成的加工代码也较少。

点击对应下拉菜单或使用“Alt+3”组合键可选择计算图像实际宽度的方法:指定宽度/指定分辨率。图形由许许多多个像素组成, 尺寸相同的图像, 像素越多清晰度就越高精度也就越精细。一般以1英寸 (25.4mm) 长像素点的数量来表示图像精度, 即分辨率。因此图像实际宽度=像素点总数×25.4/分辨率。

点击对应下拉菜单或使用“Alt+4”组合键可选择拟合精度:精细/正常/较粗略/粗略。拟合精度级别越高轮廓形状就越精细, 但不是说精度越高就越好, 拟合精度要根据使用情况的精度要求等方面来选择, 精度选得过低会使轮廓形状出现较大偏差, 精度选得过高, 生成的轮廓可能会出现较多的锯齿。

(3) 单击鼠标右键后出现如图3菜单。根据需要调整图像大小和实际宽度。

(4) 单击鼠标右键完成矢量化功能, 位图多了蓝色边线, 如图4所示。

(5) 通过菜单“绘图 (A) ”→“高级曲线 (A) ”→“位图矢量化 (V) ”→“显示位图”/“隐藏位图”和“清除位图 (C) ”, 可实现对原图显示、隐藏、清除的功能。选择清除位图后即可消除原来的位图, 如图5所示。

通过对比原图和矢量化的结果, 调整参数后, 可以获得较理想的轮廓, 然后再对结果进行适当的编辑处理。

3 在FeatureCAM中进行编程处理

Delcam的FeatureCAM中线切割CAM模块———FeatureWIRE编程特点是基于特征 (使零件加工编程更方便、更简单, 极大地缩短了加工编程时间) 、基于知识 (使加工管理更有效) 、使用自动特征识别AFR技术 (加速了从设计到加工的全过程) 、和强大的交互式特征识别IFR技术的全功能线切割CAM编程系统, 自动智能识别贯通的孔、轴类及其锥度类特征;即使是上下异形类零件, 学生只需几步操作即可生成加工路径, 进行仿真模拟, 同时根据不同机床后置处理程序生成NC加工代码, 进行数控加工。易用快捷是其最突出的特点, 符合了学校实训教学的要求。

软件还提供导入各类CAD图形文件的功能, AutoCAD、Solidworks、Catia、Pro/E、UG、IGES等软件的dwg、dxf、sldprt、mod、prt、igs等文件都能很好地输入进来。

下面以IGES文件来做例子:

(1) 在CAXA线切割XP中通过菜单“文件 (F) ”→“数据接口 (D) ”→“IGES文件输出 (G) ”, 输出一个IGES文件, 在如图6所示的弹框填写文件名后, 单击“保存 (S) ”:

(2) 打开Feature CAM软件, 通过菜单“文件 (F) ”→“输入 (I) ”来输入刚刚保存的bengchuang.igs文件。

(3) 在Feature CAM中进行适当的编辑处理, 完成草图绘制并生成一条完整的闭合轮廓线。

(4) 建立特征、指定刀具路径并进行仿真, 仿真后点击去掉不要的坯料得到如图7所示的三维仿真实体和完整的NC代码。

(5) 通过菜单“文件 (F) ”→“保存NC (E) ”在如图8所示的弹框作适当选择后, 单击“接受”来保存需要的NC程序。

(6) 将以上“.ISO”文件传送到设备上进行线切割加工。

4 结 语

通过CAXA线切割XP的位图矢量化功能将BMP、GIF、JPG、PNG、PCX格式的图形文件进行矢量化处理, 生成CAD图形文件, 再利用Feature CAM基于特征、基于知识、使用自动特征识别和交互式特征识别的全功能线切割CAM编程系统, 生成加工路径, 进行仿真模拟, 生成NC加工代码, 进行数控加工, 降低了编程的难度, 提高了生产的效率和质量。

摘要:CAXA线切割XP的位图矢量化功能可以将BMP、GIF、JPG、PNG、PCX格式的图形文件进行矢量化处理, 生成可用于加工编程的轮廓线。该功能解决了实物、美术画、美术字等各种有实物无尺寸图案的加工编程难题, 原先一些难以加工甚至不能加工的零件, 如今可以通过扫描仪将图片或实物转换为图像输入, 利用位图矢量化处理, 生成矢量图, 并生成加工代码, 便能极为便利地对其进行编程和加工, 减轻了编程的难度, 提高了生产的效率和质量。

关键词:位图,矢量化,线切割,编程,CAXA,FeatureCAM

参考文献

[1]杨士军.CAXA数控线切割加工实例教程[M].北京:国防工业出版社, 2006.

[2]邱建忠, 王丽丹.CAXA数控线切割加工实例教程[M].北京:机械工业出版社, 2003.

[3]沈寿林.CAXA线切割V2实用教程[M].北京:机械工业出版社, 2002.

[4]Delcam PLC.FeatureCAM Getting Started Guide[Z].USA:Delcam PLC, 1997.

交换编程――结对编程的延伸实践 篇5

“结对编程技术是一个非常简单和直观的概念:两位程序员肩并肩地坐在同一台电脑前合作完成同一个设计、同一个算法、同一段代码或者同一组测试。与两位程序员各自独立工作相比.结对编程往往只需花费大约一半的时间就能编写出质量更高的代码, 但是,人与人之间的合作不是一件简单的事情——尤其当人们都早己习惯了独自工作的时候。实施结对编程技术将给软件项目的开发工作带来好处,只是这些好处必须经过缜密的思考和计划才能真正体现出来。”(引自《结对编程技术》,原名为《Pair Programming Illuminated》,作者为Laurie Williams, Robert Kessler)。下面我们分析一下结对编程的特点:

结对编程在很多项目中得到应用,也作为XP(极限编程)一个非常著名的观点和做法被很多人大为推崇。

结对编程是两个人同时做同一件事情的一种方法。表现上会给人一种浪费一个开发人员的感觉,实质上这的确是可以提升效率的。

同样的这个做法,我在上海进行的一个类ERP项目中用过一次,当时在我做完权限系统的全部功能后,和一个兄弟合作了一个模块,我们两个人只用了三四天时间,就完成了这个新的模块的全部功能。相对于我们此前做的功能模块来说,时间不到那些模块开发时间的十分之一。但由于结对编程会让人感觉到资源被浪费了一半,在20的一个项目中,我提出进行结对编程的时候被领导拒绝了。这件事以后,我就开始考虑如何才能降低这种表面的浪费,而又能让大家交流起来,同时能提高团队的稳定性。

产生背景

年我的项目组要做如下这样的一个项目:

这是电信MSS系统的核心业务系统部分,包括了规划、设计、施工、验收、财务、合同等多个重要环节和多个部门的业务。当时团队开发人员数量较少,人员技能较为均衡,没有水平超出其他人过多的技术人员。这个项目在最初评估的开发周期就是第一个版本在五个月内完成,整个项目至少要做上一年以上,而最后的实际情况是,这个项目随着不断的升级和调整一直开发了三年多。最初的开发团队是十一个人,后来扩展到二十三个人,主要开发人员总数为十六个人,其中有四个人技术水平相对较高,另外的七个人技术水平相对较低但是也都有三年多的实际项目开发经验,其中有三个是我带的三个应届毕业生。

由于开发团队中没有技术水平超出其他人很多的人员存在,因此技术方案的论证过程都是在大家的共同讨论中制定下来的,只是在团队整体控制上,当时我有相对较强的发言权。因此在权衡了整个项目的实际情况后,完成需求工作我就告诉弟兄们——第二阶段设计模型的开发大家交换来做。

刚开始很多弟兄不理解,因为相对而言我的开发经验比其他人多了几年,所以当时我说的一些话兄弟们还可以接受,于是我就直接要求大家按照我的计划执行。在设计模型开发完成后,我再次要求大家进行交换。两次交换完成后,保证了每一个模块都有至少两个人对其十分熟悉,一方面不会因为人员的变动造成团队的不稳定(这一点考虑相对较少,因为当时的团队合作时间比较长,大家彼此十分熟悉和了解),另一方面保证每一个模块的开发人员都能找到人进行讨论,从而增加了团队内的沟通,方便了协调工作的进行。

因此在那个团队的开发过程中,我们经常是大呼小叫,无论走到哪里,都是十分热闹的场景。

方法定义

与结对编程类似,交换编程也是一个非常简单和直观的概念:两位或者多位程序员轮流开发同一个软件系统的同一个模块的不同阶段的任务。交换编程的方式更合适的说法应该是交换开发,这种方式不仅仅可以应用于软件项目,也适合其他研究开发型项目。相对而言,这更是一种更容易被人们接受的方法,在前文大家已经看到了它在实际项目中的事实,这里先分析一下它与结对编程的不同之处:

它仍然采用传统的一人一机的开发方式,结对编程是两人一机。

它在每个迭代间进行多人交换或者两两交换,结对编程没有交换的概念。

它与传统的编程方式之间的差别是在每个迭代间进行多人交换或者两两交换,而传统编程没有交换的概念。

这里说明一下两个概念:

轮轮流交换:三个以上的程序员之间相互交换所开发的工件,不仅限于三个。例如:A1的开发内容交给A2,A2的交给A3,……,An的交给A1。这种方式称为轮流。

两两交换:两个程序员之间相互交换所开发的工件。仅限于两人之间。

建议实施方式

交换编程中的操作与其他过程有较大的差异,根据经验,建议在软件工程实施的各个阶段按照如下的方式进行:

需求工程中,需求调研和需求分析进行轮流交换,轮流交换至少是三个以上的人进行互换,不是两两互换;

概要设计(分析模型)开发中,需求分析到概要设计也进行轮流交换;

详细设计(设计模型)开发中,概要设计到详细设计再进行一次轮流交换;

编码实施启动后,详细设计到编码的交换采用两两交换,注意这个时候不再采用轮流交换了。

在全程建模的开发方法下的交换编程应用方式如下图:

由于目前没有进行实际数据的度量对比,本文也无法从量化的数据上来说明问题,只能通过一些具体的事实来进行说明和验证:当时这个项目的模块从7个扩展到了11个,人员数量从11人扩展到了23人,我们在七个月内满足了南方11家省级电信公司和集团公司的基本业务需求,从4月到月期间,基本完成了这些省公司版本的二次定制开发任务。

在编码以前全部采用轮流交换的目的就是为了让更多的人了解项目进展的全部内容,有利于增加团队内的交流,使更多的人对项目所开发的内容熟悉,并能让他们提出自己的观点,也有利于使更多的人从更多的角度来研究某个系统模块所需要实现的功能和用户需要解决的实际问题,不会因为某个人的定式思维而出现理解偏差,从而造成对需求的理解不到位。

详细设计到编码的交换采用两两交换,这是因为前期需求已经基本上都稳定下来了,这时候不需要对用户需求进行更多方面的理解,只需要进行实施并进行纯粹的编码工作即可。此时做轮流交换就不存在任何意义了,相反只能影响开发进度。

优劣势分析

这里所提到的优势都是和具体的开发方法相关联的,大部分是相对于XP方法中的结对编程,同时也会分析它与传统开发方式间的优劣。

开发时间“浪费”不明显

表现

这个开发时间“浪费”不明显是相对于结对编程与传统开发模式而言的,至少让老板没有感觉到人员分配方式带来了人员的浪费。大家都知道,结对编程需要两个人共用一台计算机、一套键盘、做同一个故事,这样的开发方式往往会给人感觉浪费了一个人,虽然事实上未必如此。但是如果哪个项目经理第一次甚至说前几次这样做,估计大多数老板都会表示反对的,因为他会感觉自己的技术人员只有一个人在做事情。同样,在的敏捷中国开发者大会上,ThoughtWorks的总经理也提到了这个问题,他的解释是这样的:当两个人合作三个月以后,效率会超过两个人单独编程的效率!但请注意:这里有一个时间前提——三个月以后。

三个月这个时间未必是真实确凿的时间分界线,它只是一个模糊的大概的时间范畴,如果两个人配合的好,也许只需要两个多月,如果配合不好,也许需要四五个月的时间,或者更长的时间……。我相信这样的说法连Martin也不会反对的。从这个时间界限上,大家可以看看国内公司的项目状况,然后再继续我们的讨论。

分析

项目情况:国内很少有时间限度较长的项目,大多数项目都是在三个月到半年时间内结束,有些甚至只有一个月。这样的时间特性,将使得这个三个月的期限变成了一句空谈,也就是说,当两个人磨合好的时候,项目已经结束了。这时候,有人会说,下一个项目还可以继续合作呀,好,那我们来看看国内项目团队的人员变动情况,然后再继续。

人员情况:国内大多数的公司都处于一种为了谋生而存在的状态下,有很多技术人员都有三五个月就跳槽的经历。不仅仅是技术人员,往往公司也是这种状态,很多公司就是为了某一个项目而建立的,老板在招聘技术人员的时候,都是往最低限压低技术人员的工资,当一个技术人员对项目了解到一定程度的时候,这个时间往往是在三个月到半年时间之间,

半年,或者一年,是一个人最容易发生跳槽行为的时候,因为这个人了解了公司的实质情况,如果老板当时骗了人,那么这个人必然要离开公司;如果老板当时过分地压低了他的收入,那么这时候这个技术人员就希望能够获得加薪等等,除此之外,还有很多很多其他的因素,都会给人带来未知的行为。也可以说,国内很少有团队成员能够合作达到一年以上的时间。这样的话,第一个项目磨合好了,第二个项目就是在考虑跳槽,第二个项目未结束人就走了,这是我们平时很常见的现象。

这个时候做结对编程,效果就不会那么明显,因为在人员相对成熟的时候,人的心理发生了较大的变化,工作的积极性和配合程度也远远不及刚刚进入公司的时候。那么结对编程在这样的环境下还能进行下去吗?估计不用分析就可以知道了。这时有人会说,如果配合不好,那就换人结对,不一定非要这两个人结对。那这就要从项目组人数说起了。

项目组人数:在我所开发过的项目中,大概有不到一半的项目有十个人以上的开发团队。最大的团队开发人员是不到三十人,这二十多人还要分成几个组,每个组也就五六个人而已。在这种情况下,结对的问题就出现了,在组内的你只能和这么三五个人结对,是不是都很容易配合起来呢?这个事情很难说。配合不好怎么办?换人?换项目?还是换公司?当然,如果配合了三个月还配合不好,站在公司的立场上,是肯定要考虑开除掉某人了,至少也要将他降薪或者调离这个项目组,因为公司承担不起这么大的风险。项目经理更是在担着风险,因为结对编程的事情老板本来就不太乐意看到,本来老板就有意见,而项目组如果发生了这样配合力度很差的情况,项目经理的处境可能就非常危险了。

综合上面这三个方面的情况,我们可以得到如下的结论:

结对编程在中国这些短小项目过多的情况下是不太适合的!结对编程其实更适合一些相对人员较为稳定的开发环境,否则,三个月的低效率配合时间会让老板将项目经理的脑袋当球踢的。但是,结对编程还是有其好处的,比如,提高项目组的稳定性,当一个人离开后,另外一个人可以很快地将新人带到位,项目组不会因为人员变动而发生较大的风险问题。同时,结对编程提高了程序员之间的交流,团结了项目组内成员,同时容易形成人月神话中提到的胶冻团队的效果。另外,在三个月后还是有效率提高的情况发生,的确能够带来很好的效益的。

这时候,交换编程就带来了很好的效果,一是没有老板担心的两个人做一件事情的风险,同时增加了项目组内成员的沟通交流,也提高了团队的稳定性。但如何提高团队的稳定性?

项目组稳定性提高

表现

在我前面的例子中可以看到,一个模块至少有三个人对他它很熟悉,因此在后面的开发过程中,无论哪个人发生变动,都不会影响这个团队的稳定性,所有的任务都能够很好的延续下来。每一个系统的模块都会至少按照阶段数量(不同的项目会有不同的开发周期,同时也就有不同数量的人会对这个模块十分熟悉)分给不同的人来进行开发。如果和结对编程配合起来使用,则将会使得对同一个模块了解的人数达到一般交换编程的两倍人数。

分析

有了这样的对每一个模块都很熟悉的人员数量的存在,团队的稳定性就会表现出来,任何一个人的变动或者少数人员的变动都不会对团队和开发进度产生较大的影响。因为随时都可以有其他人来接替这个发生变动的人的全部工作,也很容易培养新人进入到团队内来进行工作。

更适合没有绝对高手的团队

表现

当团队内没有绝对高手存在时,也就是说,系统的架构设计将是更多的人一同讨论出来的,并在开发过程中不断的修改和调整。

分析

没有绝对高手存在,系统架构设计就不能够在系统进行分析设计前完成,而同时架构的不稳定,就无法更好地安排任务计划和制定故事,这些都会影响到整个系统的开发进度和过程,同时,敏捷编程所倡导的很多做法就无法在这个大前提下来进行实施。

国外能够很好地采用敏捷的做法来实施项目的一个原因是,他们有很多有一二十年工作经验的开发人员。这些人员的经验积累是非常重要的,他们可以更好地在项目开始的前期对项目进行整体的控制和把握,同时做好项目计划和制定好任务故事,而这一点在国内尤其是软件公司中还不具备这个条件,因此,很多项目我们都处于的状态类似于我前面所举的电信项目的团队情况,甚至情况比那个团队还要差得多。

团队内交流增加

表现

前面已经提到,“因此在那个团队的开发过程中,我们经常是大呼小叫,无论走到哪里,都是十分热闹的场景。”这种频繁的交流,无形中使得团队的凝聚力提高,相互之间的关系和合作也都更为密切。

分析

如果是一个人从头到尾开发一个模块,他就几乎不需要和团队内非管理人员进行交流,甚至在某些情况下他只需要和客户做好沟通就足够了。而这时候,即使进行了同行评审,这个技术人员也可能会认为两三天的时间内这些人不可能了解这个系统模块的内容。这种评审也就容易流于形式而无法得到真正的重视。其他人也会认为评审是浪费自己的开发时间,于是到了一定程度评审就会成为可有可无的状态。如果有较多的人参与了这个模块的前后期分析和开发,每一个阶段都可以找到别人来进行讨论,在评审时对这些人提出的意见也就更容易接受——因为他至少会认为这几个人比他更早介入这个模块的分析,在某些程度上会比自己了解的更为深入。

唯一可能的劣势

表现

由于存在多人之间的交换,在某一个具体工件的开发的时间上会比一个程序员一直做下来略有延长。

分析

由于在任何一次交换之间都需要前一阶段开发者队后一阶段开发者进行关于业务和技术方面的沟通和交流,因此会延长项目在初期的开发时间。尤其当团队成员相互之间的熟悉程度不够或者配合不协调的时候,这个问题会表现得较为突出,甚至可能影响一些项目的进度以及开发工作的进展。

但是,这个影响会在相应的程度上促进团队内人员之间更快地相互熟悉,这个周期要比结对编程短很多,一般来说,不会超过一个月的时间就可以让团队成员之间相互熟悉(由于不是坐在一起开发,这个熟悉的程度比结对编程的要求低很多,因此时间也相应会缩短很多)。

深入讨论

交换编程的应用方式是有其适用环境的,另外在我的实践和研究中还建议如果团队合适,可以考虑与结对编程配合使用。

适用环境:这种开发方法的适应性较强,这里分为团队状况和项目情况两个部分进行一些说明。

团队状况:交换编程适用于人数超过两个人的开发团队,因为交换一次至少也需要两个开发人员。大的团队也可以应用交换编程的方式,来进行项目开发。要求团队内的成员有一两个具有两三年以上开发经验的,这是对于一般的项目(哪怕没有什么技术难度)的最基本要求。

项目情况:项目规模不限,开发周期的适应性也较强,对于任何类型的项目都可以适用。

与结对编程配合使用:如果领导比较认可结对编程的开发方式,这个时候,您引入交换编程也会带来同样的好处,比如团队稳定性,至少从对系统业务模块熟悉的人数上来看增加了一倍,以及团队凝聚力,因为频繁的交流,从而更多地降低因为少数人的思想和考虑偏差造成对用户需求理解不足等问题。

有了上述的情况表现,也使得团队的规范化操作能力更强,也可以使得很多问题能够在有效的沟通中的到解决。

由此可见,交换编程的存在是有其道理的,没有用过的朋友不妨尝试一下,至少对您的团队没有什么伤害和大的变动。

作者介绍:白慧冬,网名青润,独立软件咨询师,《软件工程之全程建模实现》一书作者,CSDN软件工程/管理版块大版主,一个在不断摸索实践的国内软件工程方法和技术的亲历者。底开发完成了一套软件度量概算产品,并对一些行业应用软件进行了较为成功的度量分析。20完成了全程建模方法中需求与代码影射关系的分析与实践探索。个人Blog为:blog.csdn.net/qingrun 。

数据库编程与图像处理 篇6

在数据库编程中,往往需要将相片等图像信息与文字信息同步显示,以便查阅,如图1所示。针对这一需求,采用Java作为编程语言,结合My SQL数据库编程实例,重点讨论如何实现图像信息与文字信息的同步显示。

2直接读取磁盘文件

2.1数据库设计

在My SQL中新建一数据库dbstdinfo,然后在数据库中新建一表stdinfo,结构如图2所示。

2.2图像显示方法

在stdinfo表中设计一字段:photoid,在其中填入相片编号,将相片的文件名更改为相片编号,这样,通过photoid字段,就可以建立stdinfo表中的记录与相片的一一对应关系了,如图3所示。

2.3核心代码

首先将面板设置为卡片布局:

将按钮添加至面板后,给按钮添加事件监听代码,实现相片与文字信息的同步查询:

2.4技术分析

本实例通过直接读取磁盘上的JPG文件,实现图像与文字信息的同步显示。这种设计的优点是占用数据库资源较少,缺点是图像文件容易被查看、删除或修改,图像文件不宜过多,否则容易造成混乱。

3利用Blob字段存取图像

3.1数据库设计

在dbstdinfo数据库中新建一表:phototable,结构如图4所示:

3.2图像信息的储存

My SQL中的Blob字段(binary large object)是用来存储二进制大对象的字段类型。Blob往往是一个大文件,典型的Blob是一张图片、一个声音或一个视频文件。Blob共包括4种Blob类型:Tiny Blob、Blob、Medium Blob、Long Blob,这几个类型之间的唯一区别是存储文件的最大尺寸不同。

本实例首先将图像文件的文件名更改为学生的身份证号,然后存入phototable表中,如图5所示,其中,studentid字段储存了文件名(不含文件扩展名),photo字段储存了对应的图像信息。本实例单独设计了如图6所示的界面来管理phototable表。

3.3核心代码

3.3.1图像信息的储存

3.3.2图像信息的显示

3.4技术分析

本实例通过My SQL中的Blob字段存取图像信息,可预先将图像信息存入Blob字段,需要时从该字段中读出。图像信息与文字信息的同步采用了跨表查询技术。利用Blob字段存取图像的优点是图像内容不易被查看、删除或修改,保密性强,缺点是占用数据库资源相对较多。

4结语

图像信息的存储可以以单个文件的形式存储到磁盘上面,也可以存入数据库的Blob字段中。文中的两个实例分别呈现了显示图像的两种方法:(1)直接读取磁盘文件,通过数据库中的字段信息实现图像文件与记录信息的一一对应,从而实现数据库记录与图像信息的同步显示;(2)利用My SQL数据库中的Blob字段存取图像,同步显示的图像信息直接从Blob字段中读出。

摘要:在数据库编程中,经常需要图像与文字信息的同步显示。讨论了从磁盘文件中读取图像信息,以及将图像信息存入MySQL数据库的Blob段中,然后从中读取。同时,编写了一个应用程序,实现图像与文字信息的同步显示,该程序使用Java作为编程语言。

关键词:MySQL数据库,Blob字段

参考文献

[1]张振坤,李钟尉,陈丹丹.视频学Java.北京:人民邮电出版社,2010.

[2]eric_gcm.Java Mysql存取Blob数据.网址:http://eric-gcm.iteye.com/blog/937860,2011-03-02.

编程处理 篇7

VBA是Microsoft公司可编程应用软件的完美实现, 是基于Visual Basic For Windows发展而来, 它作为一种通用的宏语言被Microsoft的可编程应用软件所共享。 VBA主要用于Mi crosoft公司的办公软件Office文档的联机处理, 它集成在Excel、 Word、 Access、 Powerpoint、 Outlook、 Project等一系列的办公软件中。

VBA继承了VB的开发机制, 与VB有着相似的语言结构和编程环境, 其中VBA功能是VB6 的一个子集。 VBA中的编程命令大部分可在VB6 中直接执行, 从而使VB6 具有独立处理Microsoft Office办公软件文档的能力。

1 Excel 2007 (2010) 对象模型

VB6 是面向对象的程序设计语言, 顶级对象Application表示Excel 2007 应用程序本身。 调用Excel 2007 (2010) 就需要使用Application对象。 调用Application方法修改Application属性时将会影响Excel应用程序。

(1) Applicdation对象包含了多个Workbook对象。

(2) Workbook对象又包含了多个Worksheet对象、 Range对象和Chart对象。 对于Excel文档 “test.xlsx” 就是一个工作簿Workbook类的对象; 而一个工作表 “Sheet1” 就是一个Worksheet类对象。

(3) Excel2007 (2010) 包含有集合对象Workbooks、 Work sheets。 使用集合函数可以访问集合中的任意一个对象。 例:

Workbooks (Index) 、Workbooks (Workbookname) 可访问工作簿。

Worksheets (Index) 、Worksheets (Worksheetname) 可访问工作表。

(4) Excel对象变量的定义的引用设置。

如果Excel对象引用使用的对象变量被声明为一个特定类的变量, 则对象引用是事前绑定。 如果对象引用使用的对象变量被声明为一个一般的Object类的变量, 则对象引用是后期绑定。 通常, 使用事前绑定变量的对象引用比使用后期绑定变量运行得快些。 但事前绑定需在VB6 的环境中设置 “工程” —“引用” 库 “Microsoft Excel 14.0 Object Library”。

例如, 可以用下列3种方法定义Excel对象变量:

1) 事前绑定

2) 后期绑定一

3) 后期绑定二

成功地创建Excel对象的变量后, 就可以应用对象变量对Excel工作簿Workbook、 工作表Worksheet的属性、 单元格数据进行处理和运算; 最后保存Excel文档, 退出Excel程序, 释放对象变量所占用的内存资源。

2 VB处理Excel文档的编程

VB6 处理Excel文档的基本编程步骤有以下几个部分构成, 其中的代码均经过VB6 环境调试或测试, 在Windows环境中运行很好。

(1) 创建Excel程序Application对象

(2) 执行Excel文件对话框, 打开工作簿文件

(3) 在Excel窗口Windows (1) 中显示工作簿

(4) 激活表单Sheet1, 对单元格进行读写操作和属性设置

(5) 使用对话框保存工作簿

(6) 关闭工作簿, 退出Excel程序, 释放Excel对象的内存资源

3 学生电子作业登记Excel表格VB6 编程实例

对于计算机技能课, 有大量的课堂实训作业。 用VB6 编写了一个学生电子作业登记程序, 可将学生的电子作业快速登记Excel表。 因为Excel电子表格已是教师处理学生成绩的常用办公工具, 教师应用Excel表格处理学生成绩非常熟练方便。 该工具有以下特点:

(1) 学生作业名称可以是 “目录名” 和 “文件名”, 可以登记以上两种同时存在的作业。

(2) 最恰当的作业名称是“学号”+“姓名”, 如图1所示。

(3) 上交作业可登记到EXCEL文件中, 如图2所示。

(4) 第一次作业登记要设置好选项。 可分别选择学生作业目录或登记表路径。

(5) 再次登记可选择打开巳存在的表格及路径。

(6) 本程序能很好的登记学生上交的电子作业, 方便快捷。

参考文献

[1]龚沛曾, 陆慰民, 杨志强.Visual Basic程序设计教程 (6.0) 版.高等教育出版社, 2000.

[2]美Thearon Willis, Bryan Newsome.Visual Basic 2010入门经典.吴伟敏, 李周芳, 译.6版.清华大学出版社, 2011.

编程处理 篇8

事务的实例,称为事务对象,PowerBuilder的默认事务对象为SQLCA。事务对象共有16个属性值,这些属性值构成了数据库管理系统(DBMS)所需的总体连接信息,见表1。

通过对事务对象各类属性的定义,我们可以很轻松地把事务对象指向了将要连接的数据库。通常,在PowerScript编程中使用PowerBuilder提供的默认事务对象SQLCA(SQL Communication Area),也可以根据需要定义和使用其它的事务对象。若定义了其它事务对象,则需要SQL语句中对该事务对象进行指定;如在同一时刻操作(或访问)多个数据库,则应使用多个事务对象,一个事务对象与一个数据库相对应。除了默认的SQLCA事务对象外,其它事务对象都必须经过说明和创建,而当它们不用时,则应该删除,用以节省系统资源。

2 事务和数据并发控制的关系

除了连接数据库的一般功能,PowerBuilder事务为数据库管理系统提供一种安全机制:把一个或者多个SQL语句当成一个工作单元进行处理,从而达到并发控制的目的。通俗地讲,工作单元内的SQL语句,要么都操作成功,要么都失败,这对关系数据库中数据的完整性和一致性非常重要。下面是一个关于联网出售火车票的例子,通过这个例子,说明事务对数据并发控制中所起的作用。

图1中,某售票系统总共剩余一张火车票,甲售票点在t1时刻出售了这张票。如果售票系统在t2时刻出故障(比如系统掉电),程序应完成的工作只进行了一半,甲站点已经售出了最后一张车票,整个系统的其它站点应该是无票可售,而其它站点尚未减去这张已经出售了的车票。此时,数据库的数据发生了混乱。显然,甲站点减去一张车票与其它所有站点减去一张车票,应该是同一个事务,即要么都做,要么都不做。

对上例出现的情况,需要对数据处理机制进行一定的约束,从而保证数据库的一致性。在实际应用中,应按以下步骤进行处理:甲站点在t1时刻减去一张票时,开始一个事务,如系统在t2时刻掉电或出现其它故障,事务回退,撤消在t1时刻所做的工作,并不再继续事务的后续工作。因此,当系统故障排除后,只需重新执行该程序即可,系统中的数据不会出现任务问题,见图2。

3 事务管理语句和AUTOCOMMIT属性设置

PowerBuilder对事务的管理方式与一般的关系数据库的管理方式基本相同,通过四条语句来达成,这四条语句分别为:COM-MIT、CONNECT、DISCONNECT和ROLLBACK。

其中,COMMIT为数据提交语句,它表示在当前时刻对数据库的更新操作全部提交。一个提交完成后,当前事务对数据库的所有更新变为永久性,直到下一个COMMIT提交再次发生;CONNECT是与底层数据库进行连接的语句;DISCONNECT用于断开与指定数据库的实时连接;ROLLBACK语句用于撤消当前事务对数据库的更新操作,并回退到上一次COMMIT提交生效时的数据状态。另外需要说明的是:在运行CONNECT连接数据库时,应该对事务对象进行定义与赋值,也就是说,应用程序所需的事务对象已经存在,所有DBMS所需的事务对象属性都已赋值。

在事务对象中,AutoCommit属性需重点考虑,它决定了SQL语句的事务处理方式。当AutoCommit属性为True时,系统将把每一个SQL语句作为一个单独的事务进行处理,即只要执行一条SQL语句,系统就会马上提交;当AutoCommit属性为False时,系统会把所执行的SQL语句集合作为一个整体进行考虑:即一并提交,直到下一次COMMIT或ROLLBACK再次发生。

一般情况下,我们可以用PowerBuilder默认的事务提交方式(即,AutoCommit=False)为事务的提交赋值。然而,当系统遇到带有DDL语句的存储过程时,要求把AutoCommit属性设置为True,否则DDL语句会被拒绝执行,系统会报错。而当AutoCommit属性设置为True时,则不能使用ROLLBACK语句,这是一个两难的选择,折中的做法是把AutoCommit属性设置为False,当遇到带有DDL的存储过程,在程序中把AutoCommit属性改为True,并执行之。

4 PowerScript事务处理的语法

1)CONNECT语法

语法格式:CONECT{USING TransactionObject};

其中,TransactionObject指事务对象的名称。CONNECT语句须在事务对象赋值后、其它SQL语句执行前运行,否则系统会报错。

如果将要连接到PowerScript默认的事务对象(SQLCA),则可以直接执行下面语句:

CONNECT;

如果连接失败,则可用SQLDBCode和SQLErrText属性收集、分析错误信息。

2)DISCONNECT语法

语法格式:DISCONNECT{USING TransactionObject};

其中,TransactionObject指事务对象的名称。在大多数情况下,DISCONNECT语句应放在CMMIT或ROLLBACK执行之后,该和句的其它用法与CONNECT用法相似。

3)COMMIT语法

语法格式:COMMIT{USING TransactionObject}

其中,TransactionObject指事务对象的名称。执行该语句后,数据库的数据将被永久性修改。执行COMMIT语会不会断开数据库的连接,但会关掉所有已打开的游标和存储过程。另外需要注意的是,在默认情况下,执行DISCONNECT语句时,系统会自动发出一个COMMIT命令,用户如果想改变这种默认的执行方式,需在PowerBuilder的数据库画板DB Profile中修改默认设置。

4)ROLLBACK语法

语法格式:ROLLBACK{USING TransactionObject};

其中,TransactionObject指事务对象的名称。与执行COMMIT一样,执行ROLLBACK不会断开数据库的连接,但会关掉所有已打开的游标和存储过程。

5 结束语

灵活、高效的数据库事务处理是PowerBuilder应用系统开发过程中的首要步骤,也是确保数据库最大并发性和一致性的重要措施。尤其是当我们开发的应用系统涉及多库连接、SQL语句嵌入以及使用数据定义语句(DDL)时,更应该注意事务处理的一些节细,通过学习,举一反三,掌握其使用技窍。

参考文献

[1]谢洲.PowerBuilder的多用户事务控制管理[J].机电工程技术,2008,37(7):126-127.

基于网络的数控编程后置处理及传输 篇9

关键词:数控机床,数控编程,后置处理

目前的数控机床自带有编程程序, 可是有时自带的编程程序不能满足复杂的编程需求, 这就要求编程人员对数控编程作后置处理并传输。

1 基于网络的数控编程需要处理的参数

要用网络的数控方式编程, 先需了解数控机床编程需要处理的对象。

数控编程要应用多轴加工的方式处理对象。过去, 机床会应用两轴加工的方法, 即Z轴固定, X与Y轴为可变座标轴, 这种加工的方式过于粗放。目前人们应用了五轴机床三轴联动加工的方式。数控编程的编程对象即为五轴。数控编程的加工原理为右手笛卡尔坐标系为标准加工;标准座标轴原点为基础, 该参数不可变, 其余参数可变, 数控编程需用程序控制可控参数;数控编程要用程序描述的方式控制刀具行动。数控编程具体的处理对象为刀位轨迹、切削工具、加工方式这三项内容。

数控编程人员要针对作业的需要了解编程后置处理的范围, 给出编程的方案、调整编程的参数、在计算机上做好编程模拟实验, 待编程模拟实验的结果满足数控机床加工的需求后, 方可将上传数控机床加工的程序, 让数控机床以此程序为依据开展生产作业。

2 基于网络的数控编程需要应用的平台

构建网络平台——要做好数控机床的后置处理与传输, 需要网络的支持。比如数控机床需要下载配套的后置配程软件或者与之相关的插件等。现代的数控机床都自带有连接网络的串行通信插口, 在开展数控后置处理时, 需让数控机床连上网络。

构建硬件平台——数控机床本身即为一个硬件系统, 只要数控机床编程人员仔细阅读数控机床的说明书, 就能掌握数控机床的硬件操作要点。比如RS-232串行口的数控机床可应用摭展卡与数联网连接。此时扩展卡可将数控机床的通信协议转换为以太网的通信协议, 让数控机床可以接受互联网中的信息。如果数控机床自带有DNC智能插口, 那么数控机床可以直接接受互联网的信息。

构建软件平台——要完成数控机床的后置处理工作, 就需要给数控机床一个后续编程的环境。为数控机床提供网络环境与硬件环境的目的, 实际上就是为了让数控机床能够下载DNC集成系统, 数控编程人员需在该集成系统中完成数控编程后置处理工作。如果数控机床没有DNC集成系统, 就需下载该系统;如果数控系统自带DNC集成卡, 则可仅需完成DNC集成系统的升级。

3 基于网络的数控编程后置处理的方法

数控机床一般自带有简易编程的功能, 只是人们应用数控机床生产复杂的机械时, 可能现有的数控编程命令不能满足人们特殊的生产需求, 此时人们就要应用编程后置处理的方法完善这类程序, 这个过程, 就要依靠数控机床的后处理器完成。数控机床的后处理器就是要把人们下达的特殊指令转达为数控机床能够理解的命令。数控机床的后处理器具有接口功能、NC程序生成功能、专家系统功能、反向仿真功能, 应用后置处理器, 人们可以了解下达的指令是否可以满足数控生产的需要。

当人们设置好数控编程平台以后, 人们要用编程的方式完成数控机床的后置处理。过去, 人们要应用G语言为数控机床编程, 这种编程方式不够直观, 若未受过专业编程训练的工作人员可能不能完成编程操作。现在人们设计了一套宏命令指令串, 这些指令串中自带有数控操作命令, 人们如果要完成数控编程的后置处理工作, 只需要给将这些宏命令串组合成程序指令, 就可完成编程操作。以CAXA-ME软件为例, 该软件自带的宏命令串共计有35个:01——当前后置文件名POST-NAME;02——当前日期POST-DATE;03——当前时间POST-TIME; (下略) ……

数控机床编程人员只需要向宏字符串下达程序操作指令, 编写程序头, 下达换刀指令, 即可应用编程的方式完成特殊的数控操作。在这个过程中, 编程人员需要通过编程的方式控制文件的长度、控置行号、控制编程的方法、数值的格式、圆弧的控制、做好文件扩展名的设置。

以编程人员要编写一个程序名为test1的文件, 它的文件序号为1234为例, 该程序的开始编号为100, 而增量为2, 刀具号为01号, 主轴的转速设置为每秒1500r, 该程序的后置步骤可描述为表2:

数控编程人员处理完程序以后, 可传输编写的程序, 该程序通过后置处理器的验证以后, 若证实该程序能满足数控生产的需求, 该程序即可被应用。

4 总结

数控编程人员以此方法可对数控机床的程序作后置处理与传输, 应用此方法, 数控编程人员可编写出较为复杂的数控生产程序。

参考文献

[1]范兴柱, 王金伟, 王毅栋, 楼佩煌, 叶文华, 戴勇.集成制造车间生产控制的小型DNC系统技术研究[J].机械制造与自动化, 2001 (05) .

[2]邱剑杰.数控程序后置处理及程序传输[J].模具技术, 2001 (06) .

编程处理 篇10

1 matlab的图形界面

1.1 GUI基本开发

通过GUIDE工具来建立—个GUI, 在MATLAB的命令窗口里输入GUIDE, 确认, 可以打开GUI的开发环境GUIDE。GUI (图形用户界面) 开发环境建立的GUI文件保存为两个伴随的文件FIG-file文件和M-file文件。这两个文件有着相同的名字, 但是扩展名不同, 一个是.fig另一个是.m。FIG-file文件里保存了能看到的所有用户界面代码, 而M-file文件里则保存着GUI进行调用的各种函数和代码。当编辑好一个GUI并激活它时, GUIDE将运行M-file文件, 执行里面的调用。和代码行程序相比, FIG-file里保存的东西就好比对象的属性值, 而M-file就好比应用程序, 它保存了启动和控制GUI的所有函数和回调函数。

GUI的figure对象可以成为控件, 每个控件都有几种回调函数, 根据点击相应的回调函数, 然后就可以跳转到相应的Editor中编辑代码, GUIDE会自动生成相应的函数体, 函数名, 名称一般是控件Tag+Call类型名参数有三个 (h Object, eventdata, handles) 。其中h Object为发生事件的源控件, eventdata为事件数据结构, handles为传入的对象句柄, Create Fcn是在控件对象创建的时候发生 (一般为初始化样式, 颜色, 初始值等) 。Delete Fcn实在空间对象被清除的时候发生, Button Down Fcn和Key Press Fcn分别为鼠标点击和按键事件Callback, Call Back为一般回调函数, 因不同的控件而已异。例如按钮被按下时发生, 下拉框改变值时发生, sliderbar拖动时发生等等。

1.2 控件对象描述

MATLAB中的控件大致可分为两种, 一种为动作控件, 鼠标点击这些控件时会产生相应的响应。一种为静态控件, 是一种不产生响应的控件, 如文本框等。每种控件都有一些可以设置的参数, 用于表现控件的外形、功能及效果, 既属性。属性由两部分组成:属性名和属性值, 它们必须是成对出现的。 (1) 按钮 (Push Buttons) :执行某种预定的功能或操作; (2) 开关按钮 (Toggle Button) :产生一个动作并指示一个二进制状态 (开或关) , 当鼠点击它时按钮将下陷, 并执行callback (回调函数) 中指定的内容, 再次点击, 按钮复原, 并再次执行callback中的内容; (3) 单选框 (Radio Button) :单个的单选框用来在两种状态之间切换, 多个单选框组成一个单选框组时, 用户只能在一组状态中选择单一的状态, 或称为单选项; (4) 复选框 (Check Boxes) :单个的复选框用来在两种状态之间切换, 多个复选框组成一个复选框组时, 可使用户在一组状态中作组合式的选择, 或称为多选项; (5) 文本编辑器 (Editable Texts) :用来使用键盘输入字符串的值, 可以对编辑框中的内容进行编辑、删除和替换等操作; (6) 静态文本框 (Static Texts) :仅仅用于显示单行的说明文字; (7) 滚动条 (Slider) :可输入指定范围的数量值; (8) 边框 (Frames) :在图形窗口圈出一块区域; (9) 列表框 (List Boxes) :在其中定义一系列可供选择的字符串; (10) 弹出式菜单 (Popup Menus) :让用户从一列菜单项中选择一项作为参数输入; (11) 坐标轴 (Axes) :用于显示图形和图象。

1.3 GUI开发的流程

开发一个GUI程序的过程主要有两个重要的内容:布局好图形用户界面对象和给这个图形用户界面编写代码。在把对象都布局好的同时, GUIDE环境生成了一个M-file文件, 这个文件只是给提供了进行调用的框架, 还需要去填充和完善。具体的GUI开发过程可以分为4个步骤:GUI界面的设计和布局、GUI的编程、菜单的设计和布局以及莱单的编程。

1.4 GUI数据接口

(1) 数据接口的传入。在一个GUI界面时, 传给他的参数主要如下函数可以看出:

function mygui_Opening Fcn (h Object, eventdata, handles, varargin)

所有的启动参数都是通过varargin传到它的Opening Fcn里面的。启动参数可以包括:1、figure, 也就是窗口参数, 例如position之类。打开GUI时, 使用这个命令mygui ('Position', [434 234 234 34]) 则表示打开窗口在这个位置;还有哪些可控属性可以查help。2、自定义参数。如果传入的参数不是figure的属性 (matlab查找不到输入的属性名) , 则输入的参数作为一个向量存放在varargin里面。比如mygui ('路人甲', '80‘) , 那varargin{1}存放了'路人甲', varargin{2}=’80‘。那mygui中对这读取两个数据进行反应, 就达到了传入参数的目的。

(2) GUI数据传出。怎么把数据传出来也是数据接口的重要问题。将要输出的数据存在handles.output里面, 在GUI任意地方handles.output=数据1;handles.secend_output=数据2;然后在GUI的output Fcn里面加上varaginout{1}=handles.output;varaginout{2}=handles.secend_output;这样就把数据传出来了。

2 图像增强与分割

2.1图像增强

图像增强就是采用一系列技术去增强图像中用户感兴趣的信息, 其目的主要有两个:一是改善图像的视觉效果, 提高图像成分的清晰度;二是使图像变得更有利于计算机处理。图象增强技术的主要目标是, 通过对图像的处理, 使图像比处理前更适合一个特定的应用――预处理。可能的处理策略:空域策略、频域策略。可能的处理:去除噪音、边缘增强、提高对比度、增强亮度、改善颜色效果、改善细微层次。本文主要通过非线性变换的方式实现图像增强。当变换函数是非线性时, 即为非线性变换。非线性变换的函数很多, 这里已经用的是指数变换和对数变换。

指数变换:其意义是在亮度值较高的部分扩大亮度间隔--属于拉伸, 在亮度值较低的部分缩小亮度间隔--属于压缩, 数学表达式为:

a, b, c为可调参数, 可以改变指数函数曲线的形态, 从而实现不同的拉伸比例。

对数变换:与指数变换相反, 意义是在亮度值较低的部分拉伸, 而在亮度值较高的部分压缩, 其数学表达式为:xb=blg (axa+1)

a, b, c仍为可调参数, 由使用者决定其值。

2.2图像分割

图像分割就是把图像分成若干个特定的、具有独特性质的区域并提出感兴趣目标的技术和过程。它是由图像处理到图像分析的关键步骤。现有的图像分割方法主要分以下几类:基于阈值的分割方法、基于区域的分割方法、基于边缘的分割方法以及基于特定理论的分割方法等。本文主要通过基于边缘的方法, 在算法里主要实现了包括sobel算子内的多种分割算法。Sobel算子梯度幅值计算如表1所示。 (i, j) 为当前的位置点, 梯度幅值计算公式如下:

将其进行简化, 用卷积模板来实现:

Sx是水平模板, 对水平边缘响应最大;Sy是垂直模板, 对垂直边缘响应最大。图像中的每个点都用这两个模板做卷积, 两个模板卷积的最大值作为该店的输出值。其运算结果是一副边缘幅度图像。这一算子把重点放在接近于模板中心的像素点。分割完以后实现边缘连接, 方法是: (1) 对图像进行扫描, 当遇到一个非零灰度的象素P时, 跟踪以P为开始点的轮廓线, 直到该轮廓线的终点Q。 (2) 与图像中Q点位置对应的Q′的8邻近区域。如果在Q′点的8邻近区域中有非零象素R′存在, 则将其包括到图像中, 作为R点。从R开始, 重复第 (1) 步, 直到在图像中无法继续为止。 (3) 当完成对包含P的轮廓线的连接之后, 将这条轮廓线标记为已访问。回到第 (1) 步, 寻找下一条轮廓线。 (4) 重复 (1) 、 (2) 、 (3) , 直到图像中找不到新轮廓线为止。

3 图像处理的GUI回调函数

在相应控件下添加相应的回调函数, 实现参数的输入和Matlab图像处理函数的调用, 从而实现图像处理软件功能, 主要回调函数代码和实现的软件界面如下:

4 结论

应用Matlab图形界面设计工具设计出了简单的图像处理软件, 该图像处理软件实现了图形增强、图像分割、边缘检测、特征提取等常用的图像处理方法, 能够显示原始图像、原始图像的直方图和处理后的图像, 能够根据人机交互界面输入的噪声类型和噪声值给图像增加噪声并进行滤波处理。

应用GUI, 必须要注意数据的良好接口问题。先得了解各种格式的文件数据存储格式, 比如csv其实就是以逗号为间隔的一堆数。读取不同类型的数据文件必须制定判断和读取策略, 很多人只仅仅采用了load、或者importdata, 这不可取。读之前先读取一行构造数据格式, 然后再按照格式读取剩余部分。精细化的操作还应该还需要引入每行是否完整、文件末尾是否有多余字符等等容错机制, 这样才能最终保证良好的接口特性。

摘要:Matlab在数学计算上有着强大的功能, 但是很多工具箱的操作都是采用命令行模式。对此采用GUI编程是一个良好的方式。采用GUI能够实现图形化的友好操作, 是一个良好的人机接口。本文设计的图像处理软件可以对载入的图像进行增强、分割、等操作。最后使用本文设计的图像处理软件对标准图像进行了图像增强、图像分割处理, 达到了软件设计的要求。

关键词:GUI,脚本语言,matlab,图像软件,软件,模式识别

参考文献

[1]张志涌, 杨祖樱, 徐彦琴.MATLAB教程-基于6.X版本[M].北京:北京航空航天大学出版社, 2005.

[2]王学辉.Matlab6.1最新应用详解[M].北京:中国水利水电出版社, 2002.

[3]导向科技.MATLAB6.0程序设计与实例应用[M].北京:中国铁道出版社, 2001.

[4]王默玉, 宗伟, 刘春磊等.基于MATLAB的图形用户界面的构造方式与应用[J].现代电力, 2002 (01) .

本文来自 古文书网(www.gwbook.cn),转载请保留网址和出处

相关文章:

嵌入编程01-04

高级编程01-04

编程原理01-04

时间编程01-04

编程过程01-04

编程游戏01-04

编程论文题目01-04

文件编程01-04

结对编程01-04

编程入门学习01-04

注:本文为网友上传,旨在传播知识,不代表本站观点,与本站立场无关。若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:66553826@qq.com

上一篇:嵌入编程 下一篇:编程游戏