(机械制造及其自动化专业论文)激光扫描控制系统与软件的研究.pdf_第1页
(机械制造及其自动化专业论文)激光扫描控制系统与软件的研究.pdf_第2页
(机械制造及其自动化专业论文)激光扫描控制系统与软件的研究.pdf_第3页
(机械制造及其自动化专业论文)激光扫描控制系统与软件的研究.pdf_第4页
(机械制造及其自动化专业论文)激光扫描控制系统与软件的研究.pdf_第5页
已阅读5页,还剩54页未读 继续免费阅读

(机械制造及其自动化专业论文)激光扫描控制系统与软件的研究.pdf.pdf 免费下载

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

文档简介

激光扫描控制系统与软件的研究摘要激光扫描系统的工作方式主要有两种:一是光机扫描,二是声光扫描。光机扫描是用机械装置驱动反射系统旋转以实现激光光束的扫描,其原理简单,扫描范围大,但机械系统存在机构精度差、稳定性较难控制等不足。声光扫描是利用超声波驱动声光晶体对激光发生作用,使光束发生偏转来实现扫描,具有控制容易、扫描速度快、系统结构简单等特点,其主要缺点是光束扫描角小。本文针对激光扫描控制系统与软件进行了研究,系统采用光机扫描方式,主要由激光扫描控制系统、机械扫描系统及激光发射器组成。它具有多种图片采集,智能生成扫描路径,高速扫描、速度可调、运行平稳、精度高等特点,可用于机械加工、多媒体演示欣赏、舞台装饰等多项领域,应用广泛。激光扫描控制系统由硬件部分和软件部分构成,硬件部分制作成标准的计算机外设,控制软件读入不同的的图像文件,经过解码之后将控制信号发送到l p t 端口以对扫描过程进行控制。机械扫描系统通过打印端口l p t 与p c 机相连。机械扫描系统由两台高速步进电机及驱动器组成,亦可采用两台伺服电机及驱动器构成,两台电机垂直放置,两块小的平面镜粘在电机的轴上。电机的转动驱动平面镜的偏转,从而使对激光束产生偏转,两块平面镜一块控制x 轴方向上的位移,另一块控制y 方向上的位移,两块振镜的高速震动使得光点在屏幕上快速移动,由于人眼的视觉暂停效果,就能在屏幕上看到图案。步进电机可以直接和计算机通过并行通信端口相连接,接受数字信号。这样有利于软件编程的使用和控制。相对以往通过p c t 转接卡实现,要方便了许多。伺服电机及驱动器经d a 转换亦可由计算机并行口连接控制本系统软件首先是通过几个基本处理,例如二值化处理,轮廓提取,灰度变换,边缘检测,细化处理。然后通过某种算法生成扫描路径文件。扫描路径再通过事先算好的索引值变换成计算机所需要的数字信号。最后通过计算机并行通信端口发给电机驱动器。从而驱动电机实现激光扫描。关键词:激光高速扫描,图形软件,位图图象丝些塑堑丝型墨丝室鏊丝丝堡至t h el a s e rs c a n n l n gc o n t r o ls y s t e ma n dr e s e a r c ho ft h es o f t w a r e sa b s t r a c tt h el a s e rs c a n n i n gs y s t e md e v e l o p m e n to r i e n t a t i o na p p r o b a t o r yp o s s e s s e st w o :o n ei sl i g h te n g i n es c a n n i n gt h eo t h e ri sf a m es c a n n i n g l i g h te n g i n es c a n n i n gi si nt h ew a yo fs p u r r i n gr e f l e c t st oc i r c l ew i t ht h em a c h i n eu n i t t h er u l ei se a s y ,s w e e pr a n g eg r e a t l y ,y e tt h ep r o b l e mi st l l a tt h em a c h i n es y s t e mi st h eb a da c c u r a c ya n dt h es t a b i l i t yi sh a r d e rd o m i n a t i o na n ds oo n f a m es c a n n i n gf st 1 1 ea c t i o nt h a tu t i l i z e st h eu l t r a - a u d i b l es o u n dt of o c u st h el a s e r ,t h a tc a u s e st h el i g h tb e a mh a p p e ny a w i n gt oa c h i e v es c a n n i n g ,i ti sc o n t r o l l e de a s i l y ,t h es c a n n i n gs p e e dq u i c k l y ,t h ea r c h i t e c t u r ei ss i m p l y ,y e tt h ed e f e c ti st h a tt h el i g h tb e a ms w e e pa n g l ei sl i t t l e t l l i st e x tr e s e a r c h st h el a s e rs c a n n i n gc o n t r o ls y s t e ma n ds o f t w a r e t h es y s t e ma d o p t st h ew a yo fl i g h tm a c h i n es c a n i ti sm a i n l ym a d eu po ft h el a s e rs c a n n i n gc o n t r o ls y s t e m ,m a c h i n es c a n n i n gs y s t e ma n dl a s e r sb l a s t o f fm a c h i n e i th a sv a r i o u sp i c t u r e st oc o l l e c t ,t h eb r a i n p o w e rs c a n n i n gt h ep a t h ,t h eh i g hs p e e ds c a n ,t h ea d j u s t a b l es p e e da n ds t e a d yr u n ,t h eh i g ha c c u r a c ye t c i tc a nb eu s e df o rm a c h i n e 。sp r o c e s s ,t h em u l t i m e d i as h o wt oe n j o y ,t h es t a g ed e c o r a t i n g t h ea p p l i c a t i o ni se x t e n s i v e l y ,t h el a s e rs c a n n i n gc o n t r o lt h es y s t e mm a k e su po fh a r d w a r ea n ds o f t w a r e p a r t so fh a r d w a r eb e c o m es t a n d a r dp a r t so fc o m p u t e ro u t s i d e t h ec o n t r o ls o f t w a r er e a d si n t ot h ed i f f e r e n tp i c t u r ed o c u m e n t s 。s e n d so u tc o n t r o ls i g n a lt ol p tp o r ta f t e rd e c o d i n gt oc o n t r o ls c a r fp r o c e s s e s t h em a c h i n es c a n n i n gs y s t e mc o n n e c t st op cm a c h i n e sb yp r i n tt h ep o r tl p t t h em a c h i n es c a nt h es y s t e mm a k e su po ft w ot h eh i g h - s p e e ds t e p p e rm o t o r sa n ds t e p p e rm o t o rd r i v e r s ,t w os e r v i c em o t o r sc a r la l s ob eu s e di n s m a do fs t e p p e rm o t o r s 1 1 1 em o t o r sp e r p e n d i c u l a r l yr e p l a c ee a c ho t h e r t w op i e c e so fs m a l lf l a ts u r f a c em i r r o r sg l u ei nt h ea x e so ft h es t 印p e rm o t o r s t e p p e rm o t o r sw h i c ht u r nt om o v ea r o u s et h ef l a ts u r f a c em i r r o rt od e f l e c t t h u sm a k ep r o d u c et ot h el a s e rb e a mt od e f l e c t o n eo f t w op i e c e so f f i a ts u r f a c e sm i r r o rc o n t r o l sm o v ef o rd i s p l a c e m e n to f t h exa x e s a n o t h e ro n ec o n t r o l sm o v ef o rd i s p l a c e m e n to f t h eya x e s h i g h s p e e dt h ev i b r a t i o no ft w op i e c e so ff l a tt h em i r r o rm a k e sl i g h tp o i n tm o v eq u i c k l yo nt h es c r e e n ,b e c a u s eo f t h es e n s eo fv i s i o np a u s er e s u l to f p e r s o n se y e ,h u m a nc a ns e et h ep a t t e r no nt h es c r e e n s t e p p e rm o t o r sc a nc o n n e c tt oc o m p u t e rt h r o u g h tt h ec o m p u t e rp a r a l l e lc o m m u n i c a t i o np o r t s ,a c c e p t i n gt h eh u m e r i c a ls i g n a l i tj sa d v a n t a g e o u st ot h eu s a g ea n dt h ec o n t r o lo ft h es o f t w a r e t h u si ti sc o m p a r a t i v e l yc o n v e n i e n c e rt h r o u g hap c ib e f o r e t h es e r v i c em o t o r sc a nb ec o n t r o l l e df r o mc o m p u t e rl p tb yd as w i t c h t h i ss y s t e ms o f t w a r ei sf i r s t l yt op a s saf e wb a s i cp r o c e s s i n g ,f o re x a m p l et h eb l a c k w h i t ep r o c e s s i n g ,t h eo u t l i n ep i c k i n g u p ,at r a n s f o r m a t i o no fa s h ,t h ee d g ee x a m i n a t i o n ,t h i np r o c e s s i n g t h e ni tp a s s e sac e r t a i nc a l c u l a t ew a yt om a k es c a nt h ep a t hd o c u m e n t t h e ns c a nt h ep a t hb yp a s s i n gt oc a l c u l a t et h eg o o di n d e xv a l u et r a n s f o n n a t ei n t ot h en u m e r i c a ls i g n a lt h a tc a l c u l a t o rn e e d t h en u m e r i c a ls i g n a li ss e n d e dt om o t o r sd r i v e r sb yp a r a l l e lc o m m u n i c a t i o np o r tt h u si tc a r r y so u tt h el a s e r k e yw o r d s :l a s e rh i g h s p e e ds c a r m i n g ,f i g u r es o f t w a r e ,b i t m a p=型i ! 三些叁兰堡圭兰篁篁塞第一章绪论1 - 1 激光扫描技术的背景及现状自激光在1 9 6 0 年问世以来,就由于其出色的性能:高单色性,高方向性,高相干性等优点,使其广泛的应用于各种部门中。早期的激光应用主要分布于军事,工业等领域,对响应部门的发展起到了不可估量的作用。随着科学技术的飞速进步,尤其是在近年才逐渐发展并成熟起来的多媒体技术,慢慢的融入到各种部门,激光与其结合的技术也相应的得到发展和促进。激光与计算机技术,尤其是多媒体技术的结合给各个工业,商业,部门带来了丰厚的利润。激光是= 十世纪晟大也是最实用的发明,它是与热核技术、半导体技术、电子计算机技术和航天技术相媲美的一个举世瞩目的重大科技成就。激光的应用十分广泛,在工业、军事、医学、物理、测绘、通讯、建筑、分子光谱学、激光唱片、远距离检测大气污染、全息摄影等等许多领域都能见到它的身影,其使用价值和应用成果都十分突出“。激光扫描加工在机械制造领域中的应用也十分广泛,人们习惯上称之为“激光加工”。激光2 h i 就是将激光光束投射到被加工物体表面,熔化材料改变物体表面性能以及去除材料形成所需的加工表面,从而达到加工的目的。它具有加工速度快、加工精度高、无噪声等特点。由于光束照射到物体的表面是局部的,加工部位温度很高,对非照射部位影响甚微,工件材料的热影响区很小,使工件基本无变形,工具无损耗。由于光束的能量和光束的扫描速度都是可以调节的,故它可以实现各种微细精密加工这是一般机械加工所不具备的。激光的使用,使一些工业部门迅速地改变了许多传统的工艺面貌,形成了一门新兴的加工产业。当前的激光加工主要指用高功率高密度的激光器,通过扫描,对零部件进行切割、焊接、打孔、刻标记、辅助切削、成型、粉末烧结制模和热处理”1 。一激光扫描技术在机械工业领域的应用现状在切割方面,使用大功率的c 0 。连续激光器,将激光光束在工件切口处进行聚焦扫描,熔化切口处的金属,同时喷射惰性气体,吹除切口处熔化的金属,可使切口光洁平直。如果喷射氧气还可提高切割速度。利用激光扫描切割,切缝窄,约为0 1 0 3 m m ,尺寸精确,表面粗糙度好,无毛刺和飞边,材料利用率高,采用一定的扫描方式还能切割出形状复杂、有尖角的金属零件。同时,切害4 时激光与工件表面作用时间短,约为0 1 o 0 1 s ,激光切割的周边热影响层很浅,约为0 0 8 0 1 m m ,激光切割淬火材料时可使其硬度保持不变”。在焊接方面,通常采用1 4 k w 的c o z 激光器。激光光束经导光系统传递到抛物面镜反射聚焦,在焦点附近可达5 0 0 0 2 0 0 0 0 的高温,瞬时将接缝处的金属材料熔化,激光束向前移动,熔化金属凝蚓,形成焊缝,将两块分离的金属板连成一整体。由丁激光光束可利用光导纤维或反射镜任意改变方向,因而能焊接用一般焊接方法难以接近t 件的部位。激光焊接适用于焊接0 1 2 1 2 m m 厚的低合金钢、不锈钢、镍、钛、铝等金属及其合金。采用固体激光器焊接时,由于输出能蛀小( 1 5 0 j ) ,脉冲激光持续时间短 = v a l v e g r a y m a xt h e np i c m r e 2 ( x ,”。t r u ee l s ei fb u f 2v a l v e g r a ya n d ( b u f l v a l v e g r a y m a xa n db u r 2 v a l v e g r a y r m a xa n db u f 3 v a l v e g r a y m a xa n db u f 4 l a s t p o i n t xt h e na r r a y v a l u e t m p ( t o t a l s t e p s ) = u x y 3i f t r a c e p o i n t x l a s t p o i n t yt h e na r r a y v a l u e t m p ( t o t a l s t e p s ) = u x y 2i f t r a c e p o i n t y l a s t p o i n t yt h e na r r a y v a l u e t r n p ( t o t a l s t e p s ) = u x y 4n e x te n ds l l h下面f i n d f l e a d 函数通过扫描寻找一个图像元的起点p r i v a t es u bf i n d h e a d ( )f i n i s h e d = t i ed i mp i ia sb o o l e a nd i mx ,y ,a ,b ,a t o t a la si n t e g e r寻找图象元的起点a t o t a l2p i e t u r e l s c a l e w i d t h + p i c t u r e l s c a l e h e i g h tf o r a = lt o a t o t a lf o r b = 0 t o a lx = l a s t p o i n t x + a by 2 l a s t p o i n t y + bi f x p i c t u r e l s c a l e w i d t h o r y p i c t u r e l s c a l e h e i g h t t h e np i i = f a l s ee l s ep i i = p i c t u r e 2 ( x ,”e n d i fi f p i i = t r u et h e nl a s t p o i n t x = xl a s t p o i n t y = yp i c t u r e 2 ( x ,y ) = f a l s ep i c t u r e l p s e t ( x ,y ) ,r g b ( o ,0 ,2 5 5 )p i c t u r e l r e f r e s hf i n i s h e d = f a l s ee x i ts u be n d i fn e x t b( 依次扫描四边形的四条边,算法同上)n e x t ae n ds u b下面的f i n d t r a c e 函数用来寻找一个图形单元的跟踪路径p r i v a t es u bf i n d t r a c e ( )寻找图形单元的跟踪路径d i ms t o p s c a na sb o o l e a nd i ms t o p t r a c ea sb o o l e a nd i mp i ia sb o o l e a ns t o p t r a c e = f a l s ew h i l es t o p t r a c e = f a l s es t o p s c a n = f a l s ep i i = p i e t u r e 2 ( t r a c e p o i m x + 1 ,t r a c e p o i n t y )i f p i i = t r u et h e nt m c e p o i n t x = t r a c e p o i n t x + lp i c t u r e 2 ( t r a c e p o i n t x ,t r a c e p o i n t y ) = f a l s ep i c t u r e l p s e ( ( t r a c e p o i n t x ,t r a c e p o i n t y ) ,r g b ( o ,0 ,2 5 5 )p i c t u r c l r e f r e s ht o t a l s t e p s = t o t a l s t e p s + 1a l r a y v a l u e t m p ( t o t a l s t e p s ) = d x y ls t o p s c a n = t r u ee n d i fi f s t o p s c a n = f a l s et h e np i i = p i c t u r e 2 ( t r a c e p o i n t x ,t r a c e p o i n t y + 1 )i f p i i = t r u et h e nt r a c e p o i n t y = t r a c e p o i n t y + 1p i c t u r e 2 ( t r a c e p o i n t x ,t r a c e p o i n t y ) = f a l s ep i c t u r e l p s e t ( t r a c e p o i n t x ,t r a c e p o i n t y ) ,r g b ( 0 ,0 ,2 5 5 )p i c t u r e1 r e f r e s ht o t a l s t e p s = t o t a l s t e p s + 1a r r a y v a l u e t m p ( t o t a l s t e p s ) = d x y 4s t o p s c a n2t r u ee n d i fe n d i f( 按右、下、左、上、厶一f 、左f 、左上、上的顺序寻找f 一个黑点)l f s t o p s e a n = f a l s et h e ns t o p t r a c e = t r u ew e n de n ds u b经过路径跟踪之后得到一个数组a r r a y v a l u e ,这个数组记录的就是扫描控制字的索引,将这个数组保存为二进制文件:o p e nf i l e n a m e t m pf o rb i n a r ya c c e s sw r i t ea s 啊t e f i l e n op u t # w r i t e f i l e n o ,1 ,a r r a y v a l u e 0c l o s e 哺t e f i l e n o这样,一个激光扫描文件就生成了。保存文件3 3 - 33 b 代码编译由于激光扫描演示技术是一种大屏幕投影的显示,考虑到大屏幕投影时的图像质量问题,所以在程序中加入了对矢量图形的支持。图形的编码我选用数控机床线切割使用的3 b 代码,3 b 代码不仅能很好的描述矢量图形的直线和圆弧还能很好的进行轨迹的控制,所以在本程序设计中我用这种代码来描述简单的矢量图形”“。3 b 格式在数控机床的线切割上是结构比较简单的一种控制格式,它是以x 向或y 向溜板进给计数的方法决定是否到达终点。它的指令格式如下:bxbybjgzb 为分隔符;x 、y 、j 为数值,最多6 位:j 是计数长度;g 为计数方向,有x 和y 两种;z 为加工码,有1 2 种,即l 1 、l 2 、l 3 、l 4 、n l 、n 2 、n 3 、n 4 、s l 、s 2 、s 3 、s 4 。以上的x 、y 均取绝对值,加工直线时x 、y 为相对与起点的终点坐标值;加工圆弧时x 、y 为起点相对于圆心的坐标值。机床加工时的走向由加工码决定,比如l l 为终点在第一象限的直线;n r 2 为起点在第二象限的逆时针走向的圆弧;s r i 为起点在第一象限的顺时针走向的圆弧。如果直线的终点落在坐标轴上,在x 轴正方向上为第一象限,在y 轴正方向上为第二象限,在x 轴负方向上为第三象限,在y 轴负方向上为第四象限。如果圆弧起点落在坐标轴上,则以圆弧即将进入的坐标象限决定加工码。计数方向的决定:在加工直线时规定终点接近x 轴时应计x ,终点接近y 时应计y 。加工圆弧时终点接近x 轴时应计y ,接近y 轴时应计x 。这样设定的原因在于,加工直线时终点接近x 轴,即进给的x 分量多,x 轴走几步,y 轴才走一步。用x 轴计数不至于漏步,可保持较高的精度。而圆弧的终点接近x 轴时线段趋于垂直方向,即y 轴走几步,x 轴才走一步,因此用y 计数能保持较高的精度。例如:起点为( 2 ,3 ) 终点为( 7 ,1 0 ) 的直线的3 b 指令是:b 5 0 0 0 8 7 0 0 0 8 7 0 0 0 y l l半径为9 2 2 ,圆心坐标为( 0 0 ) ,起点坐标为( 一2 ,9 ) ,终点坐标为( 9 ,一2 ) 的圆弧3 b 指令是:b 2 0 0 0 8 9 0 0 0 8 2 5 4 4 0 y n 2在激光扫描时还需要考虑的是激光束的发光与不发光,以及图像投影时的缩放比例,我在文件中州一个字符“u ”控制激光器光束的关闭,用“d ”控制激光器光束的打开,文件的第一行定义的是图像投射时的缩放比例,例如z 5 0 表示按5 0 的比例显示;另外,在文件的最后一行用字符“e ”表示代码的结束。3 - 3 - 4 激光扫描程序中基本插补算法插补算法一共有十。个子群序,分别进行是四个象限的直线、顺恒i 、逆圆的插补运算。r 面分圳给出第一象限的直线l 1 ,第一象限的顺圆s l 两个插补算法的v b 子w 序( 其它 一个插补算法与这两个类似,就不在此列出) 。一直线和圆弧的插补算法1 第一象限直线的插补算法:p f i v a t es u bl 1 ( b y v a lb _ xa sl o n g ,b y v a lb - ya sl o n g ,b y v a lb ja sl o n g ,b y v a lg x ya ss t r i n g )直线插补d i ms c a l ec o u n ta si n t e g e rd i m f a s l o n gs c a l ec o u n t = 0f = 0晒i l e bj - c 0i f f = 0 t h e nc o u n tx = c o u n tx + 1a d d t o a r r a y v a l u els c a l ec o u n t = s c a l ec o u n t + 1f = f byi f g x y = ”x ”t h e n bj = bj - le l s ec o u n ty = c o u n ty + 1a d d m a r r a y v a l u e2s c a l ec o u n t = s c a l ec o u n t + 1f = f bxi f g x y = ”y ”t h e n bj = bj 一1e n d i fi fs c a l ec o u n t = d r a ws c a l et h e ns c a l ec o u n t = 0s c r e e nx = 2 4 0 + c o u n tx d r a ws c a l es c r e e ny = 2 4 0 一c o u n ty d r a ws c a l es c r e e ns h o we n d i fw e n de n ds u b2 第一象限顺圆的插补算法:p r i v a t es u bn l ( b y v a lb xa sl o n g ,b y v a lb ya sl o n g ,b y v a lt 3 一ja sl o n g ,b y v a lg x ya ss t r i n 9 1圆的插补d i ms c a l e c o u n ta si n t e g e rd i m f a s l o n gs c a l ec o u n t = 0f = 0鼢i l e bj 0i f f = 0 t h e l li f by = 0 t h e nbx=bx 1c o u n tx = c o u n tx 1a d a t o a r r a y v a l u e3e l s ebx = bx + 1c o u n tx = c o u n tx + la d d t o a r r a y v a l u e1e n d i fs c a l ec o u n t = s c a l ec o u n t + 1f = f 一2 + a b s ( b _ x ) + 1i f g x y = ”x ”t h e n bj = bj 一1e l s ei f bx = 0 t h c nby=by + 1c o u n ty = c o u n ty + 1a d d t o a r r a y v a l u e2e l s eby=by 1c o u n ty = c o u n ty 1a d d t o a r r a y v a l u e4e n d i fs c a l ec o u n t = s c a l ec o u n t + 1f = f + 2 + a b s ( b _ y ) + 1i f g x y = ”y ”t h e n bj = bj 一1e n d i fi fs c a l ec o u n t = d r a ws c a l et h e ns c a l ec o u n t = 0s c r e e nx = 2 4 0 + c o u n tx d r a ws c a l es c r e e ny = 2 4 0 一c o u n ty d r a ws c a l es c r e e ns h o we n d i fw e n de n ds u b3 - 3 5 代码生成a d d t o a r r a y v a l u e 函数用来向数组中写入一个数值:p r i v a t es u ba d d t o a r r a y v a l u e ( b y v a lx ya si n t e g e r )t o t a l s t e p s = t o t a l s t e p s + li f b p r e v i e w = f a l s et h e nd i mb i n v a l u ea sb y t eu d = f a l s et h e l li f x y = 1t h e nb i n v a l u e = u x y le l s e l f x y = 2t h e l lb i n v j l t i e = i y 2e 1 s e l f x y = 3t h e nb i n v 甜u e = i ) ( y 3e l s e l f x y = 4t h e l lb i n v a l u e = u x y 4e n d i fe l s e i f u d = n 1 i et h e l li f x y = lt h e l lb i n v a l u e = d x y le 1 s e l f x y = 2t h e nb i n v a l u e = d x y 2e l s e l f x y = 3t h e nb i n v a l u e = d x y 3e l s e l f x y = 4t h e l lb i n v u u e = d x y 4e n d i fe n d i fa r r a y v a l u e ( t o t a l s t e p s ) = b i n v a l u ee n d i fe n ds u b将生成代码写入数组当所有的3 b 代码执行完毕之斤将还要处理回原点问题,使得f 一次扫描开始的时候光点保持住原点,其算法如f :i = t o t a l s t e p s 十a b s ( c o u n l x ) + a b s ( c o u n t y )复位回原点r e d i ma r r a y v a l u e ( 1t oi )f o ri = t o t a l s t e p s + lt ot o t a l s t e p sq - a b s ( c o u n t _ y )i f c o u n t y 0t h e na r r a y v a l u e ( i ) = u x y 4n e x tt o t a l s t e p s = t o t a l s t e p s + a b s ( c o u n t _ y 1f o ri _ t o t a l s t e p s + 1t ot o t a l s t e p s + a b s ( c o u n t _ x )i fc o t m t x 0t h e na r r a y v a l u e ( i ) = u x y 3n e x t4 0最后将a r r a y v a l u e 中的数值保存到文件中即可。一烫韭王些签堂堡堂焦丝塞:蔓一= 一一第四章扫描程序与并口的通讯4 - 1 通讯程序的编写和使用4 - 1 1 编写i n p o u t 3 2 d l l 的背景由于微软公司处于安全的考虑,禁止一般的软件程序使用底层硬件设备,所以必须自己编写软件驱动,这样才能使激光扫描系统软件使用并口。4 - i 一2i n p o u t 3 2 d l l 的编写激光扫描程序的主体是使用v b 编写的,但v c 相对于v b 更容易使用计算机的通信端口。所以激光扫描程序使用了一个由v c 编写的动态函数库m 7 4 8 m 州”1 。i n p o u t 3 2 d l l 为端口输出函数的动态链接库文件,采用v c + + 6 0 编写,先在v i s u a lc + + 6 0 开发环境中点“文件”、“新建”,在弹出的窗口中点“工程”选择“w i n 3 2d y n a m i c 一1 i n kl i b r a r y ”工程名称写“i n p o u t 3 2 ”然后点确定按钮,在接下来的向导窗口中选择“as i m p l ed l lp r o j e c t ”,最后点完成。在f i l e v i e w 的i n p o u t 3 2 c p p 中添加如下的代码:# i n c l u d e ”c o n i o h ”用v c 编写动态链接库文件s h o r t s t d c a l li n _ p o r t ( s h o r tp o r t a d d r e s s )r e t u r n _ i n p ( p o r t a d d r e s s ) ;)v o i d s t d c a l lo u t p o r t ( s h o r tp o r t a d d r e s s ,s h o r td a t a )_ o u t p ( p o r t a d d r e s s ,d a t a ) ;l建立一个i n p o u t 3 2 d s p ,并加入如下的代码:l i b r a r yi n p o u t 3 2e x p o r r si n p o r t 1o u t p o r t 2编译之厉在d e b u g 目录下会找到生成的i n p o u t 3 2 d l l 。4 1 3i n p o u t 3 2 d l l 在v b 程序中的调用在v b l 程中作如下声明:p r i v a t ed e c l a r es u bo u t p o r tl i b ”i n p o u t 3 2 d l l ”a 1i a s ”o u t 3 2 ”( b y v a lp o r t a d d r e s sa si n t e g e rb y v a lv a l u ea si n t e g e r )在以后的程序中可以使用以下函数进行端口的输出:o u t p o r tp o r t a d d r e s s ,v a l u以上o u t p o r tp o r t a d d r e s s ,v a l u e 函数在w i n d o w s9 5 、w i n d o w s9 8 、w i n d o w sm e 系统f 能正常运行,但是如果你在w i n d o w sn t 、w i n d o w s2 0 0 0 、w i n d o w sx p 、w i n d o w s2 0 0 3 运行这个程序就会出现以下的错误提示:”t h ee x c e p t i o np r i v i l e g e di n s t r u c t i o no c c u r r e di nt h ea p p l i c a t i o na tl o c a t i o n 为什么会出现这种情况? 这还得从处理器的优先权谈起。处理器有4 个级的优先权:r i n g o ,r i n g l ,r i n 9 2 ,r i n 9 3 。大多数程序运行于r i n 9 3 这个级别。r i n 9 3 有很多限制,我们不能读d r( d e b u g r e g i s t e r s ,调试寄存器) ,所有关于d r 的指令都不起作用( 如:m o ve a x ,d r 7 ) 。对我们来说当然是优先级越高越好,所以我们要使我们的程序运行在r i n g o 。但是只有少数的特殊的程序有r i n 9 0的优先权。w i n d o w sn t 2 0 0 0 为实现其可靠性,严格将系统划分为内核模式与用户模式,在i 3 8 6 系统中分别对应c p u 的r i n g o 与r i n 9 3 级别。r i n g o 下,可以执行特权级指令,对任何i o 设备都有访问权等等。要实现从用户态进入核心态,即从r f n g3 进入r i n g0 必须借助c p u 的某种门机制,如中断门、调用门等。而w i n d o w sn t 2 0 0 0 提供用户态执行系统服务( r i n g0 例程) 的此类机制即s y s t e ms e r v i c e的i n t2 e h 中断服务等,严格的参数检查,只能严格的执行w i n d o w sn t 2 0 0 0 提供的服务,而如果想执行用户提供的r i n g0 代码( 指运行在r i n g0 权限的代码) ,常规方法似乎只有编写设备驱动程序,因为设备驱动程序运行于r i n g o 。4 1 - 4 设备驱动程序的编写设备驱动程序h w i n t e r f a c e s y s 使用v c + + 6 0 编写,由文件h w i n t e r f a c e c 编译而成,h w i n t e r f a c e c 中有两个最重要的函数,它们分别是:1 函数“d r i v e r e n t r y ”,这个函数在驱动程序加载的时候被调用接,其代码如下:n t s t a t u sd r i v e r e n t r y (i np d r i v e r _ o b j e c td r i v e r o b j e e t ,i np u n i c o d e _ s t r i n gr e g i s t r y p a t h)4 2o它创建一个设备对象和符号链p d e v i c e _ o b j e c td e v i c e o b j e e t ;n t s t a t li ss t a t u s ;w c h a rn a m e b u f f e r 1 = l ”d e v i c e h w i n t e r f a c e ”:w c h a rd o s n a m e b u f f e r = l ”d o s d e v i c e s h w i n t e r f a c e ”u n i c o d e s t r i n gu n i n a m e s t r i n g ,u n i d o s s t r i n g ;r t l i n i t u n i c o d e s t r i n g ( & u n i n a m e s t r i n g ,n m n e b u f f e r ) ;r t l l n i t u n i c o d e s t r i n g ( & u n i d o s s t r i n g ,d o s n a m e b u f f e r ) ;s t a t u s = l o c r e a t e d e v i c e ( d r i v e r o b j e c t ,编写设备驱动一:型塑型生堂堡圭兰垡坠垦:一= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 一& u n i n a m e s t r i n g ,f i l ed e v i c eu n k n o w n ,0 ,f 虬s e & d e v i c e o b j e c t ) ;i f ( ! n t s u c c e s s (

温馨提示

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

评论

0/150

提交评论