发表于 2007-5-13 23:261#
楼主GMC
Guess Macro Langure
GMC 介绍
A.甚么是GMC 语言
GMC 是第一套全中文的程序语言GMC, 不需要懂ABC 就可以写程序, 是一套宏(MACRO)语言, 使用GMC 不需要程序基础, 不需要逻辑推理能力, 其设计目的就是给不懂程序的人使用.
GMC程序在电脑端伪编译后,生成由一系列伪指令组成的SE文件,伪指令长度一般为2-4字节。整个GMC系统包括运行于PC机的GMC编译执行工具,生成的SE文件可以被下载到文曲星,由GMC解释器解释执行。
B.GMC 语言的优点
1. 跨平台
由源代码编译的SE文件不做任何修改即可直接在任何有GMC解释器的文曲星上执行,无须再次编译. 在跨平台的使用上 GMC 不需要考虑内存问题, LCD 问题, 只要有 GMC 解释器便可以.
2. 与其它语言的比较
速度:比一般C , assembly 都快, GMC 是一套 宏语言 许多使用者需要的功能都已内建在GMC中, 如 显示 BMP 图片的功能 在C 及 Assembly 中都需要许多程序来完成, 在GMC 中的只需要一个指令便完成, 其中的显示程序已由GMC开发小组 利用最高效率的算法完成, 所以其运行速度并不会输给C, Assembly
目标代码的大小: 目标代码比 C, Assembly, basic 都要小, GMC 已将许多功能由宏实现, 就像是显示图片GMC只需要一个指令.
支持的最大目标文件长度: GMC 没限制目标最大文件长度.
编程效率:GMC 是一个高结构化语言, 编成效率高.
用户友好:GMC 真正做到了与硬件隔离, 与多的高效编程语言, 都提倡此点但是真正却没人做到, GMC 语言没有任何与硬件相关的功能, 真正做到跨平台.
GMC 语言语法
A.数据类型
int 整数
整数的取值范围是 - 2147483648~ 2147483647
string 字符串
最长不能超过 256 个字符,一个汉字占2个字符
B. 变量的定义
每一行只能定义一个变量
格式为: 变量类型 变量名
例: int abc
全局变量在前面加 global 修饰
例: global int abc
C. 预处理指令
GMC项目文件组成
A. main.gmc文件
main..gmc 为一个项目中必备的一个文件, 用于定义些全局资源,
并启动首个 MC 应用
B. 文件内组成
一个有效的GMC文件由三部分组成
1、 变量定义部分
VAR_BEGIN
…… 变量定义,没有的话可留空
VAR_END
2、 顺序执行程序部分
PGM_BEGIN
…… 顺序程序,没有的话可留空
PGM_END
3、 副程序部分
SUB_BEGIN
…… 顺序程序,没有的话可留空
SUB_END
4、 事件响应部分
EVENT KEY = …
ENDEVENT
EVENT TIMER= …
ENDEVENT
…… 事件响应程序,没有的话可留空
注意,一个有效的 GMC 文件,不能2、3部分同时为空
5、 注释
与 C++ 注释方法完全一样,以 // 开始的行为注释行,/* */ 之间的代码为注释
GMC 宏(MACRO)
符号说明
1. vint
整数参数, 只能是变量
ex: srand vint
2. int
整数参数,可以是变量或常量
ex: setcolor int
3. cint
整数参数, 只能是常量
ex: sleep cint
4. string
字符串参数,可以是变量或常量
ex: playwave string
5. vstring
字符串参数, 只能是变量
ex: pop_str vstring
6. cstring
字符串参数, 只能是常量
7. ‘*’
* 后的参数表示为非必需的参数
数组命令
1. 数组_读取 [read_array array,idx,data]
原型: [read_array] [Name],[int idx], [(int .or. string) data]
功能: 读取数组
说明: 读取数组, data 可以是 int 或是 string 类型
举例: (图数组-1)
2. 数组_写入 [write_array array,idx,data]
原型: [write_array] [Name],[int idx], [(int .or. string) data]
功能: 写入数组
说明: 写入数据到数组, data 可以是 int 或是 string 类型
举例: 详细见(图数组-1)
数学命令
1. 随机数_种子 [srand int]
原型: [srand] [vint sdata] [指令] [变量]
功能: 设随机数种子
说明: 根据vint设定随机数的开始取值位置
举例: (图随机数-1)
2. 随机数_获取 [rand vint]
原型: [rand] [vint rdata]
功能: 取随机数
说明: 取随机数存在vint 中
举例: (图随机数-1)
字符命令
1. 字符_转小写 [ strlwr vstring]
原型: [strlwr] [vstring str]
功能: 大写转小写
说明: 如果vstring为大写英文字母,则返回对应的小写字母;否则返回原来的值
举例: (图字符命令-1)
2. 字符_转大写 [ strupr vstring]
原型: [strupr] [vstring str]
功能: 小写转大写
说明: 如果vstring为小写英文字母,则返回对应的大写字母;否则返回原来的值
举例: 见(图字符命令-1)
3. 字符_获取长度 [ strlen str, len]
原型: [strlen] [vstring str],[vint len]
功能: 计算字符长度
说明: 计算字符串 str 的长度,将数值存入len
举例: 见(图字符命令-1)
4. 字符串_转数字 [ str2int str, num]
原型: [str2int] [string str],[vint num]
功能: 字符串转数字
说明: 将字符串 str 转换成数值存入 num
举例: (图字符命令-2)
5. 数字_转字符串 [ int2str num, str]
原型: [int2str] [int num],[vstring str]
功能: 数字转字符串
说明: 将 num 数字转为字符串的形式存入 str 中
举例: 见(图字符命令-2)
6. 字符串_比较 [ strcmp str1, str2]
原型: [strcmp] [string str1],[string str2]
功能: 字符串比较
说明: 比较 str1, str2 是否相等, 结果可以由 sys_bool 获得
举例: (图字符命令-3)
7. 字符串_拷贝 [ midstr str1, str2, start, len]
原型: [midstr] [string str1],[vstring str2], [int start], [int len]
功能: 字符串拷贝
说明: 从str1 的第 start 个字符起,取出 len 个字符的字符串,存至 str2 中
举例: 见(图字符命令-3)
8. 字符_转ASCII [ asc str, iAsc]
原型: [asc] [string str],[vint iAsc]
功能: 字符转ASCII
说明: 将 str 中的第一个字符的 ASCII 码 存到 iAsc 中
举例: 图字符命令-4
9. 数值_ASCII转字符[ chr iAsc, str]
原型: [chr] [int iAsc] ,[vstring str]
功能: ASCII转字符
说明: 将 iAsc 表示的 ASCII 码转成字符串,存至 str, 此时 str 长度为1, 如果 iAsc 为 0 时,str 长度将为 0
举例: 见(图字符命令-4)
文字显示命令
1. 文字_显示数字 [showint x,y,num]
原型: [showint] [int x],[int y],[int num]
功能: 秀数字
说明: num为要显示的数字,可以是变量或常量
举例: 见(图文字显示命令-1)
2. 文字_显示字符串 [showstr x,y,data]
原型: [showstr] [int x],[int y],[string data]
功能: 秀字符串
说明: data 为要显示的字符串,可以是变量或常量
举例: 图文字显示命令-1
3. 文字_设字体大小 [setfontsize size]
原型: [setfontsize] [vint size]
功能: 设定显示的字体大小
说明: 字体大小分为(12,14,16,24,32,64)号字
举例: 见(图文字显示命令-1)
4. 文字_设字体风格 [setfontstyle style]
原型: [setfontstyle] [vint style]
功能: 设定显示的字体风格
说明: 字体风格分为0-正常显示,1-黑体,2-斜体,4-上划线,8删除线,16-下划线,32-注点字,该指令可混合设置,即将需设置的风格值进行垒加,则可得到所需的字体风格。
举例: 见(图文字显示命令-2)
5. 文字_获取字体风格 [getfontstyle style]
原型: [setfontstyle] [vint style]
功能: 得到当前显示的字体的风格
说明:
举例:(图文字显示命令-2)
绘图命令
1. 绘图_画点 [setpixel x,y,color]
原型: [setpixel] [int x],[int y] * ,[int color]
功能: 画点
说明: 在 (x,y) 上画点,’*’ 后的参数可以不填, 不带color参数时,使用当前颜色画点
举例: 图绘图命令-1
2. 绘图_线段 [line x1,y1,x2,y2]
原型: [line] [int x1],[int y1],[int x2],[int y2]
功能: 画线
说明: 用当前色画(x1,y1)到(x2,y2)的线
举例: 见(图绘图命令-1)
3. 绘图_射线 [lineto x,y]
原型: [lineto] [int x],[int y]
功能: 画线到目标点
说明: 用当前色从当前点画线到(x,y)
举例: 见(图绘图命令-1)
4. 绘图_矩形 [rectangle x1,y1,x2,y2,fillcolor]
原型:
[rectangle] [int x1],[int y1],[int x2],[int y2] * ,[int fillcolor]
功能: 画矩形
说明: 用当前色画一个(x1,y1)和(x2,y2)两点为对角的矩形,并用fillcolor色填充内部,当fillcolor 为 -1 时,表示用当前色填充, fillcolor 参数是非必须的,不传递fillcolor时,矩形不会被填充
举例: 图绘图命令-2
5. 绘图_移动点 [moveto x,y]
原型: [moveto] [int x],[int y]
功能: 笔刷移动到
说明: 将当前点移到(x,y)
举例: 见(图绘图命令-2)
6. 绘图_笔刷风格设定 [setpenstyle ps]
原型: [setpenstyle] [int ps]
功能: 笔刷设定
说明: 将当前点移到(x,y) 设置当前笔状态,影响所有画线的功能
0: 实线 1: 虚线 2: 双点虚线 3: 点画线
举例: 见(图绘图命令-2)
7. 绘图_颜色设定 [setcolor color]
原型: [setcolor] [int color]
功能: 笔刷颜色设定
说明: 也可以应用在秀文字上
举例: 图绘图命令-3
图形命令
1. 图形_显示BMP [showpic x,y,filename,z]
原型: [showpic] [int x],[int y], [string filename]*,[int z]
功能: 秀图片
说明: picname 为图片名,z 表示为是否为透明显示,后缀为1则透明显示
举例: 图图形命令1
2. 图形_显示4bit [showpic4bit x,y,x1,y1,filename,z]
原型: [showpic4bit] [int x],[int y],[int x1],[int y1][string filename] * ,[int z]
功能: 秀4bit, 16灰阶图片
说明: filename 为图片名, z 表示为是否为透明显示,后缀为1则透明显示
举例: 图图形命令2
3. 图形_显示gif [playgif x,y,filename,num]
原型: [playgif] [int x],[int y], [string filename],*[int num]
功能: 秀gif图片
说明: filename 为图片名,num 为显示gif的次数,缺省为循环播放.
举例: 见(图图形命令2)
4. 图形_停止gif [cleargif ]
原型: [cleargif]
功能: 停止gif图片显示
说明: picname 为图片名
举例: 见(图图形命令2)
5. 图形_清屏 [clear col ]
原型: [clear] [int col]
功能: 用指定的颜色清屏幕
说明:
举例: 见(图图形命令2)
6. 图形_保存屏幕 [savescreen hdl,x,y,wid,hei]
原型: [savescreen] [int hdl] ,[int x],[int y],[int wid],[int hei]
功能: 保存当前的屏幕上指定的区域方位
说明:
举例: 见(图图形命令3)
7. 图形_显示保存屏 [showscreenpic hdl,x,y]
原型: [showscreenpic] [int hdl] ,[int x],[int y]
功能: 显示保存的屏幕图形
说明:
举例: 见(图图形命令3)
8. 图形_释放保存屏句柄 [freescreenpic hdl]
原型: [freescreenpic] [int hdl]
功能: 释放保存的句柄
说明:
举例: 见(图图形命令3)
数据流命令
1. 资料流_等待按键 [waitkey key]
原型: [waitkey] ‘*’[vint key]
功能: 等待按键, * 后不一定要加
说明:
举例: 图数据流命令-1
音效命令
1. 声音_播放wav [playwave filename ]
原型: [playwave] [string filename]
功能: 播放声音WAV格式档
说明:
举例: 图音效命令-1
2. 声音_播放mp3 [playmp3 filename ]
原型: [playmp3] [string filename]
功能: 播放声音MP3格式档
说明:
举例: 图音效命令-1
3. 声音_播放midi [playmidi filename]
原型: [playmid] [string filename]
功能: 播放声音MID格式档
说明:
举例: 图音效命令-1
数据库命令
数据库 指的是DBF格式的数据库文件, 数据库命令是以 data_ 开头的
所有数据库命令完成后,成功与否,可通过 sys_bool 获取结果.
1.数据库_打开 [data_open filename]
原型: [data_open] [string filename]
功能: 打开数据库
说明: 打开一个数据库文件
举例: 图数据库命令-1
2. 数据库_关闭 [ data_close]
原型: [data_close]
功能: 关闭数据库
说明: 关闭一个数据库文件
举例: 见图数据库命令-1
3. 数据库_指针 [ data_goto record_idx]
原型: [data_goto] [int record_idx]
功能: 数据库指针设定
说明: 跳到第 record_idx 条记录,以0为起始
举例: 见图数据库命令-1
4. 数据库_增加 [ data_append]
原型: [data_append]
功能: 增加数据
说明: 在数据库最尾追加一条记录, 追加成功后,当前记录为最后一条记录
举例: 见图数据库命令-2
5. 数据库_插入 [ data_insert]
原型: [data_insert]
功能: 插入数据
说明: 在当前记录前插入一条记录,插入完成后,当前记录为新记录
举例: 图数据库命令-2
6. 数据库_读数字 [ data_readint index,num]
原型: [data_readint] [int index], [vint num]
功能: 读数字数据
说明: 在当前记录中,读出第 index 字段到num中
举例: 见图数据库命令-1
7. 数据库_读字符串 [ data_readstr index,data]
原型: [data_readstr] [int index], [vstring data]
功能: 读字符串数据
说明: 在当前记录中,读出第 index 字段到data中
举例: 见图数据库命令-1
8. 数据库_写数字 [ data_writeint index,num]
原型: [data_writeint] [int index], [int num]
功能: 写数字数据
说明: 在当前记录中,写入num 到第 index 字段中
举例: 见图数据库命令-2
9. 数据库_写字符串 [ data_writestr index,data]
原型: [data_writestr] [int index], [string data]
功能: 写字符串数据
说明: 在当前记录中,写入ddata 到第 index 字段中
举例: 见图数据库命令-2
10. 数据库_数据库统计[data_count iCount]
原型: [data_count] [vint iCount]
功能: 数据库纪录查询
说明: 查询当前数据库中的记录数,将结果存入 iCount
举例: 见图数据库命令-2
文件命令
1. 文件_关闭 [close_file hdl]
原型: [close_file] [vint hdl]
功能: 关闭文件
说明: 关闭文件
举例: 图文件命令-1
2. 文件_打开 [open_file hdl,filename]
原型: [open_file] [vint hdl],[vstring filename]
功能: 打开文件
说明: 打开文件, 传回文件句柄到 hdl
举例: 见图文件命令-1
3. 文件_定位 [file_seek hdl,sh,style,rsh]
原型: [file_seek] [vint hdl],[int sh] ,[int style] ,[int rsh]
功能: 文件定位
说明: 文件定位,
sh指要设定的偏移量,
style 偏移的基准点(0: 头, 1: 当前 2: 尾)
rsh传回实际到达的位置
举例: 见图文件命令-1
4. 文件_字节读取 [read_byte hdl,num,yn]
原型: [read_byte] [vint hdl],[vint num] ,[vint yn]
功能: 字节读取
说明: 字节读取,
num 存放读取的数据
yn 读取成功或失败( 1: 成功 .or. 0: 失败 )
举例: 见图文件命令-1
5. 文件_块读取 [read_block hdl,Arr,num,,rtotal]
原型:
[read_block] [vint hdl],[Name],[int total] ,[vint rtotal]
功能: 块读取
说明: 块读取,
Name 要存放的整数数组
Total 要读取的字节数
rtotal 实际读回的字节数
举例: 图文件命令-2
6. 文件_字节写入 [write_byte hdl,num,yn]
原型: [read_byte] [vint hdl],[vint num] ,[vint yn]
功能: 字节写入
说明: 字节写入,
num 要写入的数据
yn写入成功或失败( 1: 成功 .or. 0: 失败 )
举例: 见图文件命令-2
7. 文件_块写入 [write_block hdl,Arr,num,,rtotal]
原型:
[read_block] [vint hdl],[Name],[int total] ,[vint rtotal]
功能: 块写入
说明: 块写入
Name 要写入的整数数组
Total 要写入的字节数
rtotal 实际写入的字节数
举例: 见图文件命令-2
8. 文件_查找 [findfiles field,file*,path]
原型: [findfiles] [string field],[vstring file] *,
[vstring path]
功能: 在指定目录下或当前目录下(path缺省的情况)寻找文件
说明: 查找 field目录下有同种类型的数据文件分别写入file文本文件。
举例:图文件命令-3
9. 文件_读取一行 [read_string hdl,str]
原型: [read_string] [vint hdl],[string str]
功能: 读取一行
说明: 读取一行
举例: 见图文件命令-3
10. 文件_获取当前路径 [getcurrdir currdir]
原型: [getcurrdir] [string currdir]
功能: 获取当前路径
说明:
举例: 见图文件命令-3
11. 文件_设定当前路径 [setcurrdir currdir,*str]
原型: [setcurrdir] [cstring currdir] * ,[string str]
功能: 设定当前路径
说明: “*”后面返回的是当前的路径
举例: 见图文件命令-3
传值命令
本指令提供跨程序间的全局变量的传值
注意:本区域指令符合先进后出的规则,请取值时务必按顺序存取。
1. 堆栈_推入字符串 [push_str str]
原型: [push_str] [vstring str]
功能: 将字符串推入堆栈
说明:
举例:图传值命令-1,-2
2. 堆栈_推入数字 [push_int num]
原型: [push_int] [vint num]
功能: 将数字推入堆栈
说明:
举例: 见图传值命令-1,-2
3. 堆栈_取出字符串 [pop_str str]
原型: [push_str] [vstring str]
功能: 从堆栈取出字符串
说明:
举例: 见图传值命令-1,-2
4. 堆栈_取出数字 [pop_int num]
原型: [push_int] [vint num]
功能: 从堆栈取出数字
说明:
举例: 见图传值命令-1,-2
日期时间命令
1. 时间_读取年 [get_year year]
原型: [get_year] [vint year]
功能: 取时间.年
说明: 获取当前年份(公元)
举例:图时间命令-1
2. 时间_读取月 [get_month month]
原型: [get_month] [vint month]
功能: 取时间.月
说明: 获取当前月份
举例: 见图时间命令-1
3. 时间_读取日 [get_day day]
原型: [get_day] [vint day]
功能: 取时间.日
说明: 获取当前日期
举例: 见图时间命令-1
4. 时间_读取星期 [get_dayofweek week]
原型: [get_dayofweek] [vint week]
功能: 取时间.星期
说明: 获取当前是星期几
举例: 见图时间命令-1
5. 时间_读取时 [get_hour hour]
原型: [get_hour] [vint hour]
功能: 取时间.时
说明: 获取当前小时
举例: 见图时间命令-1
6. 时间_读取分 [get_minute min]
原型: [get_minute] [vint min]
功能: 取时间.分
说明: 获取当前分钟
举例: 见图时间命令-1
7. 时间_读取秒 [get_second sec]
原型: [get_second] [vint sec]
功能: 取时间.秒
说明: 获取当前秒
举例: 见图时间命令-1
8. 时间_设定年 [set_year year]
原型: [set_year] [int year]
功能: 设定时间.年
说明: 设定当前年份
举例: 图时间命令-2
9. 时间_设定月 [set_month mon]
原型: [set_month] [int mon]
功能: 设定时间.月
说明: 设定当前月份
举例: 见图时间命令-2
10. 时间_设定日 [set_day day]
原型: [set_day] [int day]
功能: 设定时间.日
说明: 设定当前日期
举例: 见图时间命令-2
11. 时间_设定时 [set_hour hour]
原型: [set_hour] [int hour]
功能: 设定时间.时
说明: 设定当前时间 小时
举例: 见图时间命令-2
12. 时间_设定分 [set_minute min]
原型: [set_minute] [int min]
功能: 设定时间.分
说明: 设定当前时间 分钟
举例: 见图时间命令-2
13. 时间_设定秒 [set_second sec]
原型: [set_second] [int sec]
功能: 设定时间.秒
说明: 设定当前时间 秒
举例: 见图时间命令-2
定时器命令
1. 内部定时器_设定 [timer ID,interval]
原型: [timer] [ID],[int interval]
功能: 定时器.设定
说明: ID 立即值 (1-9), interval 设定timer的触发间隔, 以 1/100 秒为单位
举例: 图定时器命令-1
2. 内部定时器_删除 [killtimer ID]
原型: [killtimer] [ID]
功能: 定时器. 删除
说明: ID 立即值 (1-9)
举例: 见图定时器命令-1
3. 外部定时器_设定 [set_timer_event year,month,day,hour,minute,second,filename]
原型:
[set_timer_event] [vint year], [vint month], [vint day],
[vint hour], [vint minute], [vint second], [vstring filename]
功能: 设定外部定时器
说明: 设置一个固定的时间,使无论程序运行到何处,则立即调用“*。se”执行完后会返回断点
举例: 图定时器命令-2
4. 外部码表_设定 [set_intvl_event num,filename]
原型:
[set_intvl_event] [vint num],[vstring filename]
功能: 设定外部码表
说明: 设置几秒后, 无论程序运行到何处,则立即调用“*。se”执行完后会返回断点
举例: 见图定时器命令-2
流程控制命令
关键词说明:
项目: 指se 文件, 由多个GMC 程序编译后生成.
程序: 指单独的一个gmc档案, 包含了 VAR_BEGIN , PGM_BEGIN, SUB_BEGIN…
函数: 在程序中可以包含许多的函数, 由 SUB_BEGIN 定义
1. 流程_执行GMC项目 [exec filename]
原型: [exec] [vstring filename]
功能: 执行项目
说明: 执行另外一个gmc 项目, 执行完使用 exit 返回
举例: 图流程控制命令-1
2. 流程_项目返回 [exit]
原型: [exit]
功能: 项目返回
说明: 退出目前的项目
举例: 见图流程控制命令-1
3. 流程_呼叫外部程序 [call filename]
原型: [call] [vstring filename]
功能: 呼叫外部程序, 可返回
说明: 呼叫外部程序, 与return 合用, call 指同一个项目下的GMC程序
举例: 见图流程控制命令-1
4. 流程_外部程序返回 [return]
原型: [return]
功能: 从外部程序返回
说明: 与call 合用
举例: 见图流程控制命令-1
5. 流程_执行外部程序 [run filename]
原型: [run] [vstring filename]
功能: 执行外部程序, 不可返回
说明: 与CALL 的区别为 无法使用retrn 返回
举例: 见图流程控制命令-1
6. 流程_呼叫主程序 [callpgm ]
原型: [callpgm]
功能: 呼叫主程序, 会自动返回
说明: 呼叫本文件中 PGM_BEGIN 与 PGM_END 之间的程序,运行完会自动返回, 相当于重新运行该程序.
举例: 图流程控制命令-2
7. 流程_呼叫函数 [callsub sub_name]
原型: [callsub] [sub_name]
功能: 呼叫函数, 可返回
说明: 呼叫函数,指同文件中的函数(SUB_BEGIN), 可使用 exitsub 返回呼叫点
举例: 见图流程控制命令-2
8. 流程_函数返回 [exitsub]
原型: [exitsub]
功能: 从函数返回
说明: 与callsub 合用
举例: 见图流程控制命令-2
9. 流程_等待 [sleep tt]
原型: [sleep] [cint tt]
功能: 程序停止一段时间, 以百分之一秒为单位
说明:
举例: 见图流程控制命令-2
10. 流程_呼叫外部函数 [call_extfunc funcname,*,para1,para2, hdl]
原型: [call_extfunc] [string funcname],* [string para1],
[int para2] ,[vint hdl]
功能: 呼叫外部函数,指用户自定义函数指令,用户可自己定义
说明:
举例: 见图流程控制命令-3
11. 流程_呼叫外部函数索引[call_extfunci index,*,para1,para2,hdl]
原型: [call_extfunci] [int index],* [int para1],
[string para2] ,[vint hdl]
功能: 呼叫外部函数索引,指用户自定义函数,用户可按索引来读取,调用。
说明:
举例: 见图流程控制命令-3
系统命令
1. 系统_项目名称 [PROJECT_NAME filename]
原型: [PROJECT] [filename]
功能: 设定项目名称
说明: 项目名称最多只能有16个字节(一个中文2个字节,英文字母1个字节)
该命令只能出现在 main.gmc 里面,用以标记本项目的唯一名称
该名会在运行时在系统内注册,可以被其它项目程序查询,
filename 必须为立即值
举例: 图系统命令-1
2. 系统_逻辑值 [sys_bool bresult]
原型: [sys_bool] [int bresult]
功能: 查询系统逻辑值,存入 bResult 中
说明:
举例: 见(图系统命令-1)
GMC语句
条件语句
1. 条件_假如
原型:
if (条件_假如)… then (则)
…….
else(否则)
……..
endif(结束假如)
举例: 见图条件语句-1
2. 条件_当
原型:
while (条件_当)…
…….
Endwhile (结束当)
举例: 图条件语句-1
系统语句
1. 系统_变量定义
原型: VAR_BEGIN (系统_变量开始)
VAR_END (系统_变量结束)
功能: 设定便量定义区域
说明:
举例: 见图事件命令-1
2. 系统_主程序体
原型: PGM_BEGIN (系统_主程序开始)
PGM_END (系统_主程序结束)
功能: 设定主程序开始运行区域
说明: 每个 gmc 主程序的开始运行点
举例: 见图事件命令-1
3. 系统_函数
原型: SUB_BEGIN sub_name (系统_函数开始)
SUB_END (系统_函数结束)
功能: 设定函数区域
说明: sub_name 为函数名称, 使用 callsub 呼叫, 在SUB_END 前必须加入 return 已返回呼叫点
举例: 见图事件命令-1
4. 系统_事件 (按键)
原型: EVENT KEY=’a’ (系统_按键事件开始)
ENDEVENT (系统_按键事件结束)
功能: 按键事件函数
说明:
举例: 见图事件命令-1
5. 系统_事件 (记数器)
原型: EVENT timer=1 (系统_计数器事件开始)
ENDEVENT (系统_计数器事件结束)
功能: 记数器事件函数
说明:
举例: 图事件命令-1
Guess Macro Langure
GMC 介绍
A.甚么是GMC 语言
GMC 是第一套全中文的程序语言GMC, 不需要懂ABC 就可以写程序, 是一套宏(MACRO)语言, 使用GMC 不需要程序基础, 不需要逻辑推理能力, 其设计目的就是给不懂程序的人使用.
GMC程序在电脑端伪编译后,生成由一系列伪指令组成的SE文件,伪指令长度一般为2-4字节。整个GMC系统包括运行于PC机的GMC编译执行工具,生成的SE文件可以被下载到文曲星,由GMC解释器解释执行。
B.GMC 语言的优点
1. 跨平台
由源代码编译的SE文件不做任何修改即可直接在任何有GMC解释器的文曲星上执行,无须再次编译. 在跨平台的使用上 GMC 不需要考虑内存问题, LCD 问题, 只要有 GMC 解释器便可以.
2. 与其它语言的比较
速度:比一般C , assembly 都快, GMC 是一套 宏语言 许多使用者需要的功能都已内建在GMC中, 如 显示 BMP 图片的功能 在C 及 Assembly 中都需要许多程序来完成, 在GMC 中的只需要一个指令便完成, 其中的显示程序已由GMC开发小组 利用最高效率的算法完成, 所以其运行速度并不会输给C, Assembly
目标代码的大小: 目标代码比 C, Assembly, basic 都要小, GMC 已将许多功能由宏实现, 就像是显示图片GMC只需要一个指令.
支持的最大目标文件长度: GMC 没限制目标最大文件长度.
编程效率:GMC 是一个高结构化语言, 编成效率高.
用户友好:GMC 真正做到了与硬件隔离, 与多的高效编程语言, 都提倡此点但是真正却没人做到, GMC 语言没有任何与硬件相关的功能, 真正做到跨平台.
GMC 语言语法
A.数据类型
int 整数
整数的取值范围是 - 2147483648~ 2147483647
string 字符串
最长不能超过 256 个字符,一个汉字占2个字符
B. 变量的定义
每一行只能定义一个变量
格式为: 变量类型 变量名
例: int abc
全局变量在前面加 global 修饰
例: global int abc
C. 预处理指令
GMC项目文件组成
A. main.gmc文件
main..gmc 为一个项目中必备的一个文件, 用于定义些全局资源,
并启动首个 MC 应用
B. 文件内组成
一个有效的GMC文件由三部分组成
1、 变量定义部分
VAR_BEGIN
…… 变量定义,没有的话可留空
VAR_END
2、 顺序执行程序部分
PGM_BEGIN
…… 顺序程序,没有的话可留空
PGM_END
3、 副程序部分
SUB_BEGIN
…… 顺序程序,没有的话可留空
SUB_END
4、 事件响应部分
EVENT KEY = …
ENDEVENT
EVENT TIMER= …
ENDEVENT
…… 事件响应程序,没有的话可留空
注意,一个有效的 GMC 文件,不能2、3部分同时为空
5、 注释
与 C++ 注释方法完全一样,以 // 开始的行为注释行,/* */ 之间的代码为注释
GMC 宏(MACRO)
符号说明
1. vint
整数参数, 只能是变量
ex: srand vint
2. int
整数参数,可以是变量或常量
ex: setcolor int
3. cint
整数参数, 只能是常量
ex: sleep cint
4. string
字符串参数,可以是变量或常量
ex: playwave string
5. vstring
字符串参数, 只能是变量
ex: pop_str vstring
6. cstring
字符串参数, 只能是常量
7. ‘*’
* 后的参数表示为非必需的参数
数组命令
1. 数组_读取 [read_array array,idx,data]
原型: [read_array] [Name],[int idx], [(int .or. string) data]
功能: 读取数组
说明: 读取数组, data 可以是 int 或是 string 类型
举例: (图数组-1)
2. 数组_写入 [write_array array,idx,data]
原型: [write_array] [Name],[int idx], [(int .or. string) data]
功能: 写入数组
说明: 写入数据到数组, data 可以是 int 或是 string 类型
举例: 详细见(图数组-1)
数学命令
1. 随机数_种子 [srand int]
原型: [srand] [vint sdata] [指令] [变量]
功能: 设随机数种子
说明: 根据vint设定随机数的开始取值位置
举例: (图随机数-1)
2. 随机数_获取 [rand vint]
原型: [rand] [vint rdata]
功能: 取随机数
说明: 取随机数存在vint 中
举例: (图随机数-1)
字符命令
1. 字符_转小写 [ strlwr vstring]
原型: [strlwr] [vstring str]
功能: 大写转小写
说明: 如果vstring为大写英文字母,则返回对应的小写字母;否则返回原来的值
举例: (图字符命令-1)
2. 字符_转大写 [ strupr vstring]
原型: [strupr] [vstring str]
功能: 小写转大写
说明: 如果vstring为小写英文字母,则返回对应的大写字母;否则返回原来的值
举例: 见(图字符命令-1)
3. 字符_获取长度 [ strlen str, len]
原型: [strlen] [vstring str],[vint len]
功能: 计算字符长度
说明: 计算字符串 str 的长度,将数值存入len
举例: 见(图字符命令-1)
4. 字符串_转数字 [ str2int str, num]
原型: [str2int] [string str],[vint num]
功能: 字符串转数字
说明: 将字符串 str 转换成数值存入 num
举例: (图字符命令-2)
5. 数字_转字符串 [ int2str num, str]
原型: [int2str] [int num],[vstring str]
功能: 数字转字符串
说明: 将 num 数字转为字符串的形式存入 str 中
举例: 见(图字符命令-2)
6. 字符串_比较 [ strcmp str1, str2]
原型: [strcmp] [string str1],[string str2]
功能: 字符串比较
说明: 比较 str1, str2 是否相等, 结果可以由 sys_bool 获得
举例: (图字符命令-3)
7. 字符串_拷贝 [ midstr str1, str2, start, len]
原型: [midstr] [string str1],[vstring str2], [int start], [int len]
功能: 字符串拷贝
说明: 从str1 的第 start 个字符起,取出 len 个字符的字符串,存至 str2 中
举例: 见(图字符命令-3)
8. 字符_转ASCII [ asc str, iAsc]
原型: [asc] [string str],[vint iAsc]
功能: 字符转ASCII
说明: 将 str 中的第一个字符的 ASCII 码 存到 iAsc 中
举例: 图字符命令-4
9. 数值_ASCII转字符[ chr iAsc, str]
原型: [chr] [int iAsc] ,[vstring str]
功能: ASCII转字符
说明: 将 iAsc 表示的 ASCII 码转成字符串,存至 str, 此时 str 长度为1, 如果 iAsc 为 0 时,str 长度将为 0
举例: 见(图字符命令-4)
文字显示命令
1. 文字_显示数字 [showint x,y,num]
原型: [showint] [int x],[int y],[int num]
功能: 秀数字
说明: num为要显示的数字,可以是变量或常量
举例: 见(图文字显示命令-1)
2. 文字_显示字符串 [showstr x,y,data]
原型: [showstr] [int x],[int y],[string data]
功能: 秀字符串
说明: data 为要显示的字符串,可以是变量或常量
举例: 图文字显示命令-1
3. 文字_设字体大小 [setfontsize size]
原型: [setfontsize] [vint size]
功能: 设定显示的字体大小
说明: 字体大小分为(12,14,16,24,32,64)号字
举例: 见(图文字显示命令-1)
4. 文字_设字体风格 [setfontstyle style]
原型: [setfontstyle] [vint style]
功能: 设定显示的字体风格
说明: 字体风格分为0-正常显示,1-黑体,2-斜体,4-上划线,8删除线,16-下划线,32-注点字,该指令可混合设置,即将需设置的风格值进行垒加,则可得到所需的字体风格。
举例: 见(图文字显示命令-2)
5. 文字_获取字体风格 [getfontstyle style]
原型: [setfontstyle] [vint style]
功能: 得到当前显示的字体的风格
说明:
举例:(图文字显示命令-2)
绘图命令
1. 绘图_画点 [setpixel x,y,color]
原型: [setpixel] [int x],[int y] * ,[int color]
功能: 画点
说明: 在 (x,y) 上画点,’*’ 后的参数可以不填, 不带color参数时,使用当前颜色画点
举例: 图绘图命令-1
2. 绘图_线段 [line x1,y1,x2,y2]
原型: [line] [int x1],[int y1],[int x2],[int y2]
功能: 画线
说明: 用当前色画(x1,y1)到(x2,y2)的线
举例: 见(图绘图命令-1)
3. 绘图_射线 [lineto x,y]
原型: [lineto] [int x],[int y]
功能: 画线到目标点
说明: 用当前色从当前点画线到(x,y)
举例: 见(图绘图命令-1)
4. 绘图_矩形 [rectangle x1,y1,x2,y2,fillcolor]
原型:
[rectangle] [int x1],[int y1],[int x2],[int y2] * ,[int fillcolor]
功能: 画矩形
说明: 用当前色画一个(x1,y1)和(x2,y2)两点为对角的矩形,并用fillcolor色填充内部,当fillcolor 为 -1 时,表示用当前色填充, fillcolor 参数是非必须的,不传递fillcolor时,矩形不会被填充
举例: 图绘图命令-2
5. 绘图_移动点 [moveto x,y]
原型: [moveto] [int x],[int y]
功能: 笔刷移动到
说明: 将当前点移到(x,y)
举例: 见(图绘图命令-2)
6. 绘图_笔刷风格设定 [setpenstyle ps]
原型: [setpenstyle] [int ps]
功能: 笔刷设定
说明: 将当前点移到(x,y) 设置当前笔状态,影响所有画线的功能
0: 实线 1: 虚线 2: 双点虚线 3: 点画线
举例: 见(图绘图命令-2)
7. 绘图_颜色设定 [setcolor color]
原型: [setcolor] [int color]
功能: 笔刷颜色设定
说明: 也可以应用在秀文字上
举例: 图绘图命令-3
图形命令
1. 图形_显示BMP [showpic x,y,filename,z]
原型: [showpic] [int x],[int y], [string filename]*,[int z]
功能: 秀图片
说明: picname 为图片名,z 表示为是否为透明显示,后缀为1则透明显示
举例: 图图形命令1
2. 图形_显示4bit [showpic4bit x,y,x1,y1,filename,z]
原型: [showpic4bit] [int x],[int y],[int x1],[int y1][string filename] * ,[int z]
功能: 秀4bit, 16灰阶图片
说明: filename 为图片名, z 表示为是否为透明显示,后缀为1则透明显示
举例: 图图形命令2
3. 图形_显示gif [playgif x,y,filename,num]
原型: [playgif] [int x],[int y], [string filename],*[int num]
功能: 秀gif图片
说明: filename 为图片名,num 为显示gif的次数,缺省为循环播放.
举例: 见(图图形命令2)
4. 图形_停止gif [cleargif ]
原型: [cleargif]
功能: 停止gif图片显示
说明: picname 为图片名
举例: 见(图图形命令2)
5. 图形_清屏 [clear col ]
原型: [clear] [int col]
功能: 用指定的颜色清屏幕
说明:
举例: 见(图图形命令2)
6. 图形_保存屏幕 [savescreen hdl,x,y,wid,hei]
原型: [savescreen] [int hdl] ,[int x],[int y],[int wid],[int hei]
功能: 保存当前的屏幕上指定的区域方位
说明:
举例: 见(图图形命令3)
7. 图形_显示保存屏 [showscreenpic hdl,x,y]
原型: [showscreenpic] [int hdl] ,[int x],[int y]
功能: 显示保存的屏幕图形
说明:
举例: 见(图图形命令3)
8. 图形_释放保存屏句柄 [freescreenpic hdl]
原型: [freescreenpic] [int hdl]
功能: 释放保存的句柄
说明:
举例: 见(图图形命令3)
数据流命令
1. 资料流_等待按键 [waitkey key]
原型: [waitkey] ‘*’[vint key]
功能: 等待按键, * 后不一定要加
说明:
举例: 图数据流命令-1
音效命令
1. 声音_播放wav [playwave filename ]
原型: [playwave] [string filename]
功能: 播放声音WAV格式档
说明:
举例: 图音效命令-1
2. 声音_播放mp3 [playmp3 filename ]
原型: [playmp3] [string filename]
功能: 播放声音MP3格式档
说明:
举例: 图音效命令-1
3. 声音_播放midi [playmidi filename]
原型: [playmid] [string filename]
功能: 播放声音MID格式档
说明:
举例: 图音效命令-1
数据库命令
数据库 指的是DBF格式的数据库文件, 数据库命令是以 data_ 开头的
所有数据库命令完成后,成功与否,可通过 sys_bool 获取结果.
1.数据库_打开 [data_open filename]
原型: [data_open] [string filename]
功能: 打开数据库
说明: 打开一个数据库文件
举例: 图数据库命令-1
2. 数据库_关闭 [ data_close]
原型: [data_close]
功能: 关闭数据库
说明: 关闭一个数据库文件
举例: 见图数据库命令-1
3. 数据库_指针 [ data_goto record_idx]
原型: [data_goto] [int record_idx]
功能: 数据库指针设定
说明: 跳到第 record_idx 条记录,以0为起始
举例: 见图数据库命令-1
4. 数据库_增加 [ data_append]
原型: [data_append]
功能: 增加数据
说明: 在数据库最尾追加一条记录, 追加成功后,当前记录为最后一条记录
举例: 见图数据库命令-2
5. 数据库_插入 [ data_insert]
原型: [data_insert]
功能: 插入数据
说明: 在当前记录前插入一条记录,插入完成后,当前记录为新记录
举例: 图数据库命令-2
6. 数据库_读数字 [ data_readint index,num]
原型: [data_readint] [int index], [vint num]
功能: 读数字数据
说明: 在当前记录中,读出第 index 字段到num中
举例: 见图数据库命令-1
7. 数据库_读字符串 [ data_readstr index,data]
原型: [data_readstr] [int index], [vstring data]
功能: 读字符串数据
说明: 在当前记录中,读出第 index 字段到data中
举例: 见图数据库命令-1
8. 数据库_写数字 [ data_writeint index,num]
原型: [data_writeint] [int index], [int num]
功能: 写数字数据
说明: 在当前记录中,写入num 到第 index 字段中
举例: 见图数据库命令-2
9. 数据库_写字符串 [ data_writestr index,data]
原型: [data_writestr] [int index], [string data]
功能: 写字符串数据
说明: 在当前记录中,写入ddata 到第 index 字段中
举例: 见图数据库命令-2
10. 数据库_数据库统计[data_count iCount]
原型: [data_count] [vint iCount]
功能: 数据库纪录查询
说明: 查询当前数据库中的记录数,将结果存入 iCount
举例: 见图数据库命令-2
文件命令
1. 文件_关闭 [close_file hdl]
原型: [close_file] [vint hdl]
功能: 关闭文件
说明: 关闭文件
举例: 图文件命令-1
2. 文件_打开 [open_file hdl,filename]
原型: [open_file] [vint hdl],[vstring filename]
功能: 打开文件
说明: 打开文件, 传回文件句柄到 hdl
举例: 见图文件命令-1
3. 文件_定位 [file_seek hdl,sh,style,rsh]
原型: [file_seek] [vint hdl],[int sh] ,[int style] ,[int rsh]
功能: 文件定位
说明: 文件定位,
sh指要设定的偏移量,
style 偏移的基准点(0: 头, 1: 当前 2: 尾)
rsh传回实际到达的位置
举例: 见图文件命令-1
4. 文件_字节读取 [read_byte hdl,num,yn]
原型: [read_byte] [vint hdl],[vint num] ,[vint yn]
功能: 字节读取
说明: 字节读取,
num 存放读取的数据
yn 读取成功或失败( 1: 成功 .or. 0: 失败 )
举例: 见图文件命令-1
5. 文件_块读取 [read_block hdl,Arr,num,,rtotal]
原型:
[read_block] [vint hdl],[Name],[int total] ,[vint rtotal]
功能: 块读取
说明: 块读取,
Name 要存放的整数数组
Total 要读取的字节数
rtotal 实际读回的字节数
举例: 图文件命令-2
6. 文件_字节写入 [write_byte hdl,num,yn]
原型: [read_byte] [vint hdl],[vint num] ,[vint yn]
功能: 字节写入
说明: 字节写入,
num 要写入的数据
yn写入成功或失败( 1: 成功 .or. 0: 失败 )
举例: 见图文件命令-2
7. 文件_块写入 [write_block hdl,Arr,num,,rtotal]
原型:
[read_block] [vint hdl],[Name],[int total] ,[vint rtotal]
功能: 块写入
说明: 块写入
Name 要写入的整数数组
Total 要写入的字节数
rtotal 实际写入的字节数
举例: 见图文件命令-2
8. 文件_查找 [findfiles field,file*,path]
原型: [findfiles] [string field],[vstring file] *,
[vstring path]
功能: 在指定目录下或当前目录下(path缺省的情况)寻找文件
说明: 查找 field目录下有同种类型的数据文件分别写入file文本文件。
举例:图文件命令-3
9. 文件_读取一行 [read_string hdl,str]
原型: [read_string] [vint hdl],[string str]
功能: 读取一行
说明: 读取一行
举例: 见图文件命令-3
10. 文件_获取当前路径 [getcurrdir currdir]
原型: [getcurrdir] [string currdir]
功能: 获取当前路径
说明:
举例: 见图文件命令-3
11. 文件_设定当前路径 [setcurrdir currdir,*str]
原型: [setcurrdir] [cstring currdir] * ,[string str]
功能: 设定当前路径
说明: “*”后面返回的是当前的路径
举例: 见图文件命令-3
传值命令
本指令提供跨程序间的全局变量的传值
注意:本区域指令符合先进后出的规则,请取值时务必按顺序存取。
1. 堆栈_推入字符串 [push_str str]
原型: [push_str] [vstring str]
功能: 将字符串推入堆栈
说明:
举例:图传值命令-1,-2
2. 堆栈_推入数字 [push_int num]
原型: [push_int] [vint num]
功能: 将数字推入堆栈
说明:
举例: 见图传值命令-1,-2
3. 堆栈_取出字符串 [pop_str str]
原型: [push_str] [vstring str]
功能: 从堆栈取出字符串
说明:
举例: 见图传值命令-1,-2
4. 堆栈_取出数字 [pop_int num]
原型: [push_int] [vint num]
功能: 从堆栈取出数字
说明:
举例: 见图传值命令-1,-2
日期时间命令
1. 时间_读取年 [get_year year]
原型: [get_year] [vint year]
功能: 取时间.年
说明: 获取当前年份(公元)
举例:图时间命令-1
2. 时间_读取月 [get_month month]
原型: [get_month] [vint month]
功能: 取时间.月
说明: 获取当前月份
举例: 见图时间命令-1
3. 时间_读取日 [get_day day]
原型: [get_day] [vint day]
功能: 取时间.日
说明: 获取当前日期
举例: 见图时间命令-1
4. 时间_读取星期 [get_dayofweek week]
原型: [get_dayofweek] [vint week]
功能: 取时间.星期
说明: 获取当前是星期几
举例: 见图时间命令-1
5. 时间_读取时 [get_hour hour]
原型: [get_hour] [vint hour]
功能: 取时间.时
说明: 获取当前小时
举例: 见图时间命令-1
6. 时间_读取分 [get_minute min]
原型: [get_minute] [vint min]
功能: 取时间.分
说明: 获取当前分钟
举例: 见图时间命令-1
7. 时间_读取秒 [get_second sec]
原型: [get_second] [vint sec]
功能: 取时间.秒
说明: 获取当前秒
举例: 见图时间命令-1
8. 时间_设定年 [set_year year]
原型: [set_year] [int year]
功能: 设定时间.年
说明: 设定当前年份
举例: 图时间命令-2
9. 时间_设定月 [set_month mon]
原型: [set_month] [int mon]
功能: 设定时间.月
说明: 设定当前月份
举例: 见图时间命令-2
10. 时间_设定日 [set_day day]
原型: [set_day] [int day]
功能: 设定时间.日
说明: 设定当前日期
举例: 见图时间命令-2
11. 时间_设定时 [set_hour hour]
原型: [set_hour] [int hour]
功能: 设定时间.时
说明: 设定当前时间 小时
举例: 见图时间命令-2
12. 时间_设定分 [set_minute min]
原型: [set_minute] [int min]
功能: 设定时间.分
说明: 设定当前时间 分钟
举例: 见图时间命令-2
13. 时间_设定秒 [set_second sec]
原型: [set_second] [int sec]
功能: 设定时间.秒
说明: 设定当前时间 秒
举例: 见图时间命令-2
定时器命令
1. 内部定时器_设定 [timer ID,interval]
原型: [timer] [ID],[int interval]
功能: 定时器.设定
说明: ID 立即值 (1-9), interval 设定timer的触发间隔, 以 1/100 秒为单位
举例: 图定时器命令-1
2. 内部定时器_删除 [killtimer ID]
原型: [killtimer] [ID]
功能: 定时器. 删除
说明: ID 立即值 (1-9)
举例: 见图定时器命令-1
3. 外部定时器_设定 [set_timer_event year,month,day,hour,minute,second,filename]
原型:
[set_timer_event] [vint year], [vint month], [vint day],
[vint hour], [vint minute], [vint second], [vstring filename]
功能: 设定外部定时器
说明: 设置一个固定的时间,使无论程序运行到何处,则立即调用“*。se”执行完后会返回断点
举例: 图定时器命令-2
4. 外部码表_设定 [set_intvl_event num,filename]
原型:
[set_intvl_event] [vint num],[vstring filename]
功能: 设定外部码表
说明: 设置几秒后, 无论程序运行到何处,则立即调用“*。se”执行完后会返回断点
举例: 见图定时器命令-2
流程控制命令
关键词说明:
项目: 指se 文件, 由多个GMC 程序编译后生成.
程序: 指单独的一个gmc档案, 包含了 VAR_BEGIN , PGM_BEGIN, SUB_BEGIN…
函数: 在程序中可以包含许多的函数, 由 SUB_BEGIN 定义
1. 流程_执行GMC项目 [exec filename]
原型: [exec] [vstring filename]
功能: 执行项目
说明: 执行另外一个gmc 项目, 执行完使用 exit 返回
举例: 图流程控制命令-1
2. 流程_项目返回 [exit]
原型: [exit]
功能: 项目返回
说明: 退出目前的项目
举例: 见图流程控制命令-1
3. 流程_呼叫外部程序 [call filename]
原型: [call] [vstring filename]
功能: 呼叫外部程序, 可返回
说明: 呼叫外部程序, 与return 合用, call 指同一个项目下的GMC程序
举例: 见图流程控制命令-1
4. 流程_外部程序返回 [return]
原型: [return]
功能: 从外部程序返回
说明: 与call 合用
举例: 见图流程控制命令-1
5. 流程_执行外部程序 [run filename]
原型: [run] [vstring filename]
功能: 执行外部程序, 不可返回
说明: 与CALL 的区别为 无法使用retrn 返回
举例: 见图流程控制命令-1
6. 流程_呼叫主程序 [callpgm ]
原型: [callpgm]
功能: 呼叫主程序, 会自动返回
说明: 呼叫本文件中 PGM_BEGIN 与 PGM_END 之间的程序,运行完会自动返回, 相当于重新运行该程序.
举例: 图流程控制命令-2
7. 流程_呼叫函数 [callsub sub_name]
原型: [callsub] [sub_name]
功能: 呼叫函数, 可返回
说明: 呼叫函数,指同文件中的函数(SUB_BEGIN), 可使用 exitsub 返回呼叫点
举例: 见图流程控制命令-2
8. 流程_函数返回 [exitsub]
原型: [exitsub]
功能: 从函数返回
说明: 与callsub 合用
举例: 见图流程控制命令-2
9. 流程_等待 [sleep tt]
原型: [sleep] [cint tt]
功能: 程序停止一段时间, 以百分之一秒为单位
说明:
举例: 见图流程控制命令-2
10. 流程_呼叫外部函数 [call_extfunc funcname,*,para1,para2, hdl]
原型: [call_extfunc] [string funcname],* [string para1],
[int para2] ,[vint hdl]
功能: 呼叫外部函数,指用户自定义函数指令,用户可自己定义
说明:
举例: 见图流程控制命令-3
11. 流程_呼叫外部函数索引[call_extfunci index,*,para1,para2,hdl]
原型: [call_extfunci] [int index],* [int para1],
[string para2] ,[vint hdl]
功能: 呼叫外部函数索引,指用户自定义函数,用户可按索引来读取,调用。
说明:
举例: 见图流程控制命令-3
系统命令
1. 系统_项目名称 [PROJECT_NAME filename]
原型: [PROJECT] [filename]
功能: 设定项目名称
说明: 项目名称最多只能有16个字节(一个中文2个字节,英文字母1个字节)
该命令只能出现在 main.gmc 里面,用以标记本项目的唯一名称
该名会在运行时在系统内注册,可以被其它项目程序查询,
filename 必须为立即值
举例: 图系统命令-1
2. 系统_逻辑值 [sys_bool bresult]
原型: [sys_bool] [int bresult]
功能: 查询系统逻辑值,存入 bResult 中
说明:
举例: 见(图系统命令-1)
GMC语句
条件语句
1. 条件_假如
原型:
if (条件_假如)… then (则)
…….
else(否则)
……..
endif(结束假如)
举例: 见图条件语句-1
2. 条件_当
原型:
while (条件_当)…
…….
Endwhile (结束当)
举例: 图条件语句-1
系统语句
1. 系统_变量定义
原型: VAR_BEGIN (系统_变量开始)
VAR_END (系统_变量结束)
功能: 设定便量定义区域
说明:
举例: 见图事件命令-1
2. 系统_主程序体
原型: PGM_BEGIN (系统_主程序开始)
PGM_END (系统_主程序结束)
功能: 设定主程序开始运行区域
说明: 每个 gmc 主程序的开始运行点
举例: 见图事件命令-1
3. 系统_函数
原型: SUB_BEGIN sub_name (系统_函数开始)
SUB_END (系统_函数结束)
功能: 设定函数区域
说明: sub_name 为函数名称, 使用 callsub 呼叫, 在SUB_END 前必须加入 return 已返回呼叫点
举例: 见图事件命令-1
4. 系统_事件 (按键)
原型: EVENT KEY=’a’ (系统_按键事件开始)
ENDEVENT (系统_按键事件结束)
功能: 按键事件函数
说明:
举例: 见图事件命令-1
5. 系统_事件 (记数器)
原型: EVENT timer=1 (系统_计数器事件开始)
ENDEVENT (系统_计数器事件结束)
功能: 记数器事件函数
说明:
举例: 图事件命令-1
签名:[size6]天下谁人不知君 莫道销魂与近亲 流星变天我欲狂 蝴蝶悠然化浓香[/size]
UID 13986

