10 Lua数据处理问题

协议命令使用字符串,定义为:“开始符,参数1,参数2,参数3”,当串口接收到此命令时,参数的长度未知,Lua是否有能力提取出参数1,参数2和参数3的值?如果有请指教,谢谢!

请先 登录 后评论

最佳答案 2018-09-12 14:15

如果参数是定长的,可以直接根据长度截取(使用string.sub);

如果参数是不定长,但是有固定开始、结束符,也可以截取(for循环寻找开始、结束符位置,然后用string.sub截取);

如果参数是不定长,且没有固定的开始、结束符,但是有分隔符,也可以截取(for循环寻找分隔符位置,然后用string.sub截取);

如果参数是不定长、没有固定分隔符、开始符、结束符,则很难提取。

请先 登录 后评论

其它 1 个回答

NULL

如果有开始符,并且能保证开始符唯一,你可以根据开始府做拼包处理,得到完整的协议报文,剩下的你可以用split函数来截取,合宙有一个string.split函数来把字符串截成数组,或者我这里提供一个split的实现

function mysplit(inputstr, sep)
    sep = sep or "%s"
    local t={} ; i=1
    for str in string.gmatch(inputstr, "([^"..sep.."]+)") do
            t[i] = str
            i = i + 1
    end
    return t

end
请先 登录 后评论