Cadence Skill 论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 22987|回复: 19

SKILL FORM语法格式详解

[复制链接]
发表于 2013-4-25 23:45:31 | 显示全部楼层 |阅读模式
allegro skill FORM采用巴科斯范式(BNF)的语法格式。
其一般格式为:
FILE_TYPE=FORM_DEFN VERSION=2
FORM [form_options]
formtype
PORT w h
HEADER "text"
form_header
{tile_def}
ENDFORM

其中:
1. “FILE_TYPE=FORM_DEFN VERSION=2” 这行内容不能修改,且必须出现在FORM文件的第一行。
2. “FORM [form_options]”表示FORM开始,FORM到ENDFORM为FORM之间的内容。
3. “formtype”有两个选择,一个为“FIXED” 另一个为 “VARIABLE”,但SKILL只支持“FIXED”类型,所以默认该部分填写“FIXED”
4. “PORT w h” 用于描述FORM的高度和宽度。其中“w-width”描述的是宽度,“h-height”描述的是高度,可根据需要填写。
5. “HEADER "text"” FORM标题栏显示的字符,将"text"替换为自己需要的字符串。
6. form_header包含以下三个选项
   1)[{default_button_def}]定义默认按键标签   2)[{popup_def}]
   3)[{message_def}]

7.“{tile_def}”这是FORM的主要部分,FORM上的各个控件都在该部分定义,比如标签、文本框、按键等。后续本站将会有详细的介绍。
TILE [<tileLabel>]
[TPANEL tileType]
[{text_def}]
[{group_def}]
[{field_def}]
[{button_def}]
[{grid_def}]
[{glex_def}]
ENDTILE
下面提供一个简单的FORM例子:
  1. FILE_TYPE=FORM_DEFN VERSION=2        ;固定不变
  2. FORM                                                        ;表示FORM开始
  3. FIXED                                                        ;FORM类型,这句也固定
  4. PORT 40 4                                                ;FORM大小
  5. HEADER "SKILL FORM TEST"                ;FORM标题栏显示的字符串

  6. TILE                                    ;TILE开始,在FORM最后必须有ENDTILE结束,否则产生错误。
  7. TEXT "Please Input Your Name:"        ;定义一个文本
  8. TLOC 1 1                        ;定义文本位置
  9. ENDTEXT                                ;文本结束

  10. FIELD My_Name                ;定义一个FIELD字段,字段名为My_Name
  11. FLOC 19 1                        ;定义位置
  12. STRFILLIN 13 13                ;定义位置
  13. ENDFIELD                        ;结束FIELD定义

  14. FIELD CMD_OK                ;定义一个FIELD字段,字段名为My_Name
  15. FLOC 35 1                        ;定义位置
  16. MENUBUTTON "OK" 4 3        ;定义一个按键,按键名为“OK”,长宽分别为4 3
  17. ENDFIELD                        ;结束FIELD定义

  18. ENDTILE                                ;结束TILE,与前面的TILE对应
  19. ENDFORM                                ;结束FORM,与前面的FORM对应
复制代码
FORM最终显示效果请看下图:
FORM_TEST.png

需要的朋友 可从附件下载FORM测试文件。
使用方法:
1.将解压出来的文件存放于电脑中
2.打开allegro,在命令栏输入skill axlFormTest("file path"),其中file path为文件完整路径。

注:
1.FORM文件的第一行必须为FILE_TYPE
2.FROM文件扩展名必须为.form
3.一个form文件中必须只有一个FORM
4.FORM文件中必须只有一个TILE定义

test.rar (584 Bytes, 下载次数: 109)
 楼主| 发表于 2013-5-11 23:08:33 | 显示全部楼层
子木 发表于 2013-5-11 22:46
这句是多余的吗?还有那位置你是如何定位的啊,就看不懂这里啊?

肯定不是多余的 啊。
FIELD CMD_OK 是定义一个字段名字,在以后的使用它都是通过这个名字来识别的。
FLOC 35 1这个是定义它的位置放在什么地方。
MENUBUTTON "OK" 4 3 这个才是关键的,定义它到底是个什么东西。这儿是定义一个按键。按键上显示为"OK"
 楼主| 发表于 2013-5-11 23:25:19 | 显示全部楼层
子木 发表于 2013-5-11 23:18
我是想知道数字35 1代表的什么意思,为什么有的用FLOC有的又用TLOC

FLOC 于TLOC 区别就再于第一个字母。
你可以这样记忆:
LOC是location(位置)的缩写。
FLOC 是为FIELD 定义坐标的,因为FIELD第一个字母是F
TLOC 是为TEXT 定义坐标的,因为TEXT第一个字母是T
当然还有其他,比如GROUP,那么就使用GLOC定义坐标。
 楼主| 发表于 2013-5-11 23:26:14 | 显示全部楼层
子木 发表于 2013-5-11 23:18
我是想知道数字35 1代表的什么意思,为什么有的用FLOC有的又用TLOC

数字代表坐标,第一个是X坐标,第二个是Y坐标。
发表于 2013-8-17 05:40:39 | 显示全部楼层
谢谢楼主!
发表于 2014-2-13 14:53:44 | 显示全部楼层
能有tab 類型的form的舉例嗎如圖下圖
2014-02-13 14 52 53.jpg
 楼主| 发表于 2014-2-13 15:22:03 | 显示全部楼层
mmmmyuitian 发表于 2014-2-13 14:53
能有tab 類型的form的舉例嗎如圖下圖

FILE_TYPE = FORM_DEFN VERSION=2
FORM
FIXED
PORT 40 35
HEADER "xxxxxx"
TILE

TABSET "tab"
OPTIONS tabsetDispatch
FLOC 2 1
FSIZE 35 17

TAB "xxxx"
xxxx

ENDTAB

TAB "xxxx"
xxxxx
ENDTAB

ENDTABSET

ENDTILE
ENDFORM
发表于 2014-2-13 15:44:55 | 显示全部楼层
fprintf(myform "TABSET "tab\"\n")
fprintf(myform "OPTIONS tabsetDispatch\n")
fprintf(myform "FLOC  2 1\n")
fprintf(myform "FSIZE  35 17\n")
fprintf(myform "TAB \"Setup\"\n")

XXXX
fprintf(myform "ENDTAB\n\n")
fprintf(myform "TAB \"CHECK\" \n")

XXX
fprintf(myform "ENDTAB\n\n")               
fprintf(myform "ENDTABSET\n\n")
請幫忙看看有什麼不同
发表于 2014-10-27 10:46:59 | 显示全部楼层
版主请问填写方框有记忆功能是怎么实现的
发表于 2015-1-2 17:47:48 | 显示全部楼层
本帖最后由 linuxfor 于 2015-1-2 18:10 编辑

强悍,自己初学者只能看看了!!
使用set telskill
Skill>axlFormTest("d:/MyEmbStudio/skill/test.form")
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|网站地图|Cadence Skill 论坛 ( 蜀ICP备13024417号 )

GMT+8, 2024-11-23 19:38 , Processed in 0.148172 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表