使用Lua编写工程的时候,如何使用状态机

能否向普通单片机那样使用 while true do  end  来模拟状态机?我是这样想的,将此状态机放入秒定时器中,每隔一秒进行一次状态查询,处理结束后跳出,不知这样能否行的通,或者你们有什么好的建议没?

请先 登录 后评论

2 个回答

技术销售Delectate
擅长:IT

可以使用luatask架构的sys.taskInit实现。用法请见http://wiki.openluat.com/doc/luatApi/#systaskinit

示例代码:

require "sys"
sys.taskInit( function()

                        while true do

                            print("this is a test")

                            sys.wait(100)            --sleep 100ms

                        end

                    end

)

请先 登录 后评论
罗耀锋 - 软件工程师
擅长:软件开发

问答是NO.  那样很不好维护。

建议如下

1.使用 lua task ,一个task算一个模块或一种状态,在这个里面处理这个状态有关的任务

2.状态之间的切换, 可以利用消息来进行 ,waitUntil 与 publish


请先 登录 后评论
  • 1 关注
  • 0 收藏,2506 浏览
  • 景景1993 提出于 2018-09-21 10:25

相似问题