CN101840415A - 一种在b/s架构下通过lua脚本控制本地资源的方法 - Google Patents
一种在b/s架构下通过lua脚本控制本地资源的方法 Download PDFInfo
- Publication number
- CN101840415A CN101840415A CN 201010125396 CN201010125396A CN101840415A CN 101840415 A CN101840415 A CN 101840415A CN 201010125396 CN201010125396 CN 201010125396 CN 201010125396 A CN201010125396 A CN 201010125396A CN 101840415 A CN101840415 A CN 101840415A
- Authority
- CN
- China
- Prior art keywords
- lua
- script
- browser
- lua script
- framework
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
- Computer And Data Communications (AREA)
- Information Transfer Between Computers (AREA)
Abstract
一种在B/S架构下通过LUA脚本控制本地资源的方法,包括:根据实际业务的需求在网页脚本中嵌入LUA脚本,当终端嵌入式WEB浏览器下载解析该页面时就会提取其中的LUA脚本,立刻或者是在某个用户输入事件时调用虚拟机执行相应的LUA脚本;对WEB浏览器做修改,使其具备从网页脚本中提取LUA脚本和在触发某个事件时执行相应脚本的能力。本发明采用LUA取代javascript作为浏览器的嵌入式脚本解析器,使浏览器对本地资源的访问变得容易。
Description
【技术领域】
本发明属于具有嵌入式WAP浏览器功能的终端产品,具体是指一种在B/S架构下通过LUA脚本控制本地资源的方法。
【背景技术】
终端产品在功能上除了具有普通的通讯功能外,还可能根据产品的应用行业的业务需要,定制了不同的应用程序来完成行业中的一些应用要求,传统的做法是:
1.采用C/S架构设计,客户端应用程序完成绝大部分业务逻辑,在有需要时与服务端程序进行数据交互,客户端应用程序对本地资源具有控制权。
2.采用B/S架构设计,客户端运行浏览器并连接至服务器,大部分业务逻辑和数据都由服务器传至本地运行。但浏览器不具备对本地资源的控制能力,与本地资源相关的业务逻辑在这种架构下难以实现。
这两种方式各有优缺点,B/S架构下的客户端浏览器在处理本地资源的能力上较弱,特别是一些可配置的外设,例如扫描枪、打印机、读卡器等。如果浏览器需要和这些外设进行交互,一定需要扩展脚本处理的能力。目前浏览器当中内嵌的脚本语言一般为javascript,而本地资源提供的驱动接口一般为C函数库,javascript不能直接调用C函数库。
【发明内容】
本发明所要解决的技术问题在于提供一种在B/S架构下通过LUA脚本控制本地资源的方法,采用LUA取代javascript作为浏览器的嵌入式脚本解析器,使浏览器对本地资源的访问变得容易。
本发明采用以下技术方案解决上述技术问题:
一种在B/S架构下通过LUA脚本控制本地资源的方法,包括:根据实际业务的需求在网页脚本中嵌入LUA脚本,当终端嵌入式WEB浏览器下载解析该页面时就会提取其中的LUA脚本,立刻或者是在某个用户输入事件时调用虚拟机执行相应的LUA脚本;对WEB浏览器做修改,使其具备从网页脚本中提取LUA脚本和在触发某个事件时执行相应脚本的能力。
还包括:如果浏览器需要获取LUA脚本的执行结果时,就需要LUA脚本把执行结果通过IPC机制反馈给浏览器,浏览器再显示在相应的控件上。
所述WEB浏览器和LUA脚本之间采用UDP的方式进行通讯,LUA脚本会把相关数据通过UDP传送给浏览器。
本发明的优点在于:在标准的B/S架构上进行功能扩展,配合加密认证等安全功能,能够在客户端浏览器中控制本地资源,使B/S架构能够做到C/S架构的所有功能,且所有的业务逻辑由服务端发布,C/S架构下的业务逻辑变更而引起的软件升级在这种模式下对用户来说是透明的,能够做到快速开发、快速部署。
【附图说明】
下面参照附图结合实施例对本发明作进一步的描述。
图1是本发明采用LUA脚本对本地外设资源进行控制的调用流程图。
图2是本发明执行流程示意图。
图3是本发明中LUA脚本把执行结果反馈给浏览器,浏览器再显示在相应的控件上的流程示意图。
图4是本发明中LUA脚本扩展模块加载调用流程图。
【具体实施方式】
LUA是一种轻量语言,它的官方版本只包括一个精简的核心和最基本的库。这使得LUA体积小、启动速度快。它用标准C语言编写并以源代码形式开放,编译后仅仅一百余K,可以很方便的嵌入别的程序里并且可以很容易地被扩展:由宿主语言(通常是C或C++)提供这些功能,LUA可以使用它们,就像是本来就内置的功能一样。
LUA虚拟机为了保持简洁性和可移植性并没有包含太多的功能模块和操作系统相关模块。
为了满足实际的需求如控制本地外设资源,IPC通信等,就需要通过实现扩展模块来拓展LUA的功能。很多编程语言都能够用来编写LUA扩展模块,由于是嵌入式平台,这里采用C/C++语言来编写扩展模块。扩展模块一般作为共享库(动态库)由虚拟机来加载。LUA定义了扩展模块与虚拟机间的交互接口,扩展模块只要按LUA接口规范导出接口就可以。
以下以IPC通讯模块,设备控制模块来说明本发明的优点。
通过以上2个模块,可使得LUA具备对本地外设资源的控制和同其它程序进行IPC通信的能力。根据实际的需求还可以编写其它模块。
通过设备控制模块,LUA能够控制磁条卡,PS2扫描枪,LED灯,小液晶,逻辑加密卡等本地外设资源,IPC通讯模块实现了TCP,UDP,FIFO机制。调用流程如图1所示。
根据实际业务的需求在网页脚本中嵌入LUA脚本,当终端嵌入式浏览器下载解析该页面时就会提取其中的LUA脚本,立刻或者是在某个用户输入事件时如点击某个按钮之后调用虚拟机执行相应的LUA脚本。执行流程如图2所示。
由于在标准的网页脚本中嵌入了LUA脚本,需要对WEB浏览器做修改,使其具备从网页脚本中提取LUA脚本和在触发某个事件时执行相应脚本的能力。
如果浏览器需要获取LUA脚本的执行结果时,就需要LUA脚本把执行结果通过IPC机制反馈给浏览器,浏览器再显示在相应的控件上。如图3所示。例如操作PS2扫描枪,逻辑加密卡等外设资源就涉及到结果反馈的问题。只有很少一部分操作不用获取执行结果,例如执行打印任务时。
WEB浏览器和LUA脚本之间采用UDP的方式进行通讯LUA脚本会把相关数据通过UDP传送给浏览器。当然还可以采用其它的IPC机制,可根据实际需求做调整。
1、LUA虚拟机与C程序间的接口。
在嵌入式平台上,由于资源的有限性,一般采用C/C++来编写LUA扩展模块。
并不是所有C函数都能被LUA调用。LUA定义了接口C函数的原型:
typedef int(*LUA_CFunction)(LUA_State*L);
一旦一个C函数被注册之后并保存到LUA中,就可以在脚本中直接调用这个函数。
例如在设备控制模块中注册了如下接口供脚本调用:
static LUAL_reg device_op[]=
{
{″_gc″, LUA_dev_close},
{″_tostring″,LUA_HELPER::LUA_Auxiliar::tostring},
{″write″, LUA_dev_write},
{″read″, LUA_dev_read},
{″readn″, LUA_dev_recvn},
{″setoption″,LUA_dev_setoption},
{NULL, NULL}
};
static LUAL_reg func[]={
{″open″,global_create},
{NULL,NULL}
};
int LUAopen_xn_device(LUA_State*L)
{
LUA_HELPER::LUA_Auxiliar::newclass(L,″XN{DEVICE}″,device_op);
LUAL_openlib(L,″device″,func,0);
#ifdef XN2410_SHEN9A
LUA_DEVICE::xn2410_shen9a::open(L);
#endif
#ifdef XN79525_HR2288_5KC03
LUA_DEVICE::xn79525_hr2288_5kc03::open(L);
#endif
return 1;
}
上面代码中的device_op和func就是该模块导出的接口列表。通过LUA提供的相关接口如LUAL_openlib,对接口进行注册。
2、LUA脚本中引用扩展模块
在LUA脚本中可通过require指令来加载扩展模块。下面以设备控制模块为例来说明扩展模块的加载流程,流程图如图4所示:
A)设备控制模块的文件名称是libdevice.so
B)在脚本中执行命令require(″xn.device″)时,LUA虚拟机会通过系统调用(例如dlopen)来加载libdevice.so这个动态库。
C)加载这个动态库之后,LUA虚拟机会调用LUAopen_xn_device函数。这样函数列表中的所有函数就会被注册并保存到LUA中。
执行完上面的操作之后,在LUA脚本中就能调用以上注册的C函数了。
同样以设备控制模块为例来说明:
function printer()
o,msg=device.open(unpack(printer_info))
if not o then
error(msg)
end
msg=o:setoption(′{poweron}′)
if msg then
error(msg)
end
msg=o:setoption(′{setfont}′,unpack(font_info))
ifmsg then
error(msg)
end
return o
end
上面的代码为一个控制本地外设打印机的脚本。脚本首先调用devce.open操作来打开设备。然后在调用setoption来对设备进行上电和设置字体信息的操作。
通过把上面的脚本嵌入到网页脚本中,可以增强B/S架构的应用程序处理本地资源的能力。
3、嵌入式浏览器中的执行流程。
嵌入式浏览器扩展可处理的标签,如
{″LUAscript″,WMLAttributeType::cdata},{″LUAtype″,WMLAttributeType::cdata}
Browser下载完Web脚本(html或wml文件)后,分析脚本中XML节点的属性如果节点A属性中存在LUAtype=”xxxx”(xxxx为浏览器和LUA解析器协议的类型。如PS2/Print),则获取LUAscript的内容保存为LUA脚本,传递当前节点A的ID和LUA脚本内容给LUA解析器。根据LUAtype定义,如果LUA脚本有内容返回,则浏览器在UDP端口(LUA解析器与浏览器之间的协议的socket通讯端口)xxxx上监听等待信息返回,浏览器得到信息后,根据信息中的ID获得当前页面对应的控件进行对应控制。
#ifdef_LUASCRIPT_SUPPORT_
#define LUA_UDPPORT 11111
//当前各个子进程的列表
typedef struct Tag_LUAComm
{
char iType[10];
char content[2*1024];
}TLUAComm;
//进行LUA脚本处理的类,
class LUA_Script
{
public:
LUA_Script();
~LUA_Script();
public:
void Create_LUAApp(const char*scriptContent);
void KillAll_LUAChild(void);
private:
//当前LUA进程的列表
list<pid_t>LUAList;
//监控与LUA脚本通讯的线程
pthread_t LUA_thread;
//创建与LUA脚本通讯的线程
void MakeLUAComm_thread(void);
void FreeLUAComm thread(void);
};
#endif
本发明在标准的B/S架构上进行功能扩展,配合加密认证等安全功能,能够在客户端浏览器中控制本地资源,使B/S架构能够做到C/S架构的所有功能,且所有的业务逻辑由服务端发布,C/S架构下的业务逻辑变更而引起的软件升级在这种模式下对用户来说是透明的,能够做到快速开发、快速部署。
Claims (3)
1.一种在B/S架构下通过LUA脚本控制本地资源的方法,其特征在于:包括:根据实际业务的需求在网页脚本中嵌入LUA脚本当终端嵌入式WEB浏览器下载解析该页面时就会提取其中的LUA脚本,立刻或者是在某个用户输入事件时调用虚拟机执行相应的LUA脚本;对WEB浏览器做修改,使其具备从网页脚本中提取LUA脚本和在触发某个事件时执行相应脚本的能力。
2.如权利要求1所述的一种在B/S架构下通过LUA脚本控制本地资源的方法,其特征在于:还包括:如果浏览器需要获取LUA脚本的执行结果时,就需要LUA脚本把执行结果通过IPC机制反馈给浏览器,浏览器再显示在相应的控件上。
3.如权利要求1所述的一种在B/S架构下通过LUA脚本控制本地资源的方法,其特征在于:所述WEB浏览器和LUA脚本之间采用UDP的方式进行通讯,LUA脚本会把相关数据通过UDP传送给浏览器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010125396 CN101840415A (zh) | 2010-03-15 | 2010-03-15 | 一种在b/s架构下通过lua脚本控制本地资源的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010125396 CN101840415A (zh) | 2010-03-15 | 2010-03-15 | 一种在b/s架构下通过lua脚本控制本地资源的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101840415A true CN101840415A (zh) | 2010-09-22 |
Family
ID=42743789
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010125396 Pending CN101840415A (zh) | 2010-03-15 | 2010-03-15 | 一种在b/s架构下通过lua脚本控制本地资源的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101840415A (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102207879A (zh) * | 2011-06-14 | 2011-10-05 | 贵阳朗玛信息技术股份有限公司 | Lua脚本热更新方法及系统 |
CN102567014A (zh) * | 2011-11-14 | 2012-07-11 | 南京天溯自动化控制系统有限公司 | 一种Lua脚本在SCADA系统中实现动画的方法 |
CN102609505A (zh) * | 2012-02-03 | 2012-07-25 | 姚振刚 | 基于数据操作语言的动态网页方法 |
CN102693100A (zh) * | 2011-02-10 | 2012-09-26 | 精工爱普生株式会社 | 网络系统、接口板、网络系统的打印控制方法以及程序 |
CN103177040A (zh) * | 2011-12-26 | 2013-06-26 | 腾讯科技(深圳)有限公司 | 网页应用的功能调用方法及装置 |
CN103885790A (zh) * | 2012-12-20 | 2014-06-25 | 龙尚科技(上海)有限公司 | 一种在无线移动终端上实现解析运行可编程脚本的方法 |
CN103914453A (zh) * | 2012-12-31 | 2014-07-09 | 联想(北京)有限公司 | 本地资源访问方法、本地资源访问装置和电子设备 |
CN105407075A (zh) * | 2014-09-12 | 2016-03-16 | 博雅网络游戏开发(深圳)有限公司 | 业务逻辑的实现方法和系统 |
CN106775900A (zh) * | 2017-01-20 | 2017-05-31 | 陈刚 | 应用浏览器的调用方法和系统 |
CN108491323A (zh) * | 2018-03-07 | 2018-09-04 | 深圳市飞音科技有限公司 | 一种基于Lua脚本的嵌入式软件自动化测试系统及方法 |
CN109885792A (zh) * | 2019-01-04 | 2019-06-14 | 石化盈科信息技术有限责任公司 | 一种基于webdriver技术的APP桥接方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1741532A (zh) * | 2005-09-12 | 2006-03-01 | 林兴陆 | 智能网框架装置 |
CN1815444A (zh) * | 2006-02-28 | 2006-08-09 | 杭州微元科技有限公司 | 使用脚本文件配置的便携式多媒体播放器界面定制方法 |
US20070004682A1 (en) * | 2005-06-29 | 2007-01-04 | Schering Corporation | Di-substituted oxadiazoles as CXC-chemokine receptor ligands |
-
2010
- 2010-03-15 CN CN 201010125396 patent/CN101840415A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070004682A1 (en) * | 2005-06-29 | 2007-01-04 | Schering Corporation | Di-substituted oxadiazoles as CXC-chemokine receptor ligands |
CN1741532A (zh) * | 2005-09-12 | 2006-03-01 | 林兴陆 | 智能网框架装置 |
CN1815444A (zh) * | 2006-02-28 | 2006-08-09 | 杭州微元科技有限公司 | 使用脚本文件配置的便携式多媒体播放器界面定制方法 |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9235363B2 (en) | 2011-02-10 | 2016-01-12 | Seiko Epson Corporation | Network system, interface board, method of controlling printing on an network system, and program |
US10949719B2 (en) | 2011-02-10 | 2021-03-16 | Seiko Epson Corporation | Network system, interface board, method of controlling printing on an network system, and program |
CN102693100A (zh) * | 2011-02-10 | 2012-09-26 | 精工爱普生株式会社 | 网络系统、接口板、网络系统的打印控制方法以及程序 |
US10504011B2 (en) | 2011-02-10 | 2019-12-10 | Seiko Epson Corporation | Network system, interface board, method of controlling printing on an network system, and program |
US10026028B2 (en) | 2011-02-10 | 2018-07-17 | Seiko Epson Corporation | Network system, interface board, method of controlling printing on an network system, and program |
US8976395B2 (en) | 2011-02-10 | 2015-03-10 | Seiko Epson Corporation | Network system, interface board, method of controlling printing on an network system, and program |
CN102693100B (zh) * | 2011-02-10 | 2015-06-24 | 精工爱普生株式会社 | 网络系统、接口板、网络系统的打印控制方法 |
CN105045545A (zh) * | 2011-02-10 | 2015-11-11 | 精工爱普生株式会社 | 网络系统、客户终端及设备服务器的控制方法 |
CN102207879B (zh) * | 2011-06-14 | 2013-05-01 | 贵阳朗玛信息技术股份有限公司 | Lua脚本热更新方法及系统 |
CN102207879A (zh) * | 2011-06-14 | 2011-10-05 | 贵阳朗玛信息技术股份有限公司 | Lua脚本热更新方法及系统 |
CN102567014A (zh) * | 2011-11-14 | 2012-07-11 | 南京天溯自动化控制系统有限公司 | 一种Lua脚本在SCADA系统中实现动画的方法 |
CN103177040A (zh) * | 2011-12-26 | 2013-06-26 | 腾讯科技(深圳)有限公司 | 网页应用的功能调用方法及装置 |
CN102609505A (zh) * | 2012-02-03 | 2012-07-25 | 姚振刚 | 基于数据操作语言的动态网页方法 |
CN103885790A (zh) * | 2012-12-20 | 2014-06-25 | 龙尚科技(上海)有限公司 | 一种在无线移动终端上实现解析运行可编程脚本的方法 |
CN103914453A (zh) * | 2012-12-31 | 2014-07-09 | 联想(北京)有限公司 | 本地资源访问方法、本地资源访问装置和电子设备 |
CN105407075A (zh) * | 2014-09-12 | 2016-03-16 | 博雅网络游戏开发(深圳)有限公司 | 业务逻辑的实现方法和系统 |
CN105407075B (zh) * | 2014-09-12 | 2019-01-11 | 博雅网络游戏开发(深圳)有限公司 | 业务逻辑的实现方法和系统 |
CN106775900A (zh) * | 2017-01-20 | 2017-05-31 | 陈刚 | 应用浏览器的调用方法和系统 |
CN108491323A (zh) * | 2018-03-07 | 2018-09-04 | 深圳市飞音科技有限公司 | 一种基于Lua脚本的嵌入式软件自动化测试系统及方法 |
CN109885792A (zh) * | 2019-01-04 | 2019-06-14 | 石化盈科信息技术有限责任公司 | 一种基于webdriver技术的APP桥接方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101840415A (zh) | 一种在b/s架构下通过lua脚本控制本地资源的方法 | |
El-Kassas et al. | Taxonomy of cross-platform mobile applications development approaches | |
CN106843869B (zh) | 一种前端开发工程化系统和方法 | |
US20210165668A1 (en) | Third party integration of plugins and widgets | |
CN104866327B (zh) | 一种php开发方法及框架 | |
CN110990731A (zh) | 一种静态网页的渲染方法、装置、设备及计算机存储介质 | |
CN101216838B (zh) | 基于web标记的xml界面配置文件分发系统及方法 | |
US20090259612A1 (en) | Message conduit systems with algorithmic data stream control and methods for processing thereof | |
KR20170003578A (ko) | 언어-독립형 디스패치를 위한 코드 서비스 기법 | |
US20060265469A1 (en) | XML based scripting framework, and methods of providing automated interactions with remote systems | |
CN103336705A (zh) | 脚本处理和工作流系统间的自动转码和语义自适应 | |
CN105518633A (zh) | Web服务器系统、应用开发辅助系统、Web服务器系统中的多语言支持方法、Web服务器系统中的多设备支持方法以及应用开发辅助方法 | |
CN111831538A (zh) | 调试方法、装置以及存储介质 | |
CN101976199A (zh) | 面向对象的中间件分布式系统开发平台 | |
CN103179166A (zh) | 在客户端中提供服务的方法和客户端 | |
CN103092599A (zh) | 软件开发套件 | |
CN112085217A (zh) | 部署人工智能服务的方法、装置、设备及计算机介质 | |
CN103618699A (zh) | 一种调用组件的方法及装置 | |
Montella et al. | Enabling android-based devices to high-end gpgpus | |
CN102693238B (zh) | Widget应用方法、系统及多媒体终端 | |
CN115202639A (zh) | 基于自定义模块的代码生成方法、装置、设备及存储介质 | |
US11604662B2 (en) | System and method for accelerating modernization of user interfaces in a computing environment | |
US20170052765A1 (en) | Method and system for creating app | |
CN107070679A (zh) | 一种在不同平台统一发布信息的方法 | |
WO2015015406A1 (en) | System for distributing software applications to pos payment terminals |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20100922 |