免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1845 | 回复: 5
打印 上一主题 下一主题

[其他] 大家讨论一下gen fsm吧 [复制链接]

论坛徽章:
27
水瓶座
日期:2014-08-22 21:06:34程序设计版块每日发帖之星
日期:2015-11-25 06:20:0015-16赛季CBA联赛之新疆
日期:2015-12-19 19:05:48IT运维版块每日发帖之星
日期:2015-12-25 06:20:31IT运维版块每日发帖之星
日期:2015-12-25 06:20:31IT运维版块每日发帖之星
日期:2015-12-25 06:20:3315-16赛季CBA联赛之上海
日期:2016-04-15 19:51:31程序设计版块每日发帖之星
日期:2016-04-17 06:23:29程序设计版块每日发帖之星
日期:2016-04-23 06:20:00程序设计版块每日发帖之星
日期:2016-05-26 06:20:00每日论坛发贴之星
日期:2016-05-26 06:20:0015-16赛季CBA联赛之辽宁
日期:2017-02-16 23:59:47
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-07-14 11:34 |只看该作者 |倒序浏览
  1. -module(myfsm).
  2. -behaviour(gen_fsm).
  3. -define(SERVER, ?MODULE).

  4. %% ------------------------------------------------------------------
  5. %% API Function Exports
  6. %% ------------------------------------------------------------------

  7. -export([start_link/0]).

  8. %% ------------------------------------------------------------------
  9. %% gen_fsm Function Exports
  10. %% ------------------------------------------------------------------

  11. -export([init/1, state_name/2, state_name/3, handle_event/3,
  12.          handle_sync_event/4, handle_info/3, terminate/3,
  13.          code_change/4]).

  14. %% ------------------------------------------------------------------
  15. %% API Function Definitions
  16. %% ------------------------------------------------------------------

  17. start_link() ->
  18.     gen_fsm:start_link({local, ?SERVER}, ?MODULE, [], []).

  19. %% ------------------------------------------------------------------
  20. %% gen_fsm Function Definitions
  21. %% ------------------------------------------------------------------

  22. init(_Args) ->
  23.     {ok, initial_state_name, initial_state}.

  24. state_name(_Event, State) ->
  25.     {next_state, state_name, State}.

  26. state_name(_Event, _From, State) ->
  27.     {reply, ok, state_name, State}.

  28. handle_event(_Event, StateName, State) ->
  29.     {next_state, StateName, State}.

  30. handle_sync_event(_Event, _From, StateName, State) ->
  31.     {reply, ok, StateName, State}.

  32. handle_info(_Info, StateName, State) ->
  33.     {next_state, StateName, State}.

  34. terminate(_Reason, _StateName, _State) ->
  35.     ok.

  36. code_change(_OldVsn, StateName, State, _Extra) ->
  37.     {ok, StateName, State}.

  38. %% ------------------------------------------------------------------
  39. %% Internal Function Definitions
  40. %% ------------------------------------------------------------------
复制代码

论坛徽章:
27
水瓶座
日期:2014-08-22 21:06:34程序设计版块每日发帖之星
日期:2015-11-25 06:20:0015-16赛季CBA联赛之新疆
日期:2015-12-19 19:05:48IT运维版块每日发帖之星
日期:2015-12-25 06:20:31IT运维版块每日发帖之星
日期:2015-12-25 06:20:31IT运维版块每日发帖之星
日期:2015-12-25 06:20:3315-16赛季CBA联赛之上海
日期:2016-04-15 19:51:31程序设计版块每日发帖之星
日期:2016-04-17 06:23:29程序设计版块每日发帖之星
日期:2016-04-23 06:20:00程序设计版块每日发帖之星
日期:2016-05-26 06:20:00每日论坛发贴之星
日期:2016-05-26 06:20:0015-16赛季CBA联赛之辽宁
日期:2017-02-16 23:59:47
2 [报告]
发表于 2014-07-14 12:13 |只看该作者
本帖最后由 shijiang1130 于 2014-07-14 12:13 编辑

gen_fsm:start_link                               -----> Module:init/1
gen_fsm:send_event                            -----> Module:StateName/2
gen_fsm:send_all_state_event              -----> Module:handle_event/3
gen_fsm:sync_send_event                   -----> Module:StateName/3
gen_fsm:sync_send_all_state_event      -----> Module:handle_sync_event/4

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
3 [报告]
发表于 2014-07-14 12:19 |只看该作者
我只看到书上说过这个, 还没用过 .

论坛徽章:
27
水瓶座
日期:2014-08-22 21:06:34程序设计版块每日发帖之星
日期:2015-11-25 06:20:0015-16赛季CBA联赛之新疆
日期:2015-12-19 19:05:48IT运维版块每日发帖之星
日期:2015-12-25 06:20:31IT运维版块每日发帖之星
日期:2015-12-25 06:20:31IT运维版块每日发帖之星
日期:2015-12-25 06:20:3315-16赛季CBA联赛之上海
日期:2016-04-15 19:51:31程序设计版块每日发帖之星
日期:2016-04-17 06:23:29程序设计版块每日发帖之星
日期:2016-04-23 06:20:00程序设计版块每日发帖之星
日期:2016-05-26 06:20:00每日论坛发贴之星
日期:2016-05-26 06:20:0015-16赛季CBA联赛之辽宁
日期:2017-02-16 23:59:47
4 [报告]
发表于 2014-07-14 13:03 |只看该作者
q1208c 发表于 2014-07-14 12:19
我只看到书上说过这个, 还没用过 .
听说文本解析,模式匹配、游戏逻辑等等方面的处理都是它的强项,还以为你用这个做的解析呢

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
5 [报告]
发表于 2014-07-14 13:51 |只看该作者
回复 4# shijiang1130

我还不太会用.
   

论坛徽章:
27
水瓶座
日期:2014-08-22 21:06:34程序设计版块每日发帖之星
日期:2015-11-25 06:20:0015-16赛季CBA联赛之新疆
日期:2015-12-19 19:05:48IT运维版块每日发帖之星
日期:2015-12-25 06:20:31IT运维版块每日发帖之星
日期:2015-12-25 06:20:31IT运维版块每日发帖之星
日期:2015-12-25 06:20:3315-16赛季CBA联赛之上海
日期:2016-04-15 19:51:31程序设计版块每日发帖之星
日期:2016-04-17 06:23:29程序设计版块每日发帖之星
日期:2016-04-23 06:20:00程序设计版块每日发帖之星
日期:2016-05-26 06:20:00每日论坛发贴之星
日期:2016-05-26 06:20:0015-16赛季CBA联赛之辽宁
日期:2017-02-16 23:59:47
6 [报告]
发表于 2014-07-16 21:37 |只看该作者
本帖最后由 shijiang1130 于 2014-07-16 22:23 编辑

-module(t).  
-behaviour(gen_fsm).  
-compile(export_all).  

start(PassWord) ->  
  gen_fsm:start_link({local, ?MODULE}, t, PassWord, []).  

init(PassWord) ->  
  {ok, locked, {[], PassWord}}.  
  
button(Digit) ->  
  gen_fsm:send_event(t, {button, Digit}).  
  
locked({button, Digit}, {SoFar, PassWord}) ->  
  io:format("PassWord you input is: ~w~n", [SoFar ++ [Digit]]),
  case SoFar ++ [Digit] of  
    PassWord ->  
      io:format("Open!~n"),  
      {next_state, open, {[], PassWord}, 3000};  
    Input when length(Input) < length(PassWord) ->  
      {next_state, locked, {Input, PassWord}};  
    _Wrong ->  
      io:format("小子,错啦! 再赌一把!~n"),  
      {next_state, locked, {[], PassWord}}  
  end.
  
open(timeout, State) ->  
  io:format("不能再等了Lock!~n"),  
  {next_state, locked, State}.  
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP