手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

Python在CAM软件Genesis2000中的应用

[日期:2011-01-14] 来源:Python  作者:Python [字体: ]

  摘要:本文主要讲述Python语言在Genesis2000自动化方面的应用初探。内容包括:Python语法;在genesis2000中配置Python程序运行的环境与接口;示例一个Python小程序。

  关键词:Python、Genesis2000、Python语法、面向对象、配置文件、例程

  一、概述

  现在PCB/CAM的Genesis2000自动化程序正在使用的程序语言主要有三种:C Shell、TCL/TK和Perl/TK。C-Shell 是被公认为最容易学的语言,它拥有非常简单而有限的指令,足够让你可以写出大部分的自动化程式,但其使用的图形用户界面GUI和程序间的调用总是有点不尽人意;TCL/TK在C Shell所欠缺方面表现较好,得到了大量的应用;Perl/TK在自身程序执行时间和代码长度方面很有优势,与TCL/TK一样,其使用TK作为它的图形界面。现在应用Python的公司很少,包括生益电子(现在是C Shell和TCL/TK并用),总体来说,它功能非常强大,与TCL/TK一样具有友好的用户界面,是面向对象的语言,其代码很容易理解,并且能够继承以代码重用,当开发大型程序时,它就表现最为优秀。从程序执行效率上讲, 使用TCL/TK、Perl/TK和Python开发脚本似乎都差不多,因为在Genesis2000自动化程序执行过程中,超过九成的时间都是执行Genesis2000的命令,与语言无关,只要我们所用开发语言在执行时输出的信息带有特殊的字符(具体可看/genesis/eXX/all/目录的几个cshell 脚本.是"@%#%@" 这五个字符,也就是DIR_PREFIX变量定义的),Genesis就能识别。比如python:print "@%#%@COMopen_job,job=genesislib"。所以我们在选语言时,主要关注的是界面、是否有好的开发工具、语言是否好理解和程序结构是否清晰(以便以后好维护),就这些方面讲,Python是有很大优势的。

  二、Pythhon的语法

  Python语言最有别于C Shell、Tcl/Tk及Perl/Tk的地方就是:它是一种面向对象语言(面向对象的概念应用十分广泛,如流行的Java,c++等语言都是面向对象语言,Microsoft的Windows 2000及后续操作系统均使用的是面向对象思想);C Shell、Tcl/Tk及Perl/Tk是过程性语言。下面进入Python语言的语法介绍:

  1、“>>>”相当于在C Shell下输入命令“$ ls–l”时的命令提示符“$”;

  2、print打印其后的字符串到标准输出,如print“hello”;

  3、模块(Modules):

  Modules就是已有的Python程序(无论是系统自带标准库文件如os、sys等,还是自己已经完成的Python程序),我们都可以import到自己的程序中,调用其中的函数、类、或是用其作为基类派生出自己的类等等。举例如下:

  例一:使用系统库文件模块(Modules)

  >>> import math ####导入库文件math

  >>> math.sin(0) ####用math的sin函数作计算得结果0.0

  0.0 ####程序执行,并输出结果

  例二:使用自己的程序模块(Modules)#####我将程序命名为hello.py,并放在/genesis/sys/目录下print “hello,world!” #####最简单的hello world程序现在可以如下使用上述hello.py程序>>> import sys ####导入库文件sys>>> sys.path.append(‘/genesis/sys’) ####添加程序import路径>>> import hello.py ####导入自写程序hello.pyhello,world! ####程序执行,并输出结果

  4、定义函数:

  ####程序命名为helloworld.py,以下为其内容

  def hello():

  print “Hello,World!”

  你可以如此使用它:

  >>> import helloworld

  >>> helloworld.hello()

  Hello,World!

  5、创建和使用类:

  在类中定义的函数,有可能会有如“__init__”这种形式的函数,它称为magic method,这种method能在Python的特殊环境下执行(具体取决于函数名),这种类型的函数很少会使用。如__init__能够对类的变量进行初始化赋值,__del__能够在Python程序的类执行完后清理此类使用的内存。下面举一例说明类的使用:

  class Bird:

  def __init__(self):

  self.hangry = 1

  def eat(self):

  if self.hangry:

  print ‘Aaaah……’

  self.hangry = 0

  else

  print ‘No,Thanks’

  上面的类定义了所有鸟最基本的功能:吃东西。如下是怎样使用这个Bird 类:

  >>> b = Bird() #####定义一只鸟b,初始是饿的状态

  >>> b.eat() #####鸟吃东西

  Aaaah…… #####饿,发出吃东西的Aaaah……声音,吃完变成不饿状态

  >>> b.eat() #####再次让它吃东西

  No,Thanks! #####发出No,Thanks!说明它不饿了

  上面的Bird类只是定义了鸟能吃东西,并且变为不饿状态。现在可以考虑派生的概念了,我们从上面的基类派生出一种子类SongBird,此子类鸟能够唱歌:

  Class SongBird(Bird): #####从Bird类派生而来

  def __init__(self):

  Bird.__init__(self) ####调用基类的初始化,否则不能调用基类的变量

  self.sound = ‘Squawk!’

  def sing(self):

  print self.sound

  SongBird程序如下使用:

  >>> sb = SongBird()

  >>> sb.sing()

  Squawk!

  >>> sb.eat()

  Aaaah……

  >>> sb.eat()

  No,Thanks!

  关于Python的语法先暂时介绍到此,我们可以从上面的介绍中初略明白怎样写Python程序代码,里面着重介绍了类的概念,当然这需要有面向对象方面的基础。在大学里,面向对象程序设计是计算机科学的一门重要课程,所以,你要是有学习的需求,不难找到一些较好的教材。

linux
相关资讯       python 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款