自动打标机软件平台设计.doc_第1页
自动打标机软件平台设计.doc_第2页
自动打标机软件平台设计.doc_第3页
自动打标机软件平台设计.doc_第4页
自动打标机软件平台设计.doc_第5页
免费预览已结束,剩余34页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

辽宁科技大学本科生毕业设计 第 iv 页自动打标机软件平台设计摘要气动打标机是一种广泛应用于汽车、摩托车、机械、航空等领域中的重要辅助工具,能够对产品的生产、使用等过程进行有效的管理和识别。目前,国外气动打标技术较为成熟,但价格昂贵,国内气动打标系统抗干扰性不强,精度容易,操作不便。因此,研制一种经济适用、运行可靠、操作方便的气动打标机控制系统,既具有一定的理论意义,又具有较大的实用价值。本文在 windows xp 操作系统软件开发平台下,利用c# 作为开发工具进行编写,truetype字体自动打标机软件设计编辑处理汉字图形, 研制了一套基于 usb 接口的气动打标机控制系统。该系统的控制器在硬件组成上,采用了单片机和 fpga 作为步进电机控制器的控制芯片,cp2102 作为控制器上的 usb 接口芯片。关键词:气动打标机,c#;单片机;fpga;truetype;thorx6; 抗干扰automatic marking machine software platform abstractpneumatic marking machine is widely used in automobiles, motorcycles, machinery, aviation and other fields important tool in the can on the production, use of effective process management and identification. currently, foreign pneumatic marker technology is more mature, but very expensive domestic air marking system is not strong anti-interference, precision easy to maneuver. therefore, the development of a affordable, reliable, easy to operate pneumatic marking machine control system, not only has theoretical significance, but also has great practical value. based on the windows xp operating system software development platform, using c# as a development tool for writing, truetype fonts automatically marking character graphics editing software, developed a usb-based pneumatic marking machine control system. the system controller in hardware, using a microcontroller and a stepper motor controller fpga control chip, cp2102 as a usb interface chip on the controller. key words: pneumatic marking machine;c #; microcontroller; fpga; truetype; thorx6;anti-interference. 目录摘要iabstractii1 绪论11.1自动打标机的现状11.2气动打标机的研究意义11.3气动打标机的发展方向21.4 课题的研究方向,主要内容21.5 本章小结32 方案设计与系统工作原理42.1 打标机的总体设计42.2 系统方案确定42.3 系统工作原理分析42.4 系统功能52.5 本章小结53 打标机控制器设计63.1 控制器的总体设计63.2 接口芯片63.3 单片机设计73.4 fpga控制器设计73.5运动控制方法83.5.1插补运算83.5.2升降频控制83.6 本章小结94 打标机控制软件设计104.1 c#语言介绍104.1.1 c#简介104.1.2 c#定义104.1.3 c#语言的特点104.2 truetype字体自动打标机软件设计114.2.1 truetype矢量字库文件114.2.2 字体轮廓交叉处理154.3 thorx6工业标记印控制系统介绍154.3.1主界面154.3.2 thorx6操作174.4 本章小结285 打标机控制系统抗干扰设计295.1硬件抗干扰设计295.1.1 抑制干扰源295.1.2 提高敏感元件的抗干扰性能305.1.3 切断干扰传播路径305.2软件抗干扰设计315.3本章小结31致谢32结论33参考文献34 辽宁科技大学本科生毕业设计 第 35 页1 绪论1.1自动打标机的现状随着经济的发展,人们生活水平的提高,每一种流通的商品都需要注明生产日期保质期等相关信息,包装是信息的载体,对商品贴标是实现的途径.打标机就是在包装件或产品上加上标签的机器,不仅有美观的作用,更重要的是可以实现对产品销售的追踪与管理,特别在医药食品等行业,如出现异常可准确及时的启动产品召回机制。打标机是现代包装不可缺少的组成部分。目前我国生产贴标机的种类正在逐步增加,技术水平也有了很大的提高,已经脱离从手动半自动贴标的落后局面。1.2气动打标机的研究意义标记在人们日常生产、生活中起着非常重要的作用。对于普通消费者来讲,标记已成为其识别和选择商品重要因素。例如对于家电或机械电子产品,人们则把目光聚焦到产品的规格、型号、品牌、商标等方面。对厂家来讲,无论是在成品和半成品的生产过程中对零部件进行有效的管理,还是为了及时而准确地识别产品的零部件,都需要对产品进行标识。而打标机就是通过物理或者化学的方法在物体表面产生文字或者图形的机器。打标工艺的基本要求是标记字符清晰、时间持久。打标的作用是能提高产品档次,树立品牌形象,有一定防伪作用,同时为企业提供产品的可追溯性。打标机主要应用于机械、汽车及其零部件、摩托车、电动车及其零部件,电子、轻工、石化管件领域。可对钢、铁、铜铝、塑料等材质的产品零部件及各种铭牌进行标记。在工件表面进行标记常用的方式有手工字模压印、电腐蚀、化学腐蚀、激光雕刻、气动标记等。相比较而言,气动打标方式由于结构简单,成本低,可控性好,速度快,特别适合于对标记速度较严格要求的流水线作业场合,并能方便地控制标记内容的深度。1.3气动打标机的发展方向气动打标机是计算机技术、自动控制技术、机械设计技术、气动技术等多项技术综合交叉的技术密集型产品。由于近年来这些相关的技术都得到了很大的发展,因此气动打标机技术也日趋完善。当前,国内外气动打标技术的发展主要有以下三个方向: 数字化、自动化20 世纪 80年代以来,气动打标机的数字化、自动化成为这一领域的研究热点,近年来,随着传感技术、电子技术、自动控制技术、计算机技术的发展,现代的打标机已经进入了计算机控制为主的时代。 多功能、集成化在现代生产环境下,打标机不仅要能够进行单一形式的打标,还要实现功能多样化。比如:打标机既要能够打印标准字库中的字符,还要能够打印用户自行设计的字符图样,并且还能够在一定程度上对点阵字符的打印轨迹进行优化。传统的点阵打印是按照逐行或逐列扫描的顺序进行的,这样做电机的无效行程就较多,效率很低。如果能够将点阵字符轨迹进行优化,那么将获得较高的打印效率。这是打标机发展的一个重要方向。 结构简单化、操作界面人性化随着打标机集成化的提高,很多功能将集中在少数几个模块中实现,气动打标机的结构也就相对变得越来越简单。简单化不仅仅体现在硬件的结构方面,同时也体现在软件方面,窗口式的操作程序、触摸屏等技术使打标机的各种操作更清楚、更容易掌握,这也是当前气动打标机技术发展的一个方向。而且,针对当前中国庞大的市场,各大打标机生产企业也紧紧抓住操作界面中文化这一课题,致力于开发符合国人操作习惯的操作界面。1.4 课题的研究方向,主要内容 本课题的主要工作内容是针对气动打标机的现状和发展方向进行分析,在控制器方面,设计使用单片机和 fpga 联合控制代替单独的单片机的控制的整体方案,软件方面用c#编程工具设计面向对象的打标机控制软件,通信方面采用usb 接口。大体工作如下: 分析气动打标机的现状和发展方向,并提出解决方案; 设计下位机控制器各个模块功能; 对气动打标机控制软件进行开发,在设计过程中进行调试; 对气动打标机控制系统进行抗干扰设计。1.5 本章小结本章首先阐述了气动打标机研究的意义,然后给出气动打标机的定义和工作原理,根据气动打标机的现状和发展方向,设计气动打标机系统。2 方案设计与系统工作原理2.1 打标机的总体设计打标机的控制器的性能的优劣直接影响打印质量,目前控制器核心主要由单片机实现,通过单片机收发打印指令、指令运算、生成步进脉冲,单片机的工作是相当繁重的,这样如果需要使打印速度与精度达到较高的水平,则需要一个性能较高的单片机芯片,并且单片机的程序的复杂度也同样需要提高,这将使系统的开发成本大大增加。近几年,fpga 得到了快速的发展,许多领域的电子设计都采用单片机与 fpga 配合来实现。单片机的程序代码是顺序执行的,或者说是串行执行,而 fpga 的代码是并行执行的,用 fpga 执行指令运算和生成脉冲,将使单片机的处理任务变得简单,选择低端产品就可以满足任务要求,这样既提高了系统的运行速度,又降低了系统的设计成本,所以控制器选用单片机与 fpga 的组合设计。2.2 系统方案确定通过对系统各个部分的分析,最后,我们确定了一个整体的设计方案,即:该系统由打标机控制器、打标机控制软件构成。打标机控制器,采用单片机与 fpga 组合的控制方式,主要负责将上位机的指令转化为步进电机的控制脉冲以驱动电机和电磁阀,并将步进电机的状态信息反馈给上位机,选择 cp2102 接口芯片实现打标机的即插即用功能。打标机控制软件,主要实现打印机的系统设置,各种标记处理,打印显示,数据保存、通信,误差补偿、校正,外部数据接口等功能,在 c# 环境下开发。2.3 系统工作原理分析用户输入要打印标记,系统根据所要标记的图形或文字的轮廓,经过主机中的打标控制软件处理,生成操作与画线指令,由主机的 usb 接口传输至由单片机和fpga 组成的控制器,并经过 fpga 处理,形成步进电机的控制脉冲信号。发送控制信号到步进电机驱动器和高压气源电磁阀,受指令控制的步进电机驱动器驱动步进电机带动打印头在平面上按所标记的轮廓运动,驱动电磁阀标记轮廓的过程中作高频开关动作,从而实现了打印头在压缩空气作用下的高频冲击运动,在工件上打印出标记。另外,步进电机反过来将其位置及状态信息传给 fpga,由 fpga形成状态指令,并通过单片机反馈回打印控制系统,由打标控制系统进行综合,进而形成新的标记指令。2.4 系统功能根据总体方案设计,对待开发的气动打标机归纳出如下功能: 参数管理功能实现系统参数的设置、保存、调用等。管理的参数有图形显示参数、刻印参数、打印方式等参数。 加工控制功能具有自动加工、手动连续或暂停/继续加工、手动设置刻印针头的参考点、急停等功能。系统根据加工控制指令和所设置的参数,进行插补计算,发送控制信号到步进电机驱动器和高压气源电磁阀,控制打印标记。 usb 通信功能通过 usb 接口,实现上位机和单片机和 fpga 的数据通讯。一方面将插补量和控制信息传递给单片机和 fpga;另一方面打标机状态信息和加工信息传至上位机。 打印演示功能图形化可视界面,显示和打印具有相同效果,在打印的同时演示打印路线. 图形管理功能按照用户要求,对所打印的气动打标机运动轨迹图形进行编辑操作,如字体变换等。此外可进行放大、缩小、旋转、移动和还原等图形变换操作。2.5 本章小结本章首先分析了气动打印机的系统需求,然后对步进电机控制器设计,usb接口芯片选型和软件开发工具选择的多种不同的方案进行筛选,确定系统方案,并对系统的工作原理进行分析,最后总结出系统的主要功能。3 打标机控制器设计3.1 控制器的总体设计控制器是标记打印机系统的硬件核心部分。它的主要功能是处理主机通过 usb接口发送来的数据,传向步进电机,控制打印针在 x、y 平面内运动,同时,控制器控制电磁阀,使打印针头作高频微冲击运动;将步进电机的位置和状态信息形成指令,再通过 usb 接口实时反馈到上位机。上位机的数据通过usb接口发送到控制器后,经过cp2102,将其转换为rs232信息流格式发送给单片机,如果该数据是画线指令或操作指令,发送该指令给fpga;如果该数据是复位、停止的中断信号,则直接处理中断,并将处理的结果反馈给上位机。按钮指令包括复位和急停,由单片机直接处理。总结得出,cp2102 完成 usb/rs232 数据转换工作;单片机主要完成与 pc 机通信、中断处理和 fpga 控制的工作;fpga 主要完成指令处理及步进脉冲、步进方向和电磁阀控制等工作。3.2 接口芯片通用串行总线 usb,它具有即插即用、传输速度快、通用性强、易扩展等优点。usb 接口代替传统串行口已经成为整个行业的发展趋势。一般 usb 开发需要了解 usb 协议、固件编程、驱动程序开发等,这对很多开发者来说是既烦琐又不是必须掌握的。采用cp2102 桥接器,可以无需改变现存系统固件,也无需编写驱动程序,只要具备一定的计算机应用程序的知识,就可以轻松开发出 usb 接口的产品。 cp2102 内部主要由 usb 收发器、电源管理器、48mhz 晶体振荡器等构成。usb 收发器可以提供 usb 2.0 规范下的全速物理接口。内含两个双数据缓冲区,一个是 576 字节接收缓冲区,另一个是 640 字节发送缓冲区,它们均用于 usb 数据与 rs232 数据的交换缓冲区。usb 功能控制器包括串行接口引擎、usb 协议引擎和收发缓冲控制器等的功能。提供六个控制脚(rts 发送请求、cts 线路畅通、dtr 数据终端准备好、dsr 数据准备好、dcd 数据载波检测、ri 响铃指示器)。3.3 单片机设计由于本系统的主要指令处理及步进脉冲形成由 fpga 实现,所以单片机的处理能力要求不高,故我们选择美国 atmel 公司生产的 at89lv51 单片机。at89lv51 单片机是一种低电压、高性能的cmos 8 位单片机,兼容标准 mcs-51指令系统,提供许多高性价比的应用场合。每片 at89lv51 提供一个全双工串行通信口,能够满足系统的串行通信要求。at89lv51 单片机内部有 4k 字节的 flash闪速存储器,它在出厂时已处于擦除状态,用户随时可对其进行编程,编程接口可接收高电压(+12v)或低电压(vcc)的允许编程信号。低电压编程模式给用户提供在线编程的条件,方便用户编程和调试;高电压编程模式可以与通用的 eprom 编程器兼容。本系统中,单片机所实现的功能较简单。程序首先进行单片机的初始化工作,接着程序进入到查询接口的循环中,当有数据到达时,程序对数据进行判断,如果该数据是画线指令或操作指令,发送该指令给 fpga;如果该数据是复位、停止的中断信号,则直接处理中断,并将处理的结果反馈给上位机。3.4 fpga控制器设计fpga 的数据处理部分是控制器的关键环节,数据传输和整个控制器单元都集成在 fpga 内部,它决定了系统的最终输出。fpga 是英文 fieldprogrammable gate array 的缩写,即现场可编程门阵列,它是在 pal、gal、cpld 等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(asic)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。fpga 采用了逻辑单元阵列 lca(logic cell array)这样一个新概念,内部包括可配置逻辑模块 clb(configurable logic block)、输出输入模块 iob(input outputblock)和内部连线(interconnect)三个部分。3.5运动控制方法运动控制系统中,控制方法对于其实现不同的性能要求起着关键的作用。在fpga中的控制方法主要包含插补运算和升降频控制两部分,下面对其分别进行阐述。3.5.1插补运算实际加工中有自由曲线、曲面、方程曲线和曲面体构成的复杂零件轮廓,还有一系列实验或经验数据表示的、没有表达轮廓形状的曲线方程的曲线,理论上,我们应该保证针头中心轨迹应与零件轮廓形状一致,但实际上,我们只能通过一系列的直线或圆弧去逼近它。插补的任务就是根据进给速度的要求,在轮廓起点和终点之间计算出若干个中间点的坐标值。由于每个中间点计算所需的时间直接影响系统的控制速度,而插补中间点坐标值的计算精度又影响到系统的控制精度,所以插补算法对整个系统的性能指标至关重要。本设计采用逐点比较法,又称为区域判别法、代数运算法。它适合以步进电机为执行机构的开环数控系统。3.5.2升降频控制步进电机有一技术参数是空载启动频率,即步进电机在空载情况下能够正常启动的脉冲频率,如果脉冲频率高于该值,电机不能正常启动,可能发生丢步或堵转。在有负载的情况下,启动频率应更低。如果要使打标机高速打印,脉冲频率应该有加速过程,即采用升降频控制。升降频控制方法很多,如线形升降频、s型曲线升降频、指数曲线升降频等。因fpga的计算能力有限,本文采用线性升降频。加速方程是: (3.1) 已知启动频率 (一般大于突跳频率)和加速度 (在加减速过程中保持不变),可对直线进行离散,求出对应的频率与时间间隔,转化成定时常数及脉冲数。将定时常数按升序排成一个表,按顺序方式查表得的数值作为软件定时器0的计数初值,就可以实现升速控制。反之则实现降速控制。因步进电机的电磁转矩和转速是非线性关系,因而加速度与频率也不是绝对的线性关系。所以它不能使步进电机在最短的时间内升到最高的频率,且保证力矩最大,适用于要求不太高的场合。3.6 本章小结本章首先对控制器进行总体设计,得出控制器的系统结构,并分别对控制器中的关键部分单片机和fpga,进行设计。对本系统中fpga所用插补运算和升降频控制两种控制方法进行介绍。最后对通信模块、电磁阀驱动电路、核心控制电路和外部信号管理模块电路进行设计。4 打标机控制软件设计打标机控制系统是由软件和硬件组成的,同一般的计算机系统的硬件和软件在逻辑上是一致的。所以一个系统功能的强弱,不但取决于系统的硬件,也取决于系统的软件。4.1 c#语言介绍c#(c sharp)是微软(microsoft)为.net framework量身订做的程序语言,c#拥有c/c+的强大功能以及visual basic简易使用的特性,是第一个组件导向的程序语言,和c+与java一样亦为对象导向程序语言。4.1.1 c#简介c sharp(又被简称为c#)是微软公司在二ooo年六月发布的一种新的编程语言,并定于在微软职业开发者论坛(pdc)上登台亮相.c#是微软公司研究员anders hejlsberg的最新成果.c#看起来与java有着惊人的相似;它包括了诸如单一继承,界面,与java几乎同样的语法,和编译成中间代码再运行的过程.但是c#与java有着明显的不同,它借鉴了delphi的一个特点,与com(组件对象模型)是直接集成的,而且它是微软公司.net windows网络框架的主角。4.1.2 c#定义微软c#语言定义主要是从c和c+继承而来的,而且语言中的许多元素也反映了这一点。c#在设计者从c+继承的可选选项方面比java要广泛一些(比如说structs),它还增加了自己新的特点但它还太不成熟,不可能挤垮java、c#还需要进化成一种开发者能够接受和采用的语言。 c#更像java一些,虽然微软在这个问题上保持沉默。这也是意料中的事情,我觉得,因为java近来很成功而使用java的公司都报告说它们在生产效率上比c+获得了提高。 4.1.3 c#语言的特点(1)简单在你使用c+时,您最害怕的是什么?我想大多数人的答案会是:指针.一个让程序员们震惊的事实是:在c#中,没有了指针。默认地,您的代码工作在一种受控的环境中(谁,是谁在控制我的代码?),在那里不允许进行直接存取内存等不安全的操作。除此之外,还有很多变化,都无不体现了c#语言的简约之美。(2)现代 有很多语言,包括经典的c,细细想来,它们都没有因为时代的变化而发生多少跟近,有的甚至二十年来不曾有任何修正。c#语言在他的数据类型、垃圾回收、内存压缩、异常处理等诸多方面都显示出了它绝对的现代性。(3)版本控制在过去的几年中,几乎所有的程序员都至少有一次不得不涉及到众所周知的dll地狱问题。该问题起因于多个应用程序都安装了相同dll名字的不同版本。有时,老版本的应用程序可以很好地和新版本的dll一起工作,但是更多的时候它们会中断运行。现在的版本问题真是令人头痛。就象您将在今后所看到的,c#可以最好地支持版本控制。尽管c#不能确保正确的版本控制,但是它可以为程序员保证版本控制成为可能。有这种支持,一个开发人员就可以确保当他的类库升级时,仍保留着对已存在的客户应用程序的二进制兼容。(4)兼容一种新语言的出现,总是要顾及对之前的技术体系是否兼容的问题,比如说java,它的出现彻底背弃了之前处于统治地位的com技术体系,以至于java现在很难去瓦解vc、vb和delphi等阵营,它只能在此之外的其他技术和市场领域扎根,比如说web、服务器、嵌入式编程等。4.2 truetype字体自动打标机软件设计4.2.1 truetype矢量字库文件(1)truetype中的表定义truetype文件是用树形表组织起来的。文件首部12个字节,记录了ttf文件的版本号、描述表数目,以及描述表快速查找范围、入口选择、范围调整等信息。接着是描述表目录。每个目录项有16个字节,包括:描述表名称(4个字节)、描述表内容的校验和、描述表的位置偏移量和长度等。最后是具体的文件描述表。常用的有19个:9个可选表,10个必备表。在必备表中,代码映射表(cmap)、轮廓数据表(glyf)和轮廓数据索引表(loca)三张表最为重要。其中,camp表给出了字符代码到文字序号的映射,用户使用turetype文字,turetype解释器通过查找此表而得到文字序号,再从loca表获得对应文字轮廓数据的存放地址。camp包含了若干个子表,对应不同的译码系统.(2) truetype字符数据的读取truetype文件中某个字模的字形数据读取,一般有两种方法:直接从truetype文件中读出,再由程序根据truetype规范进行解释、转换为易于处理的格式。将字库装载进操作系统,利用操作系统内含的truetype解释器对所读数据进行解释,再对所获结果进行变换处理,以获取所需的信息。前一种方法实现过程比较繁琐,本文利用第二种方法实现字符数据的读取。首先,在windows下由程序把字库装载入系统,选入当前设备环境,由getglyphoutline函数获取某一字形信息,其函数结构如下:public static extern uint getglyphoutline(intptr hdc, uint uchar, uint uformat,out glyphmetrics lpgm, uint cbbuffer, intptr lpvbuffer, ref mat2 lpmat其中,hdc为设备环境句柄, uchar为字模的编码, uformat一般为ggo-native,表示返回字的曲线数据信息,lpgm是glyphmetrics结构的指针,cbbuffer表示执行该函数后返回数据的字节数,lpbuffer和lpmat2分别为存放返回数据的缓冲区指针和字形变换矩阵指针。返回的曲线轮廓数据存放于lpbuffer所指的缓冲区中,调用的时候分两次调用,第一次返回查询数据的存储空间大小,第二次调用将该数值赋给cbbuffer,取得的数据信息保存在lpgm的glyphmetrics结构体中。若一个字模由若干个闭合的轮廓(contour)组成,contour的起始由ttpolygonheader来描述:structlayout(layoutkind.sequential)public struct ttpolygonheaderpublic int cb;public int dwtype;marshalas(unmanagedtype.struct)public pointfx pfxstart;其中,cb为该contour数据的字节总数,dwtype必须是tt_ polygon _ type,否则出错,pfxstart为该contour起始点指针,紧随着ttpolygonheader是若干个ttpolycurve,是对该contour的具体描述,其结构如下:structlayout(layoutkind.sequential)public struct ttpolycurveheaderpublic short wtype;public short cpfx;marshalas(unmanagedtype.struct)public pointfx apfx;其中,wtype指明curve的类型,分tt_ prim_ line (直线)和tt_prim_qspline(二次bezier曲线)两种,cpfx为curve描述点数组的个数,apfx则为curve描述点数组。(3) 曲线轮廓的多边形表示打标机在机械结构上由x与y两个方向的步进电机控制,曲线的绘制,必须通过将其变成小的折线逼近实现。直线段参数化 (4.1)其中:u0,1,p0为直线的起点,p1为直线的终点。二次bezier曲线参数化 (4.2)其中:t0,1,di为第i个控制顶点,i =2,3,n。将曲线轮廓中的二次bezier曲线通过最小二分法转换成一组能够保持曲线轮廓形状的小折线。这样,原有的字体轮廓数据就从用曲线轮廓表示转变为用多边形表示,用一组点及其先后顺序来描述廓。一个文字轮廓由多个外环和内环构成,设定外环多边形的方向为逆时针方向,内环多边形为顺时针方向。将得到的多边形的点连接起来就得到了相应文字的空心字效果。将得到的点信息和落笔、起笔控制信号发送给打标机,就可打出相应的字形。(4) truetype字符数据的绘制使用getglyphoutline函数得到字形数据后,将得到的各坐标和控制信号发送给打标机的同时,在计算机屏幕上对各坐标点连接绘制,可实现打标机打标过程的动态显示。在主窗口上放置一个picturebox控件、一个edit控件、三个button控件。step 1在button1的click事件中加入代码,以便提取字符的轮廓数据,并在画布上显示字符和输出控制点的坐标值。step 2布置画布,确定组件使用的字体、笔的属性以及光标的初始位置。step 3设置确定字符旋转的转换矩阵的类型为不用变换。step 4获得字符的位置矩阵,存入metrics。step 5设置显示字符轮廓的范围大小。step 6对输入的字符进行分类计算:字符ascii码值大于127,判定当前字符为汉字符;否则,为字母或数字。step 7获得当前字符数据数组的大小。step 8读入数据置缓冲区。step 9分析数据并绘制字符轮廓图像。step 10存储多边形顶点,计算bezier曲线的控制点坐标。step 11封闭多边形,绘制truetype字符的外部轮廓曲线,并将有用点信息存入文件中。step 12在button2的click事件中加入代码,清除上一次操作所产生的点坐标。step 13在button3的click事件中加入代码,将文件中的点信息读出,并通过usb接口驱动电机行进打标,同时将画笔图标的笔尖点移动到该点,改变该点颜色,实现动画达标效果在c#中,绘制空心字用drawpolygon(brush b,points pp)。其中,b为画刷,pp为提取出的多边形顶点数组。绘制黑色实心字用fillpolygon(brush b,points pp)。其中,b为画刷,外轮廓设置为黑色,内轮廓设置为白色,pp为提取出的多边形顶点数组。若要实现对字型的旋转效果,可以对step3中的旋转矩阵作以下修改:matrix.em11.value = cos(rotate)matrix.em12.value = sin(rotate)matrix.em21.value = -sin(rotate)matrix.em22.value = cos(rotate)其中,rotate为希望旋转的角度值。4.2.2 字体轮廓交叉处理单个字体由多个环组成,如果字体环出现交叉,需要对其进行消隐处理。字体轮廓信息由直线和bezier曲线控制的多边形组成的环构成。单个字体环相交的处理可以转换为:直线与直线求交,直线bezier曲线求交,曲线间的求交。这3种情况最终可以统一转化为直线段之间的求交。bezier曲线恒位于其控制顶点的凸包内,所以,bezier曲线控制顶点形成的包围盒不相交则曲线必定不相交;bezier曲线的控制顶点相交则曲线可能相交也可能不相交。当两曲线段的控制顶点相交后,采用折半分割bezier曲线算法可求出交点。将bezier曲线平均分割成两段,求出bezier点,两两求交,获得新的相交的包围盒,并记录其在曲线段的前1/2处还是后1/2处;继续迭代求解,当达到足够平坦的条件后,曲线的交点就相当于控制多边形的交点,同时记录下交点在曲线段中的位置记为i0。比如,经过5次迭代,每次相交多边形都位于曲线段的后1/2处,从而可知,交点在整曲线段的第13/32处。 同理,直线和bezier曲线求交只需对bezier曲线进行折半分割,然后遍历,满足结束条件后可获得曲线段和直线的交点。4.3 thorx6工业标记印控制系统介绍4.3.1主界面双击桌面的thorx6图标,thorx6工业标记刻印控制系统(以下简称thorx6)开始启动,稍等几秒系统启动完成,出现thorx6主界面,如下图:图4.1 thorx6主界面thorx6的文件操作主按钮,点击此按钮将打开文件菜单,文件菜单里包含了所有文件操作的相关功能,例如文件打开,文件保存等。thorx6的功能面板切换按钮,点击相应的文字可切换thorx6的功能面板。 图4.2 thorx6的功能面板thorx6的功能面板,功能面板里显示了thorx6不同的功能界面。thorx6中间的空白区域是所见即所得式的标记编辑区,以10cm10cm每格显示了当前刻印机所能刻印的最大范围。thorx6最下方是状态栏,状态栏将显示thorx6的提示信息以及刻印数量信息。4.3.2 thorx6操作(1)快速入门在这一节中,我们将简单介绍如何快速创建一个文本标记和一个流水号标记,并对这两个标记进行对针,确定最终在工件上的刻印位置。点击标记功能面板的添加标记按钮,然后在弹出的标记类型列表中选择一个将要建立的标记类型,这里我们选第一个文本,选择完成后在thorx6中间的空白区域也就是标记编辑区点下鼠标左键,一个文本标记即按默认的参数被建立了起来。注意此时的标记功能面板,标记功能面板的标记组中已经将我们刚建立的标记的相关参数显示了出来,如下图:图4.3 显示参数这些参数跟标记类型相关的,也就是说,在建立标记时选择不同的标记类型,其相关的参数也是不一样的,现在标记功能面板显示的是我们刚建立的文本类标记的参数,这些参数包括标记的位置、内容、字体等等。至此,这个文本已经被成功建立。现在我们用同样的方法,再建立一个标记,只不过这一次,我们将建立一个“流水号”标记。在添加标记按钮弹出的标记类型列表中还是选择文本,同样的,在标记编辑区中点下鼠标左键,然后在标记功能面板的内容参数中,将默认的“abc123”更改为“12345”,更改内容并不是必须的,这里我们更改它只是为了区别两个标记的内容。接下来,在标记功能面板的右边,点击编码类型按钮,然后在弹出的编码类型列表中选择流水号,注意此时标记“12345”已经变为红色,红色表明此标记的编码类型为流水号,同时,在标记功能面板的编码组中,已经可以看到流水号编码的相关参数。这些参数是跟标记的编码类型相关的,也就是说,选择不同的编码类型,其相关的参数也是不一样的。现在显示的是流水号编码的相关参数。至此,这个拥有流水号编码的标记已经被成功建立。可能您建立的标记的位置跟我做的这个例子中的不一样,没关系,您可以使用键盘上的方向键移动最后建立的标记,每点击一次方向键,标记的位置将按您移动的方向移动1mm。在移动的过程中,您可以注意刻印机头的刻印针,刻印针将随“12345”位置的改变而移动,这是软件的一大功能,每次您改变标记的位置时,刻印针都会自动对准到新的标记位置。还有另一个更快捷的方法改变标记的位置,先使用鼠标点击选择标记,标记被选择后被一个外框包围,对准这个被外框包围的标记,按住鼠标左键不放,可直接将标记拖动到一个新的位置。同样的,当您拖动了标记的位置后,刻印针会自动对准到新的位置。使用刻印控制软件的这一自动对针特性,可以很方便的将标记位置移动到实际工件的真实刻印位置上去。将两个标记移动到合适的位置,然后我们可以尝试在工件上刻印这两个标记,刻印的操作很简单,点击刻印打开旋印面板,然后点击开始刻印即可,或是直接按下刻印操作的快捷按钮f9,现在刻印机开始工作,刻印机将在您的工件上刻印出这两个标记的内容,稍等刻印机工作完成,会发现流水号标记的内容已经发生了改变,如下图:图4.4 流水号标记流水号标记的内容由“12345”改变为“12346”了,这就是流水号编码的作用,每一个使用了流水号编码的标记,都将在刻印完后自动累加一个数,如果您没有改变流水号编码的参数,那么将是累加“1”。至此,我们已经初步了解了刻印控制软件的使用方法,更多的功能将在后面的章节中进行单独介绍。 (2)文件操作点击thorx6的文件操作主按钮,弹出文件菜单,如下图:图4.5 文件操作主界面b打开:打开一个文件,如下图:图4.6 文件打开界面“打开”窗口将列出电脑里相应文件夹中所有的刻印文件,选择其中一个,点击窗口中的打开按钮或直接按下enter键,文件即被打开。文件打开后,文件的名称将显示thorx6窗口的标题栏中。c保存:将当前文件保存到电脑中,如下图:图4.7 文件保存界面“保存”窗口列出了电脑里相应文件夹中所有的刻印文件,在“文件名”栏中输入一个文件名,然后点击窗口中的保存按钮或直接按下enter键,文件即被保存。注意,保存功能只有当文件内容发生变化后才能被执行,这意味着保存一个刚新建的文件或刚打开的文件是没有意义的。d另存为:将当前文件以另一个名称保存。操作同保存。e最近使用的文件:这个列表中将显示出最近使用过的几个文件,单击其中一个文件,将可以很方便的快速打开它。(3)标记的建立与编辑建立文字类标记文字类标记的内容可以由英文字符、数字、符号、中文字符组成,并具有字体的相关参数。刻印控制软件中包含2种文字类标记,一种为标准的文本,一种为扇形文本,这两种标记的唯一区别只是排列方式不同,其基本的参数大多都是相同的,标准文本标记的文字是以常见的直线方式进行排列,而扇形文本则是根据指定的扇形半径与起始角进行排列。这两类标记可在添加标记按钮所弹出的标记类型列表中进行选择,如下图:图4.8 标记类型注意,标记的类型一旦选定,将无法再改变。由于文本与扇形文本的建立与编辑方式基本相同,我们将一起介绍它们的使用方法。在标记类型列表中选择好文字类型的标记后,其相关的参数将被显示在标记面板中,这在2.1快速入门一节中已有介绍,这里我们将一一介绍这些参数的作用。a内容:顾名思义,这里可以更改标记的文字内容。bx、y、z:这三个参数用于指定标记在刻印区域中的位置。这个位置根据文字标记的类型不同而有所区别。标准文本标记这个位置是指标记的左下角,而扇形文本是指标记排列时扇形的圆心。注意这里的z,z位置只在启用了z轴升降功能后有效,当您的刻印机具备升降功能时,z将可以设置标记刻印平面的高度。c角度:标记绕x、y指定位置旋转的角度。对扇形文本来说,这个角度就是扇形排列的起始角度。d英文字体:标记内容中英文、数字、符号使用的字体名称e汉字字体:标记内容中汉字使用的字体,注意当您在内容中输入了汉字后,这个汉字字体必须选择一个有效的汉字字体,否则创建的标记可能无法正常显示汉字或者直接导致标记无效。f字高、字宽:标记内容中字符的尺寸。需要注意的是,这里的字高字宽并不能绝对限制字符的尺寸,它只是一个参考尺寸,实际的字高字宽会因不同的字体而有所变化。比如当字宽都设为5mm时,数字字符“1”一般来说都到不达5mm的宽度,而且随字形变化这个宽度也有所区别,比如字体“isocp.tef”的数字字符“”要比字体“stencil.tef”的数字字符“”略宽一些。g字间距:标记内容中字符与字符间的距离。h半径(扇形文本):扇形外切圆的半径。i字符方向(扇形文本):决定扇形排列时字符的顶端是朝向圆心或是背离圆心,不同方向的效果如下图所示:文字类标记的编码 只有文字 类标记可以正确定义标记编码,为非文字类标记定义编码将是没有意义的。标记编码将决定文字类标记在每一次刻印完成后字符发生的变化。比如一个拥有“流水号”编码的文字类标记将在每一次刻印完成后自动加上数值“1”。 标记的编码可用标记面板中的编码按钮进行选择。 文字类标记有4种编码可以选择,下面一一列出: a无编码:顾名思义,无编码的意思就是这个标记的内容不需要在每一次刻印完成后发生改变,因此这个编码也没有参数。 b流水号:又名序列号,一般来说,“流水号”都是由数字字符组成的,或至少标记内容的末尾是数字字符,如果标记内容的末尾不是数字字符,这个标记将无法进行刻印,因为其内容不符合“流水号”的编码格式。拥有“流水号”编码的文字类标记,在每次刻印完成后都将进行一次数值运算,运算的结果由“流水号”的参数来决定。1.增量:标记内容的数值在每次运算时增加的数值量,一般来说是1。2.重复次数:标记内容的数值在刻印多少次后才进行一次运算。3.最小值:标记内容的数值允许的最小值,如果数值在运算后小于这个值,将自动改变为最小值。4.最大值:标记内容的数值允许的最大值,如果数值在运算后大于这个值,将自动改变为最小值。5.禁忌数:规定标记内容里不允许出现的数字。比如一些地域禁忌数字“4”,那么可以在这里填入“4”,在运算时,标记内容将自动跳过数字“4”。比如“123”在刻印完成后直接改变为“125”。注意,无论标记内容的数值如何运算,都不会改变标记内容的字符长度,这意味着,当流水号“ab9999”增加“1”会变为“ab0000”,而不是“ab10000”。cvin:vin(vehicle identification number),中文名叫车辆识别代码,是制造厂为了识别而给一辆车指定的一组字码。vin按一定规则是由17位字母及数字组成,其中第9位为检验位。vin编码的参数和“流水号”基本相同,不同的是,vin可以设置代码末尾的流水号的长度,例如,当流水号长度设置为4时,vin码“abcdefgh7jk889999”在刻印完成后将改变为“abcdefgh2jk880000”而不是“abcdefgh8jk890000”。d日期:日期编码类型将根据其唯一的“格式”参数直接改变标记的内容,无论标记内容是什么,都将被改变为由“格式”规定的日期时间代码。“格式”是由一组特殊代码组成的字符,这些格式化的字符决定了标记的内容。格式化字符的定义请参见附录1。建立图形标记建立图形标记的方法同文字类标记相同,但图形标记的参数却完全不一样,在标记类型列表里选择图形,然后在标记编辑区域中点击鼠标左键,此时一个空的标记图形将被建立。在标记面板中点击浏览按钮,打开一个文件对话框,然后在这个文件对话框里选择一个合适的图形文件,图形标记即被成功建立。 参数x、y、z、旋转角度的意义同文字类标记是相同的,“宽度”、“高度”用于决定图形的实际外观尺寸,“保持比例”选项将使图形始终保持原始的内部比例,这意味着,当您更改图形的宽度时,图形的高度将按图形本身的比例自动计算出来,同样的,当您更改图形的高度时,图形的宽度也将按图形本身的比

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论