|
发表于 2021-1-21 09:35:35
|
显示全部楼层
{
int id;
int i;
int DatLen;
unsigned char DatInf[100];
unsigned short crc;
id = luaL_checknumber(L,1); //获取第二个参数,数据长度
if(!lua_istable(L, 2)){ //判断第一个参数是否为表,否则退出
lua_pushnil(L);
return -1;
}
DatLen = luaL_checknumber(L,3); //获取第二个参数,数据长度
for(i=1; i<=DatLen; i++){
lua_rawgeti(L, 2, i);
DatInf[i-1] = lua_tointeger(L, -1);
lua_pop(L, 2); //把上一个内容的出栈
}
crc = bsp_user_lib_CRC16_Modbus(DatInf, DatLen); //计算校验值
lua_pushinteger(L,(crc>>8)&0xff); //校验值高位压栈
lua_pushinteger(L,(crc)&0xff); //校验值低位压栈
return 2; //返回参数个数
} |
|