2

私はループタイマー関数を作成しようとしています。これは、x秒ごとに信号を送信してから、数秒間yオフにzし、ループを繰り返します。私はプログラミングにまったく慣れていないので、何をすべきかわかりません。いくつかのチュートリアルがありますが、プログラミングの方法がわかりません。見つけたクローゼットは

require 'socket' -- for having a sleep function ( could also use os.execute(sleep 10))

timer = function (time)
    local init = os.time()
    local diff=os.difftime(os.time(),init)
    while diff<time do
        coroutine.yield(diff)
        diff=os.difftime(os.time(),init)
    end
    print( 'Timer timed out at '..time..' seconds!')
end

co=coroutine.create(timer)
coroutine.resume(co,30) -- timer starts here!

while coroutine.status(co)~="dead" do
    print("time passed",select(2,coroutine.resume(co)))
    print('',coroutine.status(co))
    socket.sleep(5)
end

しかし、それはコールバック関数のためだったと思います。助けてもらえますか、可能であれば、プログラムがどのように書かれているかを説明してください。多くのことを尋ねてすみません、

4

1 に答える 1

1

Lua は、タイミングを行うためのものではありません (実際、PLC固有の言語を除けば、私が知っているプログラミング言語はありません)。タイマーとイベントの提供は、埋め込みアプリケーションの仕事です。

そのため、独自のタイミング API を提供する必要があります。これは、「プログラミングにまったく慣れていない」場合はオプションではないと想定するか、モジュールを使用する必要があります。

役立つかもしれない 2 つの Lua モジュールがあります。

どちらも使用していませんが、ルーメンの方がアクティブで洗練されているようです。また、純粋なLuaであり、追加のモジュールを必要としないため、初心者にとってセットアップが簡単になるはずです. 実際、最初の例は、やりたいことを設定するのに十分な手がかりを提供するはずです。

いずれにせよ、最初にプログラミングを学習する他のプロジェクト、できればタイミングを必要としないプロジェクトを探すことをお勧めします。

于 2013-06-02T14:31:53.990 に答える