《十天学会Skill》由会员分享,可在线阅读,更多相关《十天学会Skill(20页珍藏版)》请在金锄头文库上搜索。
1、学习目的:搭建一个简单的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 命令行输入ech
2、o $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文件,将以下蓝色部分代码复制
3、到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)来获取Usernames
4、trcat:在本例中将Hello这个字符串与用户名合并成一个字符串。axlUIConfirm:弹出提示框,内容为刚才strcat合并后的字符串。今天先到这里,大家先把这个Hello world程序调试出来。另外这个系列教程是让大家入门的,大家觉得写的浅也不要责怪。有时间可以先看下以下帮助文件:X:CadenceSPB_15.7docsklangusersklanguser.pdfX:CadenceSPB_15.7docsklangrefsklangref.pdfX:CadenceSPB_15.7docalgroskillalgroskill.pdf十天学会Skill之第二天By deargds
5、http:/学习目的:了解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 = stringtype(a)返回值为string另外链表类型非
6、常有用,在skill中有一系列的函数是针对链表操作的,示例如下:a = list(5,6,7);定义链表a,内容为5 6 7.如果想得到链表中第一个值,使用car函数即可,car(a)的结果为5另外还有append1,cons,remove,reverse,nth等许多函数,大家自己先看HELP吧。X:CadenceSPB_15.7docsklangusersklanguser.pdf其它数据类型如symbol,defstruct,array等请参考X:CadenceSPB_15.7docsklangusersklanguser.pdf二,函数的定义1.通常使用defun或者procedure
7、来自定义一个函数,两者的作用是一样的,区别只在乎在书写格式的差别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.函数的参数类型restoptionalkeyrest
8、不确定数目的参数,可以有多个参数。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
9、 println(You know too much!)unless( 3 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
10、( i (5 println(no) (11 println(yes) (t Other)上面简单介绍需要了解的基本知识,另外想学好SKILL,帮助文件是一定要看的,这个教程只是帮大家入门,不可能过多地去重复教程上已经有的内容。X:CadenceSPB_15.7docsklangusersklanguser.pdfX:CadenceSPB_15.7docsklangrefsklangref.pdf学习目的:了解Skill与Allegro交互接口,创建一个简单的窗体实例。一,了解Skill中常用的一些交互函数axlUIYesNo(Are you ready?);弹出YES NO选择框axlUIY
11、esNoCancel(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
12、.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选
13、择框axlUIDataBrowse(NET (RETRIEVE_NAME) test t)建议查看下axlUIDataBrowse函数的详细说明二,创建程序交互窗口Skill的窗体是通过对应的form文件来进行描述的,每个不同的窗体对应不同的FORM文件,里面包括了窗体的属性,每个控件的位置,大小,相关的属性等描述。FORM文件内容示例:FILE_TYPE=FORM_DEFN VERSION=2FORM FIXEDPORT 42 5HEADER Progress MeterTILETEXTTLOC 1 3INFO progressText 40ENDTEXTFIELD barFLOC 1 1PROGRESS 41 3ENDFIELDENDTILEENDFORMSKILL内置了一些WIN32控件,如按钮,文本框,单选,复选,列表,树状列表,下拉列表,进度条等,在F