
十天学会Skill.doc
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。
