项目简介
本项目是基于Elma框架开发的自动售货机系统。Elma是专为嵌入式系统和反应式系统编程设计的事件循环管理器。项目展示了如何利用Elma框架实现自动售货机的核心功能,涵盖状态管理、事件处理以及用户交互,能让用户模拟商品购买、硬币投入和获取找零等操作。
项目的主要特性和功能
- 商品购买:顾客可通过按键选择购买零食、水或果汁等商品。
- 硬币投入:支持25分、50分和1美元等多种面额硬币投入。
- 余额计算:系统自动计算顾客投入金额,并显示剩余金额。
- 金额验证:验证投入金额是否足够购买所选商品,不足则提示继续投币。
- 重复购买:顾客能多次购买商品,直至选择退出。
- 状态机管理:利用状态机管理自动售货机的不同状态,如空闲(IDLE)、准备(READY)和售卖(VENDING)等。
安装使用步骤
1. 复制项目仓库
bash
cd vending-machine
2. 构建和运行项目
使用Docker容器环境构建和运行项目:
bash
docker run -v $PWD:/source -it klavins/elma:latest bash
在容器环境中,执行以下命令构建项目并生成文档:
bash
make
make docs
3. 运行自动售货机系统
构建完成后,运行以下命令启动系统:
bash
bin/vendingmachine
4. 使用说明
系统启动后,可通过以下键盘按键操作: - a:投入25分硬币 - b:投入50分硬币 - c:投入1美元硬币 - r:退回剩余金额 - 1:选择零食 - 2:选择水 - 3:选择果汁 - y:选择继续购买 - n:选择结束购买 - q:退出系统
5. 状态机说明
系统通过状态机管理自动售货机的不同状态: - IDLE:初始状态,等待顾客投入硬币。 - READY:顾客投入硬币后,系统进入准备状态,等待顾客选择商品。 - VENDING:顾客选择商品后,系统进入售卖状态,若金额足够则出货,否则提示继续投入硬币。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】