diff --git a/BPASmartClient.Tourism/Alarm.cs b/BPASmartClient.Tourism/Alarm.cs
new file mode 100644
index 00000000..4f0b1753
--- /dev/null
+++ b/BPASmartClient.Tourism/Alarm.cs
@@ -0,0 +1,18 @@
+using BPASmartClient.Device;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace BPASmartClient.TourismCollege
+{
+ public class Alarm : IAlarm
+ {
+ ///
+ /// 急停
+ ///
+ [Alarm("设备急停")]
+ public bool EStop { get; set; }
+ }
+}
diff --git a/BPASmartClient.Tourism/Control_MorkCL.cs b/BPASmartClient.Tourism/Control_MorkCL.cs
new file mode 100644
index 00000000..a0a46d47
--- /dev/null
+++ b/BPASmartClient.Tourism/Control_MorkCL.cs
@@ -0,0 +1,47 @@
+using BPA.Message.Enum;
+using BPASmartClient.Device;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace BPASmartClient.TourismCollege
+{
+ public class Control_MorkCL : BaseDevice
+ {
+ public override DeviceClientType DeviceType => DeviceClientType.MORKCL;
+
+ GVL_MorkCL morkCL = new GVL_MorkCL();
+ Alarm alarm = new Alarm();
+
+ public override void DoMain()
+ {
+ MonitorViewModel.DeviceId = DeviceId;
+ }
+
+ public override void MainTask()
+ {
+ throw new NotImplementedException();
+ }
+
+ public override void ReadData()
+ {
+ throw new NotImplementedException();
+ }
+
+ public override void ResetProgram()
+ {
+ morkCL = null;
+ morkCL = new GVL_MorkCL();
+ }
+
+ public override void SimOrder()
+ {
+ }
+
+ public override void Stop()
+ {
+ }
+ }
+}
diff --git a/BPASmartClient.Tourism/GVL_MorkCL.cs b/BPASmartClient.Tourism/GVL_MorkCL.cs
new file mode 100644
index 00000000..e07f8ec1
--- /dev/null
+++ b/BPASmartClient.Tourism/GVL_MorkCL.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace BPASmartClient.TourismCollege
+{
+ public class GVL_MorkCL : IStatus
+ {
+ }
+}
diff --git a/BPASmartClient.Tourism/GlobalUsing.cs b/BPASmartClient.Tourism/GlobalUsing.cs
index fad5d1e4..70a9ebe6 100644
--- a/BPASmartClient.Tourism/GlobalUsing.cs
+++ b/BPASmartClient.Tourism/GlobalUsing.cs
@@ -10,4 +10,6 @@ global using BPASmartClient.CustomResource;
global using BPASmartClient.TourismCollege.View;
global using BPASmartClient.TourismCollege.ViewModel;
global using BPASmartClient.TourismCollege.Model;
-
+global using System.Collections.Concurrent;
+global using System.Collections.ObjectModel;
+global using BPASmartClient.Device;
diff --git a/BPASmartClient.Tourism/Model/ControlData.cs b/BPASmartClient.Tourism/Model/ControlData.cs
new file mode 100644
index 00000000..e11228dc
--- /dev/null
+++ b/BPASmartClient.Tourism/Model/ControlData.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace BPASmartClient.TourismCollege.Model
+{
+ internal class ControlData
+ {
+ public ConcurrentDictionary> ControlFuncs { get; set; } = new ConcurrentDictionary>();
+ }
+}
diff --git a/BPASmartClient.Tourism/Model/EFunc.cs b/BPASmartClient.Tourism/Model/EFunc.cs
new file mode 100644
index 00000000..2adcd941
--- /dev/null
+++ b/BPASmartClient.Tourism/Model/EFunc.cs
@@ -0,0 +1,28 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace BPASmartClient.TourismCollege.Model
+{
+ ///
+ /// 功能枚举列表
+ ///
+ internal enum EFunc
+ {
+ 搅拌启动,
+ 搅拌停止,
+ 加热启动,
+ 加热停止,
+ 添加调料,
+ 添加主料,
+ 添加辅料,
+ 炒锅回原点位,
+ 出餐启动,
+ 炒锅清洗,
+ 炒锅回投料位置,
+ 去指定炒制位,
+ 炒制
+ }
+}
diff --git a/BPASmartClient.Tourism/Model/FuncPar.cs b/BPASmartClient.Tourism/Model/FuncPar.cs
new file mode 100644
index 00000000..62882b9d
--- /dev/null
+++ b/BPASmartClient.Tourism/Model/FuncPar.cs
@@ -0,0 +1,34 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace BPASmartClient.TourismCollege.Model
+{
+ ///
+ /// 功能参数信息
+ ///
+ internal class FuncPar
+ {
+ ///
+ /// 参数名
+ ///
+ public string ParName { get; set; }
+
+ ///
+ /// 参数值
+ ///
+ public dynamic ParValue { get; set; }
+
+ ///
+ /// 参数单位
+ ///
+ public string ParUnit { get; set; }
+
+ ///
+ /// 参数描述
+ ///
+ public string ParDescribe { get; set; }
+ }
+}
diff --git a/BPASmartClient.Tourism/Model/InitData.cs b/BPASmartClient.Tourism/Model/InitData.cs
new file mode 100644
index 00000000..c635c9c8
--- /dev/null
+++ b/BPASmartClient.Tourism/Model/InitData.cs
@@ -0,0 +1,38 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace BPASmartClient.TourismCollege.Model
+{
+ internal class InitData
+ {
+ public static Dictionary FunParInit { get; private set; } = new()
+ {
+ { EFunc.搅拌启动,new FuncPar[] { new FuncPar() { ParName="搅拌速度", ParUnit ="HZ", ParDescribe="请输入 0 -- 50 HZ的频率"} } },
+ { EFunc.搅拌停止,new FuncPar[0] },
+ { EFunc.加热启动,new FuncPar[] { new FuncPar() { ParName="加热档位", ParUnit ="挡", ParDescribe="请输入 1 -- 8 挡的档位"} } },
+ { EFunc.加热停止,new FuncPar[0] },
+ { EFunc.添加调料,new FuncPar[]
+ {
+ new FuncPar() { ParName="调料类型", ParDescribe="请选择一种调料"} ,
+ new FuncPar() { ParName="调料需求值", ParUnit ="g", ParDescribe="请输入调料的需求量"} ,
+ }
+ },
+ { EFunc.添加主料,new FuncPar[]
+ {
+ new FuncPar() { ParName="主料类型", ParDescribe="请选择一种主料"} ,
+ new FuncPar() { ParName="主料分量", ParUnit ="KG", ParDescribe="请输入主料的分量"} ,
+ }
+ },
+ { EFunc.添加辅料,new FuncPar[] { new FuncPar() { ParName= "辅料类型", ParDescribe= "请选择一种辅料" } } },
+ { EFunc.炒锅回原点位,new FuncPar[0] },
+ { EFunc.出餐启动,new FuncPar[0] },
+ { EFunc.炒锅清洗,new FuncPar[0] },
+ { EFunc.炒锅回投料位置,new FuncPar[0] },
+ { EFunc.去指定炒制位,new FuncPar[] { new FuncPar() { ParName="设置炒制位", ParDescribe="请输入 1--3 选择一个合适的炒制位置"} } },
+ { EFunc.炒制,new FuncPar[] { new FuncPar() { ParName="设置炒制时间",ParUnit="秒", ParDescribe="请设置一个合适的炒制时间"} } },
+ };
+ }
+}
diff --git a/BPASmartClient.Tourism/Server/DeviceControl.cs b/BPASmartClient.Tourism/Server/DeviceControl.cs
new file mode 100644
index 00000000..a11c5b52
--- /dev/null
+++ b/BPASmartClient.Tourism/Server/DeviceControl.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace BPASmartClient.TourismCollege.Server
+{
+ ///
+ /// 设备控制类
+ ///
+ internal class DeviceControl
+ {
+ }
+}
diff --git a/BPASmartClient.Tourism/Server/FryingPanServer.cs b/BPASmartClient.Tourism/Server/FryingPanServer.cs
new file mode 100644
index 00000000..2b20ce1f
--- /dev/null
+++ b/BPASmartClient.Tourism/Server/FryingPanServer.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace BPASmartClient.TourismCollege.Server
+{
+ ///
+ /// 炒锅服务类
+ ///
+ internal class FryingPanServer
+ {
+ }
+}
diff --git a/BPASmartClient.Tourism/Server/IServer.cs b/BPASmartClient.Tourism/Server/IServer.cs
new file mode 100644
index 00000000..b615a160
--- /dev/null
+++ b/BPASmartClient.Tourism/Server/IServer.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace BPASmartClient.TourismCollege.Server
+{
+ internal interface IServer
+ {
+ void Init();
+ }
+}
diff --git a/BPASmartClient.Tourism/Server/ModbusTcpBase.cs b/BPASmartClient.Tourism/Server/ModbusTcpBase.cs
new file mode 100644
index 00000000..557085ab
--- /dev/null
+++ b/BPASmartClient.Tourism/Server/ModbusTcpBase.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace BPASmartClient.TourismCollege.Server
+{
+ internal abstract class ModbusTcpBase
+ {
+ internal abstract string IP { get; set; }
+ internal abstract string Port { get; set; }
+ }
+}
diff --git a/BPASmartClient.Tourism/Server/OtherServer.cs b/BPASmartClient.Tourism/Server/OtherServer.cs
new file mode 100644
index 00000000..fe3c8dc5
--- /dev/null
+++ b/BPASmartClient.Tourism/Server/OtherServer.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace BPASmartClient.TourismCollege.Server
+{
+ ///
+ /// 其它服务类
+ ///
+ internal class OtherServer
+ {
+ }
+}
diff --git a/BPASmartClient.Tourism/Server/PressureCookerServer.cs b/BPASmartClient.Tourism/Server/PressureCookerServer.cs
new file mode 100644
index 00000000..2d8f48f8
--- /dev/null
+++ b/BPASmartClient.Tourism/Server/PressureCookerServer.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace BPASmartClient.TourismCollege.Server
+{
+ ///
+ /// 压力锅服务类
+ ///
+ internal class PressureCookerServer
+ {
+ }
+}
diff --git a/BPASmartClient.Tourism/Server/RobotServer.cs b/BPASmartClient.Tourism/Server/RobotServer.cs
new file mode 100644
index 00000000..95df6025
--- /dev/null
+++ b/BPASmartClient.Tourism/Server/RobotServer.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace BPASmartClient.TourismCollege.Server
+{
+ ///
+ /// 机器人服务类
+ ///
+ internal class RobotServer
+ {
+ }
+}