-- main.lua

-- 1. 以追加模式("a")打开文件
local log_file, err = io.open("captured_data.txt", "a")
if not log_file then
    print("无法打开日志文件: " .. err)
    return
end

-- 【新增】将二进制字符串转换为 Hex 字符串的辅助函数
local function to_hex(str)
    return (str:gsub('.', function (c)
        -- %02X 表示大写、不足两位前面补0的十六进制
        return string.format('%02X ', string.byte(c))
    end))
end

-- 2. 定义供 C++ 调用的全局函数
function process_data(raw_data)
    -- 将二进制数据转换为 Hex 格式
    local hex_str = to_hex(raw_data)
    
    -- 写入 Hex 字符串并添加换行符
    log_file:write(hex_str .. "\n")
    
    -- 【核心】强制刷新文件缓冲区，确保数据立即写入磁盘
    log_file:flush() 
end

-- 3. 清理函数
function cleanup()
    if log_file then
        log_file:close()
        print("Lua: 日志文件已安全关闭")
    end
end
