实例编程

2024-07-10

实例编程(精选九篇)

实例编程 篇1

传统绘制等高线靠手工绘制, 具有绘制慢、精度低、不便修改等缺点, 随时计算机技术和测量技术的发展, 目前绘制等高线靠电脑软件来完成。等高线在地形图中往往以多线段来反映, 等高线首曲线以细线表示, 计曲线以粗 线表示。在打开地形测量图时, 有时会发现个别等高线顶点极多 (有时发现有上千个顶点坐标), 一条等高线有时占用了数M的空间, 进行复制、粘贴时操作极慢, 甚至造成电脑死机, 大大影响作图效率。

2 解决方法

通过研究不难发现, 反映一条等高线的多线段顶点数目足够即可, 图纸比例越小, 多线段顶点间距离越大, 反之亦然。等高线一般由碎布点高程根据软件 (如南方cass等) 生成的, 因软件设置或其他原因造成等高线多线段顶 点冗余。因此, 解决方法就是去掉冗余的顶点, 在不影响作图效果的前提下, 从而实现对等高线多线段的优化。

2.1 编程原理

通过图纸比例设置等高线多线段顶点间最小值, 定为L;计算其余多段顶点 (第一点与最末一点除外) 与第一点之间距离, 如果距离小于L, 该点属冗余点; 反之, 该点不属冗余点, 在多线段中该顶点坐标予以保留。

2.2 实现代码

以CAD VBA为编程工具, 以下是实现功能的主要源代码。

以上程序在Autocad2000~2014下通过。

3 用法

运行程序时只需输入实现功能的多线段顶点间最小值L,选定多段时, 程序自动去掉冗余顶点, 删掉原多线段, 根据新的多线段顶点重划等高线多线段。

实现程序界面图如图1所示。

4 结语

Linux 多线程编程实例 篇2

一、多线程 VS 多进程

和进程相比,线程有很多优势,在Linux系统下,启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护代码段和数据。而运行于一个进程中的多个线程,他们之间使用相同的地址空间。正是这样,同一进程下的线程之间共享数据空间,数据可以相互使用,并且线程间切换也要更快些,可以更有效的利用CPU。

二、程序设计

[注] 头文件

编译时要加载动态库 libpthread.a,使用 -lpthread

1、创建线程

2、等待线程

3、关闭线程

4、退出清除

1、创建线程

代码如下:

int pthread_create(pthread_t *tidp, const pthread_attr_t *attr, void *(*start_rtn)(void), void *arg)

tidp为线程id,是函数分配的值,所以要传一个 pthread_t 的地址。

attr线程属性,通常为空。

start_rtn为线程要执行的函数,返回值为空指针,参数为后面的*arg

若成功则返回0,否则返回出错编号。

例:

代码如下:

#include

#include

void *func1(void *arg){ //原函数声明

int i;

for(i=0;i<5;i++){

printf(“this is func1! The num is %dn”,*(int*)arg); //将空指针转换为int型指针

sleep(1);

}

}

void *func2(int *m){ //自定义类型声明,也可以定义非指针类型,但是在create时会有警告,因为非地址并不能改变传入的值

int i;

for(i=0;i<5;i++){

printf(“this is func2! The num is %dn”,*m);

(*m)++;

sleep(1);

}

}

int main{

pthread_t id1,id2;

int num = 5;

int *p = #

if(pthread_create(&id1,NULL,(void *)func1,(void *)p) != 0){

printf(“thread1 create error!n”);

return -1;

}

if(pthread_create(&id2,NULL,(void *)func2,&num) != 0){

printf(“thread2 create error!n”);

return -1;

}

pthread_join(id1,NULL); //等待线程结束

pthread_join(id2,NULL);

printf(“Running complete!n”);

return 0;

}

运行结果:

代码如下:

[fsy@localhost process]$ gcc thC.c -o thC -lpthread -g

[fsy@localhost process]$ ./thC

this is func2! The num is 5

this is func1! The num is 6

this is func2! The num is 6

this is func1! The num is 7

this is func2! The num is 7

this is func1! The num is 8

this is func2! The num is 8

this is func1! The num is 9

this is func2! The num is 9

this is func1! The num is 10

Running complete!

[fsy@localhost process]$

2、等待线程

[注]当调用pthread_create函数时,线程并没有开始执行,主进程应有等待,比如用sleep,或者用更专业的函数:pthread_join

代码如下:

int pthread_join(pthread_t tid, void **rval_ptr)

调用函数可以阻塞调用线程,直到指定的线程终止。

tid为等待退出线程的id,rval_ptr为函数的返回值。是指向指针的指针,可以置空。

例:

代码如下:

#include

#include

#include

void *func(int *p){

int *num=(int *)malloc(sizeof(int)); //必须动态创建,原因可以参考我动态分配内存的博客

printf(“Please input the number: ”);

scanf(“%d”,num);

return (void *)num; //类型是pthread_create的参数规定的

}

int main(){

pthread_t pth;

void *a;

if(pthread_create(&pth,NULL,(void *)func,NULL) != 0){

printf(“create thread error!n”);

return 1;

}

pthread_join(pth,&a); //指向空指针的指针

printf(“get the num from the thread, it‘s %dn”,*(int *)a);

return 0;

}

3、终止线程

线程终止有以下三种方式:

1、线程从函数中返回

2、线程可以别其他函数终止

3、线程自己调用pthread_exit函数

代码如下:

void pthread_exit(void *rval_ptr)

rval_ptr为线程退出返回值的指针,即函数返回值,

4、退出清除

代码如下:

void pthread_cleanup_push(void (*rtn)(void*), void *arg)

rtn为清除函数,arg是清除函数的参数

代码如下:

void pthread_cleanup_pop(int execute)

当execute 非0时执行清除函数。为0时不执行。

从pthread_cleanup_push的调用点到pthread_cleanup_pop之间的程序段中,如果有终止进程的动作,如调用pthread_exit或异常终止(不包括return),就会执行pthread_cleanup_push()所指定的清理函数。多个嵌套匹配时,就近匹配。

例:

代码如下:

#include

#include

void *clean(char *argv){

printf(“clean is called by %sn”,argv);

return NULL;

}

void *func1(void *argv){

printf(“welcome enter the func1!n”);

pthread_cleanup_push((void*)clean,“the first time call!”);

pthread_cleanup_push((void*)clean,“the second time call!”);

if(argv){

return (void *)1;//第二次运行将此句注掉

}

pthread_cleanup_pop(0);

pthread_cleanup_pop(1);

return (void *)0;

}

void *func2(void *argv){

sleep(1); //两个线程运行先后不确定

printf(“welcome enter the func2!n”);

pthread_cleanup_push((void*)clean,“the first time call!”);

pthread_cleanup_push((void*)clean,“the second time call!”);

if(argv){

pthread_exit(NULL);

}

pthread_cleanup_pop(0);

pthread_cleanup_pop(0);

return (void *)0;

}

int main(){

pthread_t tid1,tid2;

if(pthread_create(&tid1,NULL,(void *)func1,(void *)1) != 0){

printf(“thread1 create error!n”);

return 1;

}

if(pthread_create(&tid2,NULL,(void *)func2,(void *)1) != 0){

printf(“thread2 create error!n”);

return 1;

}

pthread_join(tid1,NULL);

pthread_join(tid2,NULL);

return 0;

}

运行结果:

代码如下:

[fsy@localhost process]$ gcc thClean.c -o thclean -lpthread

[fsy@localhost process]$ ./thclean

welcome enter the func1!

welcome enter the func2!

clean is called by the second time call! //此处先2后1

clean is called by the first time call!

[fsy@localhost process]$ vim thClean.c

[fsy@localhost process]$ gcc thClean.c -o thclean -lpthread

[fsy@localhost process]$ ./thclean

welcome enter the func1!

clean is called by the first time call! //second已经被pop

welcome enter the func2!

clean is called by the second time call!

clean is called by the first time call!

实例编程 篇3

关键词:内螺纹 数控编程 G功能

中图分类号:TG659 文献标识码:A 文章编号:1007-3973(2013)012-049-02

1 前言

对于一些特殊类型的加工零件我们可以采用手工编程当中一些特殊的方法,合理运用一些手工编程当中G功能指令,可以使程序步骤得到精简,使一些中低档数控机床系统运行要求降低,加工效率和精度得到提高。

2 零件图样分析

编制如图1所示程序并加工。工件材料为45#钢,毛坯为 50棒料,要求完成工件内螺纹加工,毛坯以预制 20mm、深26mm底孔。

3 零件加工完成

3.1 零件螺纹分析

根据图样中螺纹标注可知,零件右端内螺纹为普通细牙螺纹,公称直径为24mm,螺距为2mm,单线,右旋,螺纹长度21mm,螺纹中、顶径公差带代号为7H。

3.2 确定工艺及编程加工路线

用三爪卡盘自定位,一次装夹依次完成外形轮廓、粗、精加工,螺纹孔底加工,内螺纹加工,加工步骤:

(1)G71循环指令外形轮廓粗加工。

(2)G70循环指令外形轮廓精加工。

(3)G90指令粗、精加工内孔轮廓。

(4)G76循环指令加工内螺纹。

3.3 工艺参数确定

3.4 根据实体模型和加工工艺分析自动生成编辑程序(参考)

4 结语

正确掌握数控车床手工编程和工艺设计特殊方法的加工运用,可以大大简化加工程序,节省了零件加工时间还能保证零件的加工精度,在实践工作中有一定的现实意义。

参考文献:

[1] 唐勰.浅析FANUC-0iT系统数控车床的螺纹加工[J].中国现代教育装备,2010(01):74-75.

[2] 赵歧刚,于世忠.数控车床零件加工技术[M].北京:电子出版社,2013:94-100.

应用宏程序编程的数控程序实例 篇4

当用数控设备加工一批相同形状,但尺寸不同的工件时,通常采用更换程序的方式,当遇到加工一批产品种类多,数量少,转产频繁的工件时,采用频繁更换程序方式时效率低下。

如图1所示加工一些管子的焊接坡口,结构形状相同,但管子外径、内径和镗孔值不同时,必须使用不同的数控程序。由于管子来料时,每批管子的内径值并不是定值,如果镗孔刀的吃刀量大,必须采用分多次走刀加工,因此,需要实测管子内径尺寸后重新编程。涉及一些三角函数计算的数控编程,如果由操作工手工编程,效率低并很容易出错。如由数控编程工程师用Master CAM软件编制,效率较高,但平均每套程序需用30分钟(包括程序传输),并且每天不断重复类似的工作。为了解决这一问题,笔者利用宏程序,针对同形状不同参数的工件,编写了一套程序,对同形状尺寸不同的工件,在转产前,操作工只需实测管子内径尺寸后,在程序中输入工件参数,仅需1分钟即可完成程序转换工作,就可生产,大大提高了车间的生产效率和减少编程工时和减少错误。

2 宏程序的编制思路

加工模型图如图2和图3所示,图2简单描述外圆车刀的加工路线及关键尺寸的位置关系式。图3简单描述镗刀的加工路线及关键尺寸的位置关系式。为了说明问题,本模型暂不涉及分刀路加工方式,外圆车刀刀路简化为:

换镗孔刀后,镗孔刀刀路简化为:

将三个变量在程序中输入,#1代表管子外径,#2代表管子实测内径,#3代表镗孔值。其他关键的位置以变量定义,并代入关系式,关系式与#1,#2,#3变量关联。

下面以实例方式讲解。

3 加工实例

程序如下,先用外圆车刀车平端面,后加工外坡口,换镗孔刀后镗孔:

此程序在沈阳机床上的FANUC Series Oi mate-Tc系统上稳定运行。

4 注意问题

(1)对于切削加工量大的部位,如果超出刀具可承受的吃刀量,可以由程序自行判断是否采用分刀加工,这个数值可在程序中定义。如图4所示,如果管子壁厚超过6mm,需要分刀加工,第1刀为粗加工,剩余2mm加工余量由第2刀加工。只需在程序中加一条件语句即可,本实例加在N180语句后,判断管子壁厚范围,如果管子壁小于6mm,只执行一刀加工,否则分两刀加工。镗孔程序也可用此方式实行由程序自行判断是否采用分刀加工。程序如下:

(2)由于某些数控编程系统中,可用的变量代码并不多(#1~#33),当变量较多时,可调用子程序,注意如果子程序中的变量代码与主程序中的变量代码相同时,若主程序还需使用原变量的数值,那么在退出子程序后,在主程序上重新为这些变量代码输入原数值,否则该变量代码将用回子程序的数值,而造成程序出错。

(3)在编程时,注意刀具的行走路线,避开干涉点,可用数控软件模拟功能走刀,这些需要在实际编程时掌握。

(4)如果数控加工设备配备自动进料、自动装夹及自动退料功能,可以在设备运行的主界面设置一下,在主界面输入参数,而调用的零件程序读取主界面参数,可实现大批量自动化流水线生产。

5 结论

数控机床宏程序编程的技巧和实例 篇5

数控机床宏程序编程的技巧和实例

2011年8月11日

前言

随着工业技术的飞速发展,产品形状越来越复杂,精度要求越来越高,产品更新换代越来越快,传统的设备已不能适应新要求。现在我国的制造业中已广泛地应用了数控车床、数控铣床、加工中心机床、数控磨床等数控机床。这些先进设备的加工过程都需要由程序来控制,需要由拥有高技能的人来操作。要发挥数控机床的高精度、高效率和高柔性,就要求操作人员具有优秀的编程能力。

常用的编程方法有手工编程和计算机编程。计算机编程的应用已非常广泛。与手工编程比较,在复杂曲面和型腔零件编程时效率高、质量好。因此,许多人认为手工编程已不再重要,特别是比较难的宏程序编程也不再需要。只须了解一些基本的编程规则就可以了。这样的想法并不能全面。因为,计算机编程也有许多不足:

1、程序数据量大,传输费时。

2、修改或调整刀具补偿需要重新后置输出。

3、打刀或其他原因造成的断点时,很难及时复位。

手工编程是基础能力,是数控机床操作编程人员必须掌握的一种编程方法。手工编程能力是计算机编程的基础,是刀具轨迹设计,轨迹修改,以及进行后置处理设计的依据。实践证明,手工编程能力强的人在计算机编程中才能速度快,程序质量高。

在程序中使用变量,通过对变量进行赋值及处理使程序具有特殊功能,这种有变量的程序叫宏程序。宏程序是数控系统厂家面向客户提供的的二次开发工具,是数控机床编程的最高级手工方式。合理有效的利用这个工具将极大地提升机床的加工能力。

作为一名从事数控车床、数控铣床、加工中心机床操作编程二十多年的技师,在平时的工作中,常常用宏程序来解决生产中的难题,因此对宏程序的编程使用积累了一些经验。在传授指导徒弟和与同事探讨中,总结了许多学习编制宏程序应注意的要点。有关宏编程的基础知识在许多书籍中讲过,我们在这里主要通过实例从编制技巧、要点上和大家讨论。

一、非圆曲面类的宏程序的编程技巧

1、非圆曲面可以分为两类;

(1)、方程曲面,是可以用方程描述其零件轮廓的曲面的。如 抛物线、椭圆、双曲线、渐开线、摆线等。这种曲线可以用先求节点,再用线段或圆弧逼近的方式。以足够的轮廓精度加工出零件。选取的节点数目越多,轮廓的精度越高。然而节点的增多,用普通手工编程则计算量就会增加的非常大,数控程序也非常大,程序复杂也容易出错。不易调试。即使用计算机辅助编程,其数据传输量也非常大。而且调整尺寸补偿也很不方便。这时就显出宏程序的优势了,常常只须二、三十句就可以编好程序。而且理论上还可以根据机床系统的运算速度无限地缩小节点的间距,提高逼近精度。

(2)、列表曲面,其轮廓外形由实验方法得来。如飞机机翼、汽车的外形由风洞实验得来。是用一系列空间离散点表示曲线或曲面。这些离散点没有严格一定的连接规律。而在加工中则要求曲线能平滑的通过各坐标点,并规定了加工精度。加工列表曲线的方法很多,可以采

用计算机辅助编程,利用离散点形成曲面模型,再生成加工轨迹和加工程序。对于一些老机床或无法传送数据的机床,我们也可以将轮廓曲线按曲率变化分成几段,每段分别求出插值方程。采用宏程序加密逼近曲线的方法。

2、非圆曲面类的宏程序的编程的要点有:建立数学模型和循环体(1)、数学模型是产生刀具轨迹节点的一组运算赋值语句。它可以计算出曲面上每一点的坐标。它主要从描述其零件轮廓的曲面的方程转化而来。

(2)、循环体是由一组或几组循环指令和对应的加法器组成。它的作用是将一组节点顺序连接成刀具轨迹,再依次加工成曲面。

3、下面根据两个实例,按宏程序的编制过程将各步骤的要点和技巧进行详细说明。

图1—

1、椭圆曲面零件

实例

1、如图1-1数控车加工一个椭圆面。椭圆的长轴60,短轴40.步骤1:根据加工轨迹确定椭圆曲线的起始点A和终点B坐标。这里的要点是分清编程坐标系和椭圆坐标系、A点在编程坐标系中的坐标为X=113.742、Z=27.252 这里为适应数控车床的编程习惯x采用直径坐标,A点以椭圆的中心为原点的坐标为X=113.742

Z=40—27.252

B点的编程坐标是X=37.907

椭圆坐标为X=37.907

步骤2:确定在曲线方程中的主变量和从变量。这要根据实际情况来选择。有以下几点原则:①变量的起点、终点已知的。②变量在坐标中的变化方向一致。③变量的变化对曲线的精度影响较大。根据以上原则我选X坐标为主变量、Z是从变量。

步骤3:将标准方程化为从变量赋值的形式。如图1-1以其中心为原点,椭圆方程为 X²/a² +Z²/b²=1化为Z= SQRT[(1-X *X/a*a)*b*b 这一步很关键。由于曲线只在椭圆坐标系的第一象限 Z为正值。

以上三步就是建立数学模型。在这个模型里X的一个坐标值,可以计算出它对应的Z坐标值。要注意,这两个坐标是以椭圆中心为原点的,要特别注意。也就是说,如果和这个零件一样,椭圆中心和你设定的编程坐标系原点不重合,进入数学模型和从数学模型输出的数值,都是以椭圆中心为原点的。刀具运动指令的坐标值是以编程坐标系为原点。因此,需要设计计算方法将数学模型的输出数据转化成编程坐标系的数值。许多多年从事数控机床操作的人一直不能用宏程

序,就是在这里犯了糊涂。

步骤4:画流程图确定宏程序的过程 图1-2 流程图是建立和检查循环体的最好工具。这一步的关键点是:分清计算过程、运动指令、加法器的排列顺序;循环体中条件转移语句和加法器的配合,产生正确的循环控制,而不是死循环。

;赋初始值(注意是椭圆坐标系);循环体开始,判断是否结束。

;计算、运动指令

;加法器,改变动参数

图1—2 步骤5:根据流程图编写程序 程序如下O1001 应注意的要点有:(1)、当采用刀尖圆弧补偿方式编程时,循环体的轨迹第一点不能和起始点重合,否则系统会显示出错。(2)要注意循环体内计算语句、运动语句和加法器语句的顺序不能错。

该零件如图右端内部椭圆面的数控车精车程序如下: O1001;重点说明 T0101;G90G40G0X200.0Z200.0M03;G41G00X135.0Z5.0M08;G01Z-25.0F0.1;G03X#1Z-27.252;#1=113.742-0.1;将循环开始点错开 #2=40-27.252;Z值从编程坐标系转变到椭圆坐标系 WHIFL[#1GT37.907] DO 1;循环体开始,X轴坐标逐渐减小 #1=#1/2; 将直径值转化成半径值 #2=SQRT[[1-#1*#1/[60*60]]*40*40];#2=#2-40 Z值从椭圆坐标系转变到编程坐标系 #1=#1*2 将半径值转化成直径值 G01X#1Z#2F0.08;运动指令 #1=#1-0.1;递减加法器 END 1;循环体结束 G01X37.907Z-2.048;G01X35.0;G00Z200.0;G00X260.0M09;M30;

图1--3 实例

2、在加工中心上加工抛物线球面。

比较加工中心或数控铣床上铣削曲面和数控车床车削曲面,有许多差别:(1)、加工方式不同。(2)、车削曲面需要计算沿一条轮廓素线的若干个节点;铣削曲面需要计算整个曲面上若干个轮廓素线的若干节点。计算量大,宏程序非常复杂。

编制铣削曲面宏程序确实非常难,然而只要我们抓住几个关键要点,做好流程图和数学模型,勤于实践,也是一定能够掌握这个技能的。下面把编制铣削曲面宏程序的过程分成几步:

步骤

1、分析曲面的构成特点确定加工路线

如图1-

3、这个曲面是由一条抛物线以与它共面水平直线为轴线旋转切成的。加工轨迹可以有两种,一种是水平层切、一种是垂直层切。我们用垂直层切的方式。其轨迹如图1-4,每个层切面上的刀具轨迹都是一个YZ平面的圆弧。

图1--4 步骤

2、选择合适的编程坐标系,确定主、从变量。如图1-3把坐标系原点设置形腔上表面的中心,可以简化计算。Z为主变量。取Z=0 为起点,Z=20为终点。

步骤

3、抛物线方程X²=36(Z-20)转化为X=SQRT[36*[Z-20]]

和X=-SQRT[36*[Z-20]]、这里需要注意两个象限的变化,要设计两个循环体,用控制指令“换向”。

步骤

4、设计流程图,试验循环体程序框架。

步骤

5、根据流程图编制程序。注意程序的加工平面为y-z(G18)平面。流程图和程序如下图1—5,O1002 O1002;

G0X0Y0M8;G54G18G90G40;

G43G0Z100H1M3S3000 T1M6;

Z5;

图1—5

M30

#1=0;

WHILE[#1GT-20] DO 1 #2=SQRT[36*[#1-20]];G1X#2F500;G41G1Y#1D1 G1Z0 G2Y-#1J-#1 G40G1Y0;#1=#1-0.1 END 1;#1=-20

WHILE[#1LT0] DO 2 #2=-SQRT[36*[#1-20]] G01X#2F500 G41G1Y#1D1 G2Y-#1J-#1 G40G1Y0 #1=#1+0.1

END 2;G00Z200M9

二、用宏程序开发对零件自动找正功能

图2---1

1、开发过程

某零件如图2-1。工艺安排卧式加工中心上一次装夹将四个Φ 8孔加工完成,保证其位置精度。但是工件在夹具中定位后,B向旋转无法用夹具精确定位。当时的方法是:①每个零件装夹后单独用百分表找平。或者用自动测量触头取值,手工计算偏转角。②修改程序中新的B向坐标基准值。

整个过程用时较长须用时长,对操作工的技能要求也较高。这种零件数量多,工期紧,要想办法节约时间。我就想利用宏程序计算功能和机床具备的自动测量触头功能可以实现自动找正。

2、自动找正零件功能的工作原理

(1)、零件夹具中设计一个粗定位圆柱销,使零件粗定位,保证测量精度和测量工具的安全。.(2)、选择零件基准面上较远的两个点采值,如图a、b两点。分别放入#1和#2参数在。(3)、计算差值及偏转角。(4)、输入编程坐标系G54的B轴。

另一台四轴加工中心没有自动测量功能,我们用采用百分表触测零件基准面,目测记录差值,手工输入参数表中。宏程序自动计算并找正。速度和准确率提高了很多,保证了生产任务按时完成。

3、编制宏程序

自动找正功能的开发并不复杂,使用的是宏程序对内部系统变量读取和赋值功能。程序如下:

O2001 T3M6;G54G90G0X40Y300B0;G43G0Z200H3;G0Y15Z60;

运动到预备测量a位置 G31G91Z-52F500;

执行G31测量a点坐标存入#5000 G90G0Y100Z200;#1=#5000;

#5000系统参数记录a点的坐标值,赋给#1 G0X-40;G0Y15Z60;G31G91Z-52F500;

执行G31测量b点 G0G90Y200Z200;#2=#5000;

#3=ATAN[[#1-#2]/80];

计算偏转角

#5204=#5204-#3;

给过G54中B轴赋新值 G54G0B0;

执行G54,B轴归零

M99;

三、宏程序开发加工中心工作台任意旋转

后,坐标系自动转换的功能、五轴加工中心工作台旋转对坐标系的影响

五轴加工中心工作台可以在一个或两个方向旋转,可以加工工件的多个表面。当工件安装在工作台任一位置处上,我们找正工件基准,确定工件坐标系。当需要加工另一个表面时,工作台需要旋转一个角度,这时工件上的基准原点与工件坐标系分离。需要再次找正工件基准重新建立坐标系。如图3-1如果工件有五个表面,那么就需要建立五个坐标系。力,对于加工工件还可以接这样的基准点是空间斜角相次找正来保证全不可能了。

图3--1

这样的方法费时费形状较简单的单个受。图中C点、D点就不容易找正。型腔交的零件用基准多空间位置精度就完我们可以用计算的方式,以工作台的回转中心为基准,计算出每次旋转工作台,工件基准相对于工作台回转中心的偏移量。用基准转移的方式建立新的工件坐标系。把这个过程用宏程序来实现,使坐标自动转换,方便准确。

2、工作台旋转后坐标系转换的数学模型

图3—2a 图3—2b 五轴加工中心绕X轴旋转的是A轴,如图3-2a中O是机床坐标系原点,O1是工件坐标系原点,O2是工作台A轴旋转中心。图3-2b为A轴旋转&角后与原来旋转前的比较图。建立LZ和LY数学模型

LZ=(L3-L1)COS&+(L2+L4)SIN&-(L3-L1)=(L3-L1)(COS&-1)+(L2+L4)SIN& LY=(L2=L4)-[(L2+L4)COS&-(L3-L1)SIN&]=(L2+L4)(1-COS&)+(L3-L1)SIN& 要点说明:1.L1L2是工件坐标系原点到机床坐标系原点的距离,也就是G54中Z、Y的值

2.L3L4是工作台旋转中心到机床坐标系原点的值。由

机床厂家测量出存放于一般机床参数中。3.LZLY将用于对工作台的修改

4.设置工件坐标系时要便于坐标转换的计算。

这种问题的难点就是建立数学模型,有了数学模型,我们可以很方便的完成坐标转换宏程序。

四、用参数简化程序提高编程效率

实例、采用参数控制循环的方式时深型腔的粗精铣加工

如图4-1零件型腔深度65mm材料硬度较高,由于内角R的要求,粗精采用的刀具为直径16mm和 10mm的加长铣刀。刚性差因此采用层铣方式,每层铣10mm 水平粗铣环切路径如图4-2。编制这种宏程序的特点是使用循环功能。

采用参数宏程序层切循环和环切循环与普通 方式编程的比较。

图4--1

(1)程序方便的比较进给量调整宏程

序方便只须修改一个参数。而普通程序需要修改整个粗铣程序;(2)宏程序的程序句子较少粗铣留量越大,宏程序的优势越明显;(3)宏程序结构清楚比较容易检验程序的正确性;(4)通用性强,只需

图4—2 对参数赋上合适的值,就可以用于精铣轮廓

和精铣底面及侧面。只需走完一次循环即可,而不必将整个程序走完。

五、用宏程序对数控机床的功能进行二次开发

宏程序像许多计算机软件一样是数控系统厂家提供给我们的一种二次开发工具。用好它对我们的工作帮助非常大。我们可以把一些重复性强,编程有规律的工作。编制成宏程序像数控系统中的其他固定循环一样调用。编制时应注意:(1)运动轨迹尽可能多的受参数控制,才能方便灵活。(2)主要功能应针对性强,才能实用。(3)要注意快速运动轨迹的安全性、通用性。(4)输入参数不要太多,一般固定参数可放在宏程序内修改。下面我简要介绍开发的几个小宏程序: 1.数控车床加工不锈钢材料的深孔的宏程序

解决问题:不锈钢材料加工深孔时排屑困难钻头易磨损,铁屑不易折断,容易绕到工件和钻头上,使钻头易损坏,也会拉毛已加工表面。增大发生折断的意外。采取的方法:增长每次进给的退刀长度,方便排屑降温。增加M00方式暂停,用M05方式主轴暂停,方便检查保护刀具,不用时打开“/”跳过。2.数控车床盲孔深槽的加工宏程序;

设计思路:盲孔内深槽粗车有两个难点1)排屑困难。2)刀头伸出刀杆较长,进退刀困难,空程较长。

在设计工艺路线时我们采取的措施有:1)切屑进给路线上增加若干断点,造成断屑、可以防止切屑缠绕刀杆,也方便排屑。2)分层进给,每层结束,刀具退出工件较长距离,主轴进给都暂停,排出孔内

切屑并检查刀具。3)刀具每次返回切屑面时空行程采用较快进给速度。

实践以上的措施,如应用普通方式编程是非常困难的,即使编出来也是语句庞大,检查修改也非常麻烦。使用宏程序的计算语句和循环控制语句就可以解决这些问题。

结束语

前面介绍了几种编制宏程序的方法和重点技巧。我们在平时的工作中经常会用到,为生产活动带来了很大的便利,提高了生产效率,改善了加工质量,完善了机床的功能。应该说宏程序编制就像一个魔方,随着你对它的使用。它会变幻出越来越多的美丽图案。

数控车床加工倾斜椭圆的编程实例 篇6

1) 机床数控系统本身既不存在加工椭圆等非圆曲线的G指令,也没有类似G68这样的旋转指令,使编程难度大大增加。

2) 加工中变量的参数直接影响着加工的效率以及质量,很容易产生过切报警,即使程序正确无误,实际加工中的参数调整也非常困难,直接影响着加工能否顺利进行,以及加工精度能否保证。

要想利用宏程序顺利的编制出倾斜的椭圆程序就必须要掌握椭圆方程和旋转公式,现将它们罗列如下 :

a. 椭圆方程

椭圆的标准方程,椭圆的参数方程 :

其中a、b分别为x、z轴所对应的椭圆半轴。

b. 旋转公式

其中x′、Z′为旋转后的坐标值,X、Z为旋转之前的坐标值,θ为旋转角度。

加工椭圆实例

应用数控车床加工零件时,一些简单形状的零件可以采用一般的手工编程加工,但对于此零件图倾斜椭圆部分程序的编写,普通的手工编程就无法对其加工点进行控制。但如果我们用宏程序来对倾斜椭圆部分进行程序编写,就能顺利地通过手工编程实现数控加工。

利用宏程序来编写此椭圆部分的重点是要找到椭圆部分的起点和终点角度,因为椭圆部分的起点和终点角度将直接影响到此零件椭圆部分的加工几何形状,现将找椭圆起点和终点角度的数学处理方法介绍如下 :

以工件右端面为坐标原点,已知点D坐标值为(20,- 20),点A的坐标值为(39.3,-52.01),椭圆长半轴和短半轴分别为30mm和20mm, 旋转角度为15°,求没有旋转之前椭圆起点和终点的角度。

现利用三角函数法来求没有旋转之前椭圆起点和终点的角度。三角函数的计算方法主要是通过添加一些辅助线形成若干个三角形,通过解三角形的方法求得起点与圆心的距离OD、终点与圆心的距离OA在椭圆轴线方向的垂直距离,最后用椭圆的参数方程反求出没有旋转之前的椭圆角度。

辅助线的添加如下 :连接OD、OE,过D作DF⊥OF, 垂足为F,过A作AB⊥BE,垂足为B,过A作AC⊥OF,垂足为C,连接AO。

最终求得椭圆旋转前的起点和终点角度分别为6.777°和87.363°。

工件毛坯直径为Φ55×110 mm,以华中HNC-21T数控系统为例,椭圆部分程序编制如下 :

宏程序主要是利用各种数学公式进行运算加工,因此编制旋转椭圆程序的操作者必须要掌握椭圆方程和旋转公式等各种数学公式的计算方法并加以灵活应用。

摘要:随着数控技术的不断进步,在数控车床上加工各种复杂成型面的情况也越来越多。椭圆曲线就是一种复杂的成型面,而且是一种复杂的二次曲线,一般只适合在数控机床上加工,并且手工编程难度也比较大,为了减小编程人员的工作强度,通常用宏程序来对椭圆进行手工编程。

实例编程 篇7

关键词:Labview环境,Active X技术,Word、Excel常见功能

1概述

1.1 Labview环境

Labview是一种基于“虚拟仪器”的可视化编程环境, 核心概念是“软件即仪器”, 特别强调软件在测控系统中的作用。利用Labview编制的程序包括前面板界面与程序框图两部分, 其操作和功能模拟了现实世界中的仪器, 因此被称为VI (Virtual Instrument/虚拟仪器) 。

Labview的优势主要体现在以下几个方面:

(1) 提供了丰富的图形控件, 并采用图形化的编程方法, 彻底把工程师们从复杂苦涩的文本编程工作中解放出来。

(2) 内建的编译器在用户编写程序的同时就在后台自动完成了编译。因此用户在编写程序的过程中如果有语法错误, 它会被立即显示出来。

(3) 通过应用程序生成器可以轻松地发布EXE、动态链接库或安装包。

(4) 由于采用数据流模型, 它实现了自动的多线程, 从而能充分利用处理器尤其是多处理器的处理能力。

(5) 通过DLL、CIN节点、Active X、NET或MATLAB脚本节点等技术, 可以轻松实现Labview与其他编程语言混合编程。

(6) 提供了大量的驱动与专用工具, 几乎能与任何接口的硬件轻松连接。

(7) 内建了600多个分析函数, 用于数据分析和信号处理。

(8) NI同时提供了丰富的附加模块, 用于扩展Labview在不同领域中的应用。

1.2 Active X技术

Active X是微软公司推出的一个技术集的统称, 这项技术可以使用户重用代码, 并能将多个程序连接在一起实现复杂的计算需求。它基于COM (Component Object Model/组件对象模型) 技术。Active X是较早的OLE (Object Linking and Embedding) 技术的扩展。作为Active X核心的COM是一个以处理所有软件组件开发阻碍为目的的标准, 它希望最终建立一个大型的组件库, 使软件工程师能像硬件工程师一样通过搭建组件的办法开发应用程序。

在Labview环境下Active X编程基本思路如图1所示。首先打开Active X生成主对象, 然后由主对象生成其他所需的子对象, 通过设置这些对象的各种属性、调用对象的各种方法以及处理对象的各种事件来实现程序所需功能, 最后将所有对象关闭, 所有的这些操作都通过对象标识关联到一起。

打开Active X对象、访问Active X对象的属性方法、注册事件等都需要利用Labview提供的Active X操作函数 (位于程序框图内Functions Palette面板的Communication|Active X子菜单) 。

其中主要函数的功能如表1所示。

2 Active X编程实例

2.1调用Word编程

2.1.1打开或新建Word文档

打开Word应用程序对象 (Word._Application) 是所有Word相关操作的首要条件。Word._Application对象表达了Word应用程序框架, 直接利用Automation Open函数就可打开Word应用。

程序对象从而打开Word应用程序, 关键是找出Word应用程序对象标识 (Automation Refnum) 。首先放置Automation Open函数在程序框图中, 右键单击该函数图标左侧的Automation Refnum端子, 选择Create|Control选项, 创建一个Automation Open控件, 右键单击该控件并选择Select Active X Class|Browse选项打开如图2所示的Active X对象选择对话框, 在Type Library中选择Microsoft Word*Object Library Version*, 在Objects中选择Application (Word.Application.*) , 单击OK按钮即可完成了Automation Refnum控件与Word Application的连接。下面只要将Automation Refnum输出与Property Node或Invoke Node连接就可以获得该对象的属性和方法, 从而实现对Word的操作:首先通过Word._Application的Visible属性来使Word程序界面可见, 其次通过Word._Application的Documents属性获得Word.Documents对象的参考, 再次通过Word.Documents对象的不同方法决定是打开还是新建文档 (图3是通过Documents对象的Open方法打开一个已经存在的Word文档;图4是通过Documents对象的Add方法新建一个Word文档) 。

2.1.2添加文本段落

打开或新建一个Word文档后, 就可以对其进行添加文字、插入表格等操作了。Word的操作是在一个Selection对象上进行的, Selection对象相当于光标选取的一段内容 (文字、图、表) , Selection对象有Start和End属性, 可以对Selection对象的位置定位, 也可以通过设置其子对象Range的Start和End属性达到同样目的。Range对象和Selection对象的大多属性和方法通用, 一般用Range对象来编程。如果是要在某处添加文本、图、表等, 则需要将Start和End属性设定为同一值, 即将光标定位于某处。

下面在图3所示的打开一个存在的文档中添加文本段落, 如图5所示。

添加段落:段落对象为Paragraph, 添加段落就是增加一个新的Paragraph对象。在图5中, 首先打开了一个文档然后在Selection对象上进行添加文字操作, 但是在进行Selection操作之前将Documents对象经Application应用程序获得Selection对象。可以看出, 通过Selection对象获得Ranges属性, 然后生成Range对象, 调用其Insert Paragraph After方法在其后插入一个段落, 然后设置Text属性输入文本, 并对文本段落的格式 (图中为首行缩进位置) 和文本字体进行设置, 最后将光标定位于末尾。光标定位于末尾的方法就是将文档对象的End属性值传递给Selection对象的Start属性。

2.1.3添加表格

下面生成一个空表格, 并可对表格的一些属性进行调节, 包括允许表格断页显示、表格的行数和列数、列宽、边框是否可见以及表格位置 (居左、居中、居右) 设置等, 如图6所示。

该程序首先通过Documents对象的Add方法创建一个新文档, 然后在Selection对象上进行添加表格操作, 但是在进行Selection操作之前将Documents对象经Application应用程序获得Selection对象。通过Selection对象转换为Word._Document获得Tables属性, 然后生成Tables对象。利用Tables对象的Add方法, 同时设置好行数、列数, 这样就在文档上生成了一个表格, 最后对表格的宽度和边框是否可见进行设置。

2.1.4保存和关闭

文档的保存通过调用Document对象的Save As或Save方法实现, 第一次存盘用Save As, 以后的存盘用Save, 文档的关闭则用Close方法完成, 如图7所示。

Save As方法的参数均有默认值, 可以不用设置而直接使用默认值。若需要换名保存则需要设置File Name参数, 其含义为文档名称 (包含路径) , 默认值是当前文件夹和文件名, 如果从未保存过此文档, 则使用默认的文件名, 如果指定路径和名称的文档已存在, 则覆盖此文档, 而且在覆盖时不提醒。

2.2调用Excel编程

下面通过Microsoft Excel 12.0 Object Library提供的Excel Active X对象对Excel的操作。首先放置Automation Open函数在程序框图中, 右击函数图标的Automation Open端子, 选择Create|Control选项, 创建一个Automation Open控件, 右击该控件并选择Select Active X Class|Browse选项打开如图2所示的Active X对象选择对话框。

在该对话框中选择Microsoft Excel 12.0 Object Library中的Application对象。单击OK按钮就完成了Automation Refnum控件与Excel Application的连接。下面只要将Automation Refnum输出与Property Node或Invoke Node连接就可以获得该对象的属性和方法, 从而实现对Excel的操作, 如图8所示。

首先通过Excel.Application的Visible属性来打开Excel程序界面, 再通过它的Workbooks属性获得Excel.Workbooks对象的参考;再通过该Workbooks对象的Add方法新建一个工作薄, Add方法返回的是新建工作薄的引用, 通过该引用的Sheets属性获得当前工作薄下的表单对象的引用;通过Excel.Sheets对象的Item方法获得其中一个表单, 该方法返回的变量数据, 需要将其转换为Excel._WorkSheet引用。通过Worksheet对象的Range对象 (Range表示一个范围, 可以是一个单元格, 也可以是一行、一列、或者多个单元格的集合) , 然后通过改写Range对象的Value2属性实现对该单元格写入数据。

最后以上所有程序都是通过Close Reference函数关闭所有打开对象的引用。

3结束语

文章以图解实例形式说明了Lab VIEW利用Active X技术自动化生成测试报表 (Excel或Word格式) 的典型思路和步骤, 所形成的子程序具有通用性。

参考文献

实例编程 篇8

随着经济、技术的不断发展,企业对各层次数控人才的需求日益旺盛。而在CAD/CAM软件普及的今天,手工编程的应用空间日趋减小,生产中往往忽视了手动编程。但是在实际工作中宏程序却有广泛的应用空间。机床执行宏程序比执行CAD/CAM软件生成的程序更快捷,反应更迅速,使得加工效率大大提高。因此宏程序编程应用技术的教学对学生有着更深远的现实意义。

1 宏程序编程的技术特点

作为现代制造技术的灵魂及核心,数控加工技术随着制造工业的飞速发展得到了广泛的应用。各类CAD/CAM软件的应用日趋普及,特别是在三维曲面、非圆曲面的加工中,简单指令的基本编程几乎已无用武之地,但那不代表手工编程中宏程序编程的应用也就应顺势而退。宏程序编程因为具有以下特点而在使用中占有优势:

(1)宏程序编程具有灵活性、通用性和智能性。编程过程中可以通过修改加工参数来加调整加工零件的尺寸和形状,并注重与机床功能参数相结合,灵活的参数设置也使机床具有最佳的工作性能,给予操作者极大的自由操作空间。

(2)宏程序具有模块化的思想和物质条件。编程人员只需把零件信息、加工参数等输入到相应模块的调用语句中,即可加工一系列相关形状、尺寸的零件,使编程人员从烦琐的、大量的、重复性的编程工作中解脱出来。

(3)宏程序编程基本可以包含所有的加工信息,而且语句简明、直观,通过简单存储和调用,就可以很方便地重现当时的加工状态,给周期性的生产带来极大的便利。

(4)宏程序编程可以减少数学运算过程中的计算误差,提高数学处理能力,可以用理想的直线或圆弧逼近去加工曲线、曲面,提高零件的加工精度。

随着数控技术的高速发展,自动编程将逐渐取代手工编程。但宏程序编程简捷、灵活、方便的特点使之依然具有较高的使用价值。我个人认为,宏程序编程的运用应该是手工编程应用中最大的亮点和最后的堡垒,在数控编程教学中也具有极重要的意义。

2 宏程序编程的应用比对

2.1 宏程序编程与基本编程功能应用比对

采用基本指令编程时,程序功能字为常量,每个代码只能描述固定的形状。当零件的形状或者是尺寸等性质发生改变的时候,原有的程序就失去加工的意义,必须重新编写新的程序来适应零件的变化。这就增加了编程人员的工作量,需要重复的从事繁琐的编程工作。并且,基本编程指令的指令功能代码对空间曲线和非圆曲面的加工,只能通过复杂的计算求点后用直线或圆弧来逼近,即加大了计算的复杂程度,又不能很好的满足加工的精度要求,而且还要经过数量较多的程序段来完成,加工效率不高。

宏程序编程可以合理使用三角函数和参数方程等,采用改变参数的方法,使同一程序能加工形状、属性相同但尺寸参数不同的零件,加工就会非常方便,也提高了可靠性。加工不规则形状零件时或进行自动测量时,机床要对变量数据进行处理,用户宏程序以其与子程序相似的实质,把一组实现某种功能的指令,以子程序的形式事先储存在系统存储器中,通过宏程序调用指令执行功能。以此来实现变量的赋值、变量间的运算、程序运行的跳转等,从而使程序具有特殊功能,使宏程序可以执行有规律变化的动作。

2.2 宏程序编程与自动编程功能应用比对

数控技术的发展离不开计算机辅助功能的提升,CAD/CAM技术的使用,使编程不再需要计算基点、寻找节点,不用再考虑怎样选取合适的基本指令,所以在很多人眼里手工编程成为了过去。但是,通过CAD/CAM辅助软件自动生成程序这个过程却还存在着一些缺陷:

(1)需要造型过程。采用CAD/CAM技术自动生成程序,需要按照零件的形状造型,一是要花费不少的时间,二是如果造型本身就不精确,最终生成的程序加工效果就不能满足要求。

(2)自动生成的程序段数量过多。CAD/CAM造型并自动生成的程序,程序指令简单,是G00、G01、G02、G03等简单基本指令,致使程序段数量过多、程序所占内存过大,程序的运行耗时过长,降低加工效率。

(3)程序指令过于简单以至于不能很好的满足加工精度要求。自动生成的程序由简单基本指令组成,对于一些空间曲线和非圆曲面的加工,程序采用直线逼近的方式来编写,不能很好的满足零件的加工形状的要求。

(4)程序的修改具有局限性。由于自动生成的程序是根据造型得来的,编写简单但数量较多。在加工过程中如果因程序不符合加工要求而要对程序进行修改,程序段的检索极其困难,致使程序的修改目标不明确,给程序编辑带来一定的困难。

采用宏程序编程可以根据零件直接将有规律的形状或尺寸用最短的程序表示出来,既可以缩短编程时间,又具有极好的易读性和易修改性,编写出的程序简练、逻辑严密、通用性强。宏程序还具有自变量赋值可调整的优点,不需要根据加工参数重复计算、调整刀具轨迹,从而可以优化加工工艺。对于机械零件中的一些特殊的加工,例如变螺距螺纹的加工和非圆曲线、非圆曲面等,宏程序就可以发挥它独特的优势。

3 宏程序编程的加工实例

以上是对宏程序技术特点的简介和功能应用的比对,下面以某年数控技能鉴定考级试题做实例,简述宏程序编程的应用。

零件图如图1:

仿真加工实体图如图2:

4 结束语

宏程序编程具有灵活、高效、快捷的特点,是加工编程的重要补充。宏程序不仅可以实现象子程序那样,对编制相同加工操作的程序非常有用,还具有型腔加工宏程序、固定加工循环宏程序、球面加工宏程序、锥面加工宏程序等特殊功能。无论是数控技能鉴定等级考试,还是每两年举行一次的数控技能大赛,或是在机械加工企业的实际工作中,手工编程依然存在,尤其对宏程序的运用更有明确的要求。数控专业的发展在当今职业技术学校教育中的重要性不言而喻,要适应新形势,培养不同层次的数控人才,宏程序的加工应用在教学中不可或缺。以上是笔者根据几年的数控教学实践总结对宏程序编程的一点看法,不当之处敬请读者赐教。

摘要:随着数控技术的发展, 数控加工的应用越来越广泛。在实际工作中, 宏程序编程灵活、形式自由, 简练易懂, 能实现普通编程难以实现的功能, 尤其适用于非圆曲面的加工。本文介绍了数控宏程序编程技术特点、应用及实例。

实例编程 篇9

硬盘在物理扇区损坏或逻辑扇区数据错误时, 硬盘上存放的数据就会丢失。尤其是硬盘0扇区, 存放着硬盘主引导程序 (MBR) 和硬盘分区表 (DBR) 等重要数据, 及易受到病毒攻击, 该扇区数据一旦损坏, 将造成计算机不能启动、分区表损坏、数据区存放的数据丢失等灾难性后果。

目前, 常用的一些数据恢复工具软件, 如Easyrecovery、FinalData按照簇进行数据恢复, 不仅数据恢复时间长, 而且由于硬盘“碎片”的存在, 不能保证数据得到完全恢复;DiskGen分区修理工具软件只适合在DOS平台运行, 如果是移动硬盘, 则不能进行分区表修理, 重建硬盘分区表只有在打开机箱, 将移动硬盘的硬盘接入主板才能操作, 使用很不方便。给出了一个Windows平台重建硬盘分区表和修复引导的例程。

2 例程主要功能

支持USB移动硬盘。本实例支持硬盘数4个 (很容易进行硬盘数扩展) 。

重建MBR, 支持分区数12个 (很容易扩展) 。不仅能修复硬盘0扇区分区表、硬盘引导数据, 而且还能自动修复各虚拟分区的数据。

修复引导。不损坏分区, 自动修复引导。

重建分区表。集成了重建MBR和修复引导功能。

分区表的备份和恢复。

扇区数据浏览、编辑、保存。

重新载入。将0扇区、63扇区数据保存备份在本硬盘的30扇区、53扇区, 重新载入:将保存备份数据, 重新载入0扇区、63扇区。

扇区全置0、全置1。

3 动态链接库DiskSectorsRW.dll (内有13个函数) 使用介绍

(1) 函数声明:在函数前面添加extern"C"_declspec (dllimport)

例如:extern"C"_declspec (dllimport) bool_fastcall OpenHD (unsigned char bDrive) ;

(2) 函数功能、接口参数介绍如下:

4 编程实现

创建工程。File-New-Application。

保存工程。Sive All选择存放目录, 将Unit1.cpp改名为PartitionTableDoctor.cpp, Project1.bpr改名为PartitionTableDoctorProject.bpr。

Form1窗体中拖放控件Memo1。

调用动态链接库DiskSectorsRW.dll。

将库文件DiskSectorsRW.dll、DiskSectorsRW.lib拷贝到工程目录。

将库文件DiskSectorsRW.lib加入到工程。选View-->Project Manager-->在PartitionTableDoctorProject.bpr上按鼠标右键-->Add。

函数声明。在PartitionTableDoctor.cpp文件头部 (TForm1*Form1后面) , 加入动态链接库DiskSectorsRW.dll函数声明。方法:将上述:从函数声明文本代码处开始至声明文本代码结束的文本拷贝到PartitionTableDoctor.cpp文件头部即可。

调用动态链接库wbemuuid.lib, 使用WMI, 编写GetWmiInfo函数、GetDiskNameSize函数。

将库文件wbemuuid.lib拷贝到工程目录。在PartitionTableDoctor.cpp文件中添加包含文件。

(1) #include

(2) #include//COM接口IWbemLocator。

(1) 编写通过WMI获取系统信息函数GetWmiInfo、获取硬盘型号、容量、编号参数函数GetDiskNameSize。

(1) 初始化COM接口:

访问WMI, 必须先初始化COM接口, 在程序的一开始调用CoInitialize (NULL) ;初始化, 在结束时调用CoUninitialize () 释放资源。

这两个函数在#include里面定义。

(2) 获取访问WMI权限:

CoInitializeSecurity (NULL, -1, NULL, NULL, RPC_C_AU-THN_LEVEL_PKT, RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE, 0) ;//如果这个函数返回S_OK获取权限成功, 否则为失败。

核心代码如下:

(3) 编写GetWmiInfo函数。通过IWbemLocator和IWbemServices这两个COM接口访问WMI, 获取系统信息。核心代码如下:

(2) 编写获取硬盘型号、容量、编号参数函数GetDiskNameSize。

这个函数的参数:GetDiskName获得硬盘序列号, GetDiskSizeGB获得硬盘容量, GetNum获得硬盘编号。核心代码如下:

本文来自 360文秘网(www.360wenmi.com),转载请保留网址和出处

【实例编程】相关文章:

visualcmfc编程实例06-21

1综合编程实例教案04-12

铣床编程实例及答案06-05

程序编程05-17

数控编程05-30

编程计算05-09

编程探讨05-26

调试编程05-28

编程应用08-09

高级编程08-10

上一篇:富士通服务器下一篇:自动测距