好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

十天学会Skill.doc

20页
  • 卖家[上传人]:人***
  • 文档编号:385262313
  • 上传时间:2022-12-12
  • 文档格式:DOC
  • 文档大小:289.50KB
  • / 20 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 学习目的:搭建一个简单的Allegro Skill调试环境,写出第一个HELLO WORLD程序.1,首先选择一款适合自己的文本编辑器,免费的有SciTE, Notepad ++, 收费的有Ultra Edit, CodeWright. 以上几款软件均有语法高亮文件推荐使用SciTE, Notepad ++2,在PCBENV目录下新建一个文本文件,改名为test.il,后面范例中的编写都在这个文件中完成,如果不知道PCBENV在哪里,参考以下方法:     1.通过查看电脑环境变量中的HOME变量值. 例如HOME变量为d:\ ,对应的目录应为d:\pcbenv     2.直接在ALLEGRO 命令行输入echo $localenv 也可以得到实际的环境变量目录3,注册快捷键以方便调试,编辑ENV文件,添加如下两行,F11为载入test.il, F12为执行test命令 alias F11 skill load('"test.il"') alias F12 test如图:2010-1-26 15:25 上传下载附件 (46.71 KB) 以后,我们就可以在test.il文件中书写代码,保存后,在Allegro中按F11就会载入,然后按F12就可以执行命令test,后面会讲到这个test命令是如何注册的。

      4,来完成第一个Hello World程序用文本编辑器打开test.il文件,将以下蓝色部分代码复制到test.il文件中并保存,2010-1-26 15:27 上传下载附件 (48.88 KB) <------我是分隔线----->axlCmdRegister("test",'test) defun( test ()     axlUIConfirm(strcat("Hello ",axlGetVariable("username"))))<------我是分隔线----->回到allegro界面,按F11,再按F12.看下执行效果2010-1-26 15:26 上传下载附件 (21.03 KB) 这个Hello World程序用到了axlUIConfirm,strcat, axlGetVariable这几个函数axlGetVariable("username")来获取Usernamestrcat:在本例中将Hello这个字符串与用户名合并成一个字符串axlUIConfirm:弹出提示框,内容为刚才strcat合并后的字符串今天先到这里,大家先把这个Hello world程序调试出来。

      另外这个系列教程是让大家入门的,大家觉得写的浅也不要责怪有时间可以先看下以下帮助文件:X:\Cadence\SPB_15.7\doc\sklanguser\sklanguser.pdfX:\Cadence\SPB_15.7\doc\sklangref\sklangref.pdfX:\Cadence\SPB_15.7\doc\algroskill\algroskill.pdf十天学会Skill之第二天By deargds学习目的:了解SKILL的一些基础,变量,函数,以及流程控制一,我们先了解以下几种数据类型,整数:integer例如:2, 8, 6浮点数:float例如:2.3, 9.3265, 0.5, .8,字符串:string例如:“Hello!”原子类型:atom例如:t , nil , unbound链表:list例如:list(1,2,3) '(1,2,3)给变量赋值,除了使用=之外,还可以使用set函数.set(a,"hello")数据类型可使用type函数来查询例如:a = 1那么type(a)的返回值为fixnuma = "string"type(a)返回值为string另外链表类型非常有用,在skill中有一系列的函数是针对链表操作的,示例如下:a = list(5,6,7);定义链表a,内容为5 6 7.如果想得到链表中第一个值,使用car函数即可,car(a)的结果为5另外还有append1,cons,remove,reverse,nth等许多函数,大家自己先看HELP吧。

      X:\Cadence\SPB_15.7\doc\sklanguser\sklanguser.pdf其它数据类型如symbol,defstruct,array等请参考X:\Cadence\SPB_15.7\doc\sklanguser\sklanguser.pdf二,函数的定义1.通常使用defun或者procedure来自定义一个函数,两者的作用是一样的,区别只在乎在书写格式的差别defun(test ()        ;you can do something)procedure(test()        ;you can do something)上面两句同样是定义了一个test函数,defun定义时在函数名后要有一个空格2.局部变量的定义,使用let或prog函数,如果不需要在函数内使用跳转函数或者返回值的话使用let即可defun(test ()        let((a)                ;you can do something        ))上面示例中使用let定义了a为局部变量,其它函数无法访问3.函数的参数类型@rest  @optional  @key@rest不确定数目的参数,可以有多个参数。

      defun( test ( @rest a )         println(a))@optional可选择的参数,在调用该函数时,可以忽略此参数defun(test (@optional a )        println(a))@key指定参数的固定值defun(test (a b @key (c 3))        println(c))ps:@optional 与 @key 不能同时出现在函数参数定义中三,流程控制1.条件判断if when cond unless,双向判断if( 3 > 1 then        println("You know too much!")else        println("hehe"))when( 3 > 1        println("You know too much!"))unless( 3 < 1        println("You know too much!"));多向判断cond(        (2 > 0 ,println(2))        (3 < 0 ,println(3)))2.循环语句while for foreach;while示例i = 0;定义i的初值为0while((i <= 10)         i = i + 1;自加一次        println(i));for示例sum = 0;定义sun的初值为0for( i 1 10        sum = sum + i;自加一次        println(sun));foreach语句,方便用来循环链表类型foreach( x '(1 2 3 4)         println(x))3.选择语句case caseqi = 5 + 6case( i        (5 println("no"))        (11 println("yes"))        (t 'Other))上面简单介绍需要了解的基本知识,另外想学好SKILL,帮助文件是一定要看的,这个教程只是帮大家入门,不可能过多地去重复教程上已经有的内容。

      X:\Cadence\SPB_15.7\doc\sklanguser\sklanguser.pdfX:\Cadence\SPB_15.7\doc\sklangref\sklangref.pdf学习目的:了解Skill与Allegro交互接口,创建一个简单的窗体实例一,了解Skill中常用的一些交互函数axlUIYesNo("Are you ready?");弹出YES NO选择框axlUIYesNoCancel("Are you ready?");弹出YES NO CANCEL三态选择框以上函数会根据用户所选结果返回一个值,我们可以判断这个返回值来进行相关的操作2010-3-8 11:42 上传下载附件 (11.74 KB) axlUIMultipleChoice("Pick a choice" list("a" "b" "c"));多项选择2010-3-8 11:42 上传下载附件 (13.2 KB) axlUIPrompt( "Enter Your name" "Cat" ) ;提示用户输入内容并返回axlUIConfirm( "Hello" );弹出提示框2010-3-8 11:42 上传下载附件 (11.56 KB) 以上两个函数组合一下执行axlUIConfirm(axlUIPrompt( "Enter Your name" "Cat" ))axlMeterCreate;创建进度条,需与其它函数配合使用axlMeterUpdateaxlMeterDestroy创建进度条示例:defun(test ()        axlMeterCreate("test", "", t);创建进度条        for(n 1 4                sleep(1);延迟1秒                axlMeterUpdate(n*25 "test");更新进度        )        axlMeterDestroy();关闭进度条)2010-3-8 11:44 上传下载附件 (7.95 KB) 弹出NET选择框axlUIDataBrowse('NET '(RETRIEVE_NAME) "test" t)建议查看下axlUIDataBrowse函数的详细说明二,创建程序交互窗口Skill的窗体是通过对应的form文件来进行描述的,每个不同的窗体对应不同的FORM文件,里面包括了窗体的属性,每个控件的位置,大小,相关的属性等描述。

      FORM文件内容示例:FILE_TYPE=FORM_DEFN VERSION=2FORM FIXEDPORT 42 5HEADER "Progress Meter"TILETEXTTLOC 1 3INFO progressText 40ENDTEXTFIELD barFLOC 1 1PROGRESS 41 3ENDFIELDENDTILEENDFORMSKILL内置了一些WIN32控件,如按钮,文本框,单选,复选,列表,树状列表,下拉列表,进度条等,在F。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.