指令loadx是哪一种类型

指令loadx是哪一种类型,第1张

Lua是一种 简单、可扩展、可移植及高效的脚本语言

是一种面向 C 的 API 存在一个特别的 虚拟栈 ,通过这个栈与lua交换数据

栈大大简化了C API 的设计与使用,还能保证 其他语言与lua 有效的隔离开

从设计目的来讲:

1就是某一个功能模块,通过lua进行扩展

2想只靠lua开发程序,是不太现实的

FREESWITCH中录音你如果要搞到LUA脚本里就麻烦了,直接在dialplan里面就能录音。

<action application="set" data="execute_on_answer=record_session /data/media/${strftime(%Y%m%d)}/${strftime(%Y%m%d%H)}/${uuid}_$1_${caller_id_number}wav"/>

时间也都是从FS上面获取到传进LUA脚本里的。我是这么使用的。

Lua api函数的总结要告一段落了,从今天开始我要回归到Lua,我们来一起看看在lua函数里有哪些函数我们会经常用到,现在我们来接触第一个函数osclock()。还是先上例子,之后我们来一起分析一下。

其中有个 CLOCKS_PER_SEC 值,在不同平台有着不同的定义,所以一定要注意函数的溢出问题,程序运行时间太长的话,使用 clock 有可能就会返回负数。

FreeSWITCH中的lua *** 作小结

lua中设置当前通道变量

方法一:

session:setVariable("fullName", "xxxxx");--需判断session是否为空

方法二:

local uuid =getUUID(callerid);

local res=api:executeString("uuid_setvar " uuid " fullName ""xxxxxxx")

该处设置的变量可以是通道中本没有的变量,设置完了后,在其他地方就可以引用该变量。

lua中设置全局通道变量(在varsxml中设置)

local ucall_ip = api:executeString("global_setvar qt_ucall_ip_port 192168032:9090");

获取当前的通道变量

local callee_num=session:getVariable("qt_ucall_callee");

获取全局通道变量

local ucall_ip = api:executeString("global_getvar qt_ucall_ip_port");

获取当前会话uuid

session:get_uuid()

获取当前路径

--USwitch的当前安装目录

syspath = tostring(api:execute("global_getvar", "base_dir"));

使用uuid_transfer将当前对话的两个号码同时转入会议中

local trf1="uuid_transfer " guestuuid " -both " conferenceNum;

OutputConsoleLog("info" , scriptname ": try to get guestNum to conference,command is{"trf1"}");

api:executeString(trf1);

外呼方法总结:

originate user/11103139316095XX

originate sofia/external/139316095XX@192168234 &playback(calloutmusic/welcometoyoump3)

originate loopback/139316095XX&playback(calloutmusic/20110126164156mp3)

在lua脚本中放一段录音

session:streamFile("notondutywav");

判断会话是否已建立

session:ready()==true

挂断当前会话

session:hangup();

将当前会话休眠一段时间

session:sleep(5000);

发起>

C调Lua:通过lua的api,C把函数压入lua栈,然后lua_pcall让lua环境去执行

Lua调C:通过lua的api,C把自己的函数注册到lua执行环境中,lua脚本可以像使用普通函数一样使用C函数

1编程接口就是对于某种逻辑写的一定规范的数据格式,

就是宿主程序跟 Lu通讯用的一组 C 函数。 所有的 API 函数按相关的类型以及常量都声明在头文件 luah 中。

2虽然我们说的是“函数”, 但一部分简单的 API 是以宏的形式提供的。 

除非另有说明, 所有的这些宏都只使用它们的参数一次 (除了第一个参数,那一定是 Lu状态), 因此你不需担心这些宏的展开会引起一些副作用。

3C 库中所有的 Lua API 函数都不去检查参数是否相容及有效。

然而,你可以在编译 Lu 时加上打开一个宏开关 LUA_USE_APICHECK 来改变这个行为。

Lu使用一个 虚拟栈 来和 C 互传值。 栈上的的每个元素都是一个 Lu 值 (nil,数字,字符串,等等)。

4无论何时 Lua 调用 C,被调用的函数都得到一个新的栈, 

这个栈独立于 C 函数本身的栈,也独立于之前的 Lu栈。 它里面包含了 Lu传递给 C 函数的所有参数, 而 C 函数则把要返回的结果放入这个栈以返回给调用者。

5方便起见, 所有针对栈的 API 查询 *** 作都不严格遵循栈的 *** 作规则。 

而是可以用一个 索引 来指向栈上的任何元素: 正的索引指的是栈上的绝对位置(从1开始); 负的索引则指从栈顶开始的偏移量。 展开来说,如果堆栈有 n 个元素, 那么索引 1 表示第一个元素 (也就是最先被压栈的元素) 而索引 n 则指最后一个元素; 索引 -1 也是指最后一个元素 (即栈顶的元素), 索引 -n 是指第一个元素。

42 – 栈大小

5当你使用 Lu API 时, 就有责任保证做恰当的调用。 特别需要注意的是, 你有责任控制不要堆栈溢

以上就是关于指令loadx是哪一种类型全部的内容,包括:指令loadx是哪一种类型、扩展语言lua有哪些数据类型呢、什么是Lua等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9415045.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存