using BPASmartClient.Model.咖啡机.Enum; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace BPASmartClient.KLMCoffee.Protocal { /// /// 咖啡配方Model,控制内容 /// public class RecipeModel { /// /// 饮品类型 /// public DrinkType 饮品类型 { get; set; } /// /// 咖啡量:15-240 /// public int 咖啡量 { get; set; } /// /// 咖啡温度:低/中/高 /// public TempEnum 咖啡温度 { get; set; } /// /// 咖啡浓度:清淡/适中/浓郁 /// public CoffeeConcentration 咖啡浓度 { get; set; } /// /// 热水量:25-450 /// public int 热水量 { get; set; } /// /// 热水温度:低/中/高 /// public TempEnum 热水温度 { get; set; } /// /// 牛奶时间:5-120/0 /// public int 牛奶时间 { get; set; } /// /// 奶沫时间:5-120/0 /// public int 奶沫时间 { get; set; } /// /// 预煮 /// public CancelOrOkEnum 预煮 { get; set; } /// /// 咖啡增强 /// public CancelOrOkEnum 咖啡增强 { get; set; } /// /// 咖啡牛奶同时出 /// public CancelOrOkEnum 咖啡牛奶同时出 { get; set; } /// /// 出品顺序:否:先奶后咖啡 是:先咖啡后奶 /// public CancelOrOkEnum 出品顺序 { get; set; } public RecipeModel() { 饮品类型 = DrinkType.意式咖啡; 咖啡量 = 0; 咖啡温度 = TempEnum.低; 咖啡浓度 = CoffeeConcentration.清淡; 热水量 = 0; 热水温度 = TempEnum.低; 牛奶时间 = 0; 奶沫时间 = 0; 预煮 = CancelOrOkEnum.否; 咖啡增强 = CancelOrOkEnum.否; 咖啡牛奶同时出 = CancelOrOkEnum.否; 出品顺序 = CancelOrOkEnum.否; } #region 获取配方字符串命令 /// /// Int 转 16进制字符串 (保留几位) /// public string IntToHexString(int data,int length = 2) { try { return data.ToString("X").PadLeft(length,'0'); } catch (Exception ex) { return string.Empty; } } /// /// 获取咖啡配方数据 /// public string GetCoffeeRecipe() { string retdata = string.Empty; try { retdata = $"{饮品类型.GetString()}{IntToHexString(咖啡量,4)}" + $"{咖啡温度.GetString()}{咖啡浓度.GetString()}{IntToHexString(热水量,4)}{热水温度.GetString()}" + $"{IntToHexString(牛奶时间,2)}{IntToHexString(奶沫时间,2)}{预煮.GetString()}{咖啡增强.GetString()}" + $"{咖啡牛奶同时出.GetString()}{出品顺序.GetString()}"; } catch (Exception ex) { } return retdata; } #endregion #region 8种配方测试示例 /// /// 获取8中配方 /// /// /// public string Packe(DrinkType drink) { try { switch (drink) { case DrinkType.意式咖啡: return GetItalian(60); break; case DrinkType.美式咖啡: return GetAmerican(60,450); break; case DrinkType.热水: return GetHotWater(194); break; case DrinkType.卡布奇诺: return GetCabo(60,17); break; case DrinkType.玛琪雅朵: return GetMacChiato(60,8,17); break; case DrinkType.拿铁咖啡: return GetLatte(60,8,17); break; case DrinkType.热牛奶: return GetHotMilk(8); break; case DrinkType.热奶沫: return GetHotMilkFoam(17); break; } } catch (Exception ex) { return GetItalian(60); } return GetItalian(60); } #endregion #region 8种默认配方 /// /// 意式:仅咖啡 /// /// 15-240 public string GetItalian(int _咖啡量) { 饮品类型 = DrinkType.意式咖啡; 咖啡量 = _咖啡量; 咖啡温度 = TempEnum.中; 咖啡浓度 = CoffeeConcentration.适中; 热水量 = 0; 热水温度 = TempEnum.低; 牛奶时间 = 0; 奶沫时间 = 0; 预煮 = CancelOrOkEnum.是; 咖啡增强 = CancelOrOkEnum.否; 咖啡牛奶同时出 = CancelOrOkEnum.否; 出品顺序 = CancelOrOkEnum.是; return GetCoffeeRecipe(); } /// /// 美式:咖啡+热水 /// /// 15-240 /// 25-450 public string GetAmerican(int _咖啡量,int _热水量) { 饮品类型 = DrinkType.美式咖啡; 咖啡量 = _咖啡量; 咖啡温度 = TempEnum.中; 咖啡浓度 = CoffeeConcentration.适中; 热水量 = _热水量; 热水温度 = TempEnum.高; 牛奶时间 = 0; 奶沫时间 = 0; 预煮 = CancelOrOkEnum.是; 咖啡增强 = CancelOrOkEnum.否; 咖啡牛奶同时出 = CancelOrOkEnum.否; 出品顺序 = CancelOrOkEnum.是; return GetCoffeeRecipe(); } /// /// 热水:仅热水 /// /// 25-450 public string GetHotWater(int _热水量) { 饮品类型 = DrinkType.热水; 咖啡量 = 0; 咖啡温度 = TempEnum.低; 咖啡浓度 = CoffeeConcentration.清淡; 热水量 = _热水量; 热水温度 = TempEnum.高; 牛奶时间 = 0; 奶沫时间 = 0; 预煮 = CancelOrOkEnum.否; 咖啡增强 = CancelOrOkEnum.否; 咖啡牛奶同时出 = CancelOrOkEnum.否; 出品顺序 = CancelOrOkEnum.否; return GetCoffeeRecipe(); } /// /// 卡布:热奶沫+咖啡 /// /// 15-240 /// 5-120 public string GetCabo(int _咖啡量,int _奶沫时间) { 饮品类型 = DrinkType.卡布奇诺; 咖啡量 = _咖啡量; 咖啡温度 = TempEnum.中; 咖啡浓度 = CoffeeConcentration.适中; 热水量 = 0; 热水温度 = TempEnum.低; 牛奶时间 = 0; 奶沫时间 = _奶沫时间; 预煮 = CancelOrOkEnum.是; 咖啡增强 = CancelOrOkEnum.是; 咖啡牛奶同时出 = CancelOrOkEnum.否; 出品顺序 = CancelOrOkEnum.是; return GetCoffeeRecipe(); } /// /// 玛奇朵:热牛奶+奶沫+咖啡 牛奶和奶沫不能同时为0 /// /// 15-240 /// 5-120 /// 5-120 public string GetMacChiato(int _咖啡量,int _牛奶时间,int _奶沫时间) { 饮品类型 = DrinkType.玛琪雅朵; 咖啡量 = _咖啡量; 咖啡温度 = TempEnum.中; 咖啡浓度 = CoffeeConcentration.适中; 热水量 = 0; 热水温度 = TempEnum.低; 牛奶时间 = _牛奶时间; 奶沫时间 = _奶沫时间; 预煮 = CancelOrOkEnum.是; 咖啡增强 = CancelOrOkEnum.否; 咖啡牛奶同时出 = CancelOrOkEnum.是; 出品顺序 = CancelOrOkEnum.否; return GetCoffeeRecipe(); } /// /// 拿铁:热牛奶+奶沫+咖啡 /// /// 15-240 /// 5-120 /// 5-120 public string GetLatte(int _咖啡量,int _牛奶时间,int _奶沫时间) { 饮品类型 = DrinkType.拿铁咖啡; 咖啡量 = _咖啡量; 咖啡温度 = TempEnum.中; 咖啡浓度 = CoffeeConcentration.适中; 热水量 = 0; 热水温度 = TempEnum.低; 牛奶时间 = _牛奶时间; 奶沫时间 = _奶沫时间; 预煮 = CancelOrOkEnum.是; 咖啡增强 = CancelOrOkEnum.否; 咖啡牛奶同时出 = CancelOrOkEnum.否; 出品顺序 = CancelOrOkEnum.是; return GetCoffeeRecipe(); } /// /// 热牛奶:仅热牛奶 /// /// 5-120 public string GetHotMilk(int _牛奶时间) { 饮品类型 = DrinkType.热牛奶; 咖啡量 = 0; 咖啡温度 = TempEnum.低; 咖啡浓度 = CoffeeConcentration.清淡; 热水量 = 0; 热水温度 = TempEnum.低; 牛奶时间 = _牛奶时间; 奶沫时间 = 0; 预煮 = CancelOrOkEnum.否; 咖啡增强 = CancelOrOkEnum.否; 咖啡牛奶同时出 = CancelOrOkEnum.否; 出品顺序 = CancelOrOkEnum.否; return GetCoffeeRecipe(); } /// /// 热奶沫:仅热奶沫 /// /// 5-120 public string GetHotMilkFoam(int _奶沫时间) { 饮品类型 = DrinkType.热奶沫; 咖啡量 = 0; 咖啡温度 = TempEnum.低; 咖啡浓度 = CoffeeConcentration.清淡; 热水量 = 0; 热水温度 = TempEnum.低; 牛奶时间 = 0; 奶沫时间 = _奶沫时间; 预煮 = CancelOrOkEnum.否; 咖啡增强 = CancelOrOkEnum.否; 咖啡牛奶同时出 = CancelOrOkEnum.否; 出品顺序 = CancelOrOkEnum.否; return GetCoffeeRecipe(); } #endregion } }