董国峰 第 2 页 2022-6-17
简 介
Crater IPTV 图形引擎是在我开发 UT 斯达康 MC-1088L 机顶盒图形应用程序过程中,逐步完善的一个图
形引擎。这个引擎是基于 NANO-X 的,里边集成 FTP 客户端,网络接口,系统扩展接口,等其他方便开
发基于 UT 斯达康 IPTV 机顶盒的单机游戏和网络游戏的扩展。引擎对外接口全部是 LUA 函数。使用 LUA
一个原因是自己在开发 PC 上的网络游戏的经验。另一个原因是 LUA 他本身小巧,快速尤其适合嵌入式环
境。希望这个引擎能给大家开发带来方便。
关于读者要求,在您学习本引擎前请先确认你已经熟悉了 LUA 脚本本,NANO-X API。
LUA:http://www.lua.org
NANO-X::http://www.microwindows.org/
By 董国峰 2007 年 3 月 于 上海
一般约定:
新增加的部分用蓝色字标识,重要的提示部分使用红色字标识。
MSN:qq11209515@yahoo.com.cn Page 2 of 37
董国峰 第 3 页 2022-6-17
目 录
第一章 开发环境………………………………………………………………………………
1.1 硬件环境…………………………………………………………………………
1.2 软件环境……………………………………………………………………………
1.3 网络环境……………………………………………………………………………
第二章 CRAER-IPTV 引擎……………………………………………………………………
2.1 启动过程……………………………………………………………………………….
2.2 引擎的脚本切换…………………………………………………………………….
2.3 引擎系统函数和环境变量…………………………………………………………..
2.4 NANO-X 库参考…………………………………………………………………….
2.5 AV 库参考…………………………………………………………………………….
更新列表……………………………………………………………………………………….
MSN:qq11209515@yahoo.com.cn Page 3 of 37
董国峰 第 4 页 2022-6-17
第一章 开发环境
1.1 硬件环境
请先确认你手上有个 UT 斯达康的 MC-1088L 机顶盒。这个盒子里边 romfs.bin 应该是 SDK1.6 版本的,
而且里边已经烧好 crater。这些信息你可以通过在任何系统下通过 telnet 登陆到机顶盒然后执行下列命令:
> cd /tmp
/tmp>crater FTPSERVERIP FTP 用户名 FTP 密码 &
如果能正确运行程序会在控制台打印出相信的信息。这些信息里包含你需要的信息。
注:引擎的启动参数可能随着版本,和启动的功能的不同而不同
1.2 软件环境
a) LUA IDE 编辑环境,LuaEdit for Lua 5.0 软件版本 3.0.2 没有什么特别的要求,我自己使用这个软件编
写 LUA 脚本。你可以按照自己的喜好选择适合的 IDE 环境。
b)FTP 服务器:需要一台 FTP 服务器用于下载脚本和资源。FTP 服务器端需要支持反向连接
FTP 服务器端目录部署:
/
Launch.tar.gz
/kreader/kreader.tar.gz
/books/
Ts …. 一种杂志的目录
/games/app 游戏压缩包所在的目录
/class
c) 关于美术和基本开发环境
屏幕的分辨率为:640×526 象素 支持真彩 32 位,支持 alpha 混合,支持 PNG,JPG,GIF 格
式图片。内存可以最大使用 60MB,支持 MP3,WAV 格式音频播放,支持 H.264/MPEG-4 视频播放。
1.3 网络环境
请你确认,你的 PC 能够 ping 到盒子,你的盒子能够访问 FTP 服务器
2.1 引擎启动过程
开发用的用盒子因为我将引擎直接烧在 rom 中所以在盒子加电启动后在系统和服务全部启动完毕后,
会自动启动 crater .crater 的启动过程分为一下几个步骤:
1 根据传入的参数连接认证服务器,认证通过后,服务器会返回用户的 ID,和其他信息.
而用户 ID 用于后边和服务器的通信的凭证.(如果引擎只是启动初级模式那么引擎将只启动和 FTP
的连接部分,而没有这一步)
2 连接 FTP 服务器,并进行认证.认证通过后首先下载 crater.tar.gz,解压
3 然后下载 launch.tar.gz,解压并运行其中的 launch.lua 脚本.
至此引擎全部启动完毕.在线网的环境中因为引擎在线网的应用程序服务器上,所以比开发环境中多了
一步下载引擎的过程.其他和开发环境的引擎的启动过程一样.
2. 2 引擎脚本框架
1)脚本必须存在的框架函数
脚本框架中必须存在的脚本函数有下面 6 个
1 function exposure_proc(event)
事件:当窗口重新可见的时候的,引擎调用此函数通知你重新绘制你的窗口
返回值:没有错误返回 0,返回 2 要求引擎启动指定的脚本,返回其他值表示出错,卸载当前脚本并退
MSN:qq11209515@yahoo.com.cn Page 4 of 37
董国峰 第 5 页 2022-6-17
出引擎。
2 function key_down_proc(event)
事件:当遥控器的按键被按下的时候引擎通知你按键事件
返回值:没有错误返回 0,返回 2 要求引擎启动指定的脚本,返回其他值表示出错,卸载当前脚本并退
出引擎。
3 function run()
事件:当系统调度当前引擎为活动的时候引擎会一直调用本函数,当系统调度引擎变的不活动的时候引
擎将一直调用 backRun 函数。
返回值:没有错误返回 0,返回 2 要求引擎启动指定的脚本,返回其他值表示出错,卸载当前脚本并退
出引擎。
4 function backRun()
事件:当系统调度当前引擎为不活动的时候引擎会一直调用本函数,当系统调度引擎为活动的时候引擎
将一直调用 run 函数
返回值:没有错误返回 0,返回 2 要求引擎启动指定的脚本,返回其他值表示出错,卸载当前脚本并退
出引擎。
5 function initializtion(...)
事件:引擎加载脚本后,引擎调用的第一个脚本函数
返回值:没有错误返回 0,返回 2 要求引擎启动指定的脚本,返回其他值表示出错,卸载当前脚本并退
出引擎。
6 function uninstall()
事件:引擎在卸载脚本前,引擎调用的最后一个脚本函数
返回值:没有错误返回 0,返回 2 要求引擎启动指定的脚本,返回其他值表示出错,卸载当前脚本并退
出引擎。
2. 3 脚本应用的工作流程
MSN:qq11209515@yahoo.com.cn Page 5 of 37