как использовать таймер в Lua - PullRequest
0 голосов
/ 22 февраля 2012

Я собираю данные с помощью tshark и сохраняю определенные данные из заголовка пакета, чтобы обработать их, чтобы обнаружить некоторые принудительные эффекты в сети. Я сохранил данные в таблице в моей программе lua (которая выполняется в cmd с tshark с помощью команды (-Xlua_script :)) и теперь я хочу обрабатывать данные каждую минуту в одиночку, пока выполняется захват. Это онлайн-обработка. Во-первых: кто-нибудь знает, может ли это быть реализовано? Во-вторых, мне нужен таймер, я не знаю, как это сделать, и я хочу, чтобы я мог взять данные в таблицах для их обработки, сбросить таблицы, чтобы получить новые данные следующей минуты без потери каких-либо данных. Какие-либо предложения или идеи ??

1 Ответ

1 голос
/ 22 февраля 2012

в lua нет понятия «таймер», как в некоторых других языках, где вы можете создать его, настроить обработчик событий и уведомить основную программу, когда таймер отключится ... однако вы можете периодически проверьте os.clock (), чтобы определить, сколько времени прошло с тех пор, как вы выполнили некоторую обработку, и, если прошла минута, продолжайте обрабатывать данные.

что-то вроде этого может быть то, что вам нужно:

lastTimeProcessed = os.clock()

function IsTimeToProcess(currentTime)
    span = currentTime - lastTimeProcessed
    if span >= 60 then
        lastTimeProcessed = currentTime
        return true
    end

    return false
end

while true do
    if IsTimeToProcess(os.clock()) then
        -- process some data here
    end
    -- otherwise do another round of whatever you're doing
end
...