C循环执行Lua

1.2k 词
文章目录
</div>


<h3 id="实现过程"><a href="#实现过程" class="headerlink" title="实现过程"></a>实现过程</h3><p>先定义好树莓派相关操作函数</p>

在创建Lua状态机时注册函数

main函数启动后,先执行初始化函数

初始化函数中,获取当前程序目录,并设置相关目录路径(初始化目录和工作目录)

然后扫描初始化目录,依次执行里面的Lua文件,根据执行结果选择是否跳过

初始化完成后,执行循环工作处理,每次循环都扫描工作目录,依次执行里面的Lua文件,根据执行结果选择是否跳出循环

使用

运行程序后,只要往 /lua/work/ 目录中放 Lua 文件就可以了

代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <unistd.h>
#include <dirent.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <wiringPi.h>
#include <lua/lua.h>
#include <lua/lauxlib.h>
#include <lua/lualib.h>
#define DIR_LUA_INIT "/lua/init/"
#define DIR_LUA_WORK "/lua/work/"
static int G_SLEEP_TIME = 2000;
static char *G_DIR_LUA_INIT = NULL;
static char *G_DIR_LUA_WORK = NULL;
int pi_init();
int pi_work();
int pi_scan(char *path);
int pi_call(char *path, char *name);
lua_State *pi_create_lua();
//程序初始化
int pi_init() {
//printf("[PI] 御风PI程序已启动!n");
//初始化wiringPi
int rc = wiringPiSetup();
if (rc == -1) {
//printf("[PI] 初始化wiringPi失败!n");
return -1;
}
//获取目录
char path_base[1000] = { 0 };
int len_base, len_init, len_work;
memset(path_base, '