@@ -14,3 +14,125 @@ dotnet_analyzer_diagnostic.severity = none | |||||
# CS8602: 解引用可能出现空引用。 | # CS8602: 解引用可能出现空引用。 | ||||
dotnet_diagnostic.CS8602.severity = none | dotnet_diagnostic.CS8602.severity = none | ||||
[*.cs] | |||||
#### 命名样式 #### | |||||
# 命名规则 | |||||
dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion | |||||
dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface | |||||
dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i | |||||
dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion | |||||
dotnet_naming_rule.types_should_be_pascal_case.symbols = types | |||||
dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case | |||||
dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion | |||||
dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members | |||||
dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case | |||||
# 符号规范 | |||||
dotnet_naming_symbols.interface.applicable_kinds = interface | |||||
dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected | |||||
dotnet_naming_symbols.interface.required_modifiers = | |||||
dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum | |||||
dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected | |||||
dotnet_naming_symbols.types.required_modifiers = | |||||
dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method | |||||
dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected | |||||
dotnet_naming_symbols.non_field_members.required_modifiers = | |||||
# 命名样式 | |||||
dotnet_naming_style.begins_with_i.required_prefix = I | |||||
dotnet_naming_style.begins_with_i.required_suffix = | |||||
dotnet_naming_style.begins_with_i.word_separator = | |||||
dotnet_naming_style.begins_with_i.capitalization = pascal_case | |||||
dotnet_naming_style.pascal_case.required_prefix = | |||||
dotnet_naming_style.pascal_case.required_suffix = | |||||
dotnet_naming_style.pascal_case.word_separator = | |||||
dotnet_naming_style.pascal_case.capitalization = pascal_case | |||||
dotnet_naming_style.pascal_case.required_prefix = | |||||
dotnet_naming_style.pascal_case.required_suffix = | |||||
dotnet_naming_style.pascal_case.word_separator = | |||||
dotnet_naming_style.pascal_case.capitalization = pascal_case | |||||
csharp_using_directive_placement = outside_namespace:silent | |||||
csharp_style_expression_bodied_methods = false:silent | |||||
csharp_style_expression_bodied_constructors = false:silent | |||||
csharp_style_expression_bodied_operators = false:silent | |||||
csharp_style_expression_bodied_properties = true:silent | |||||
csharp_style_expression_bodied_indexers = true:silent | |||||
csharp_style_expression_bodied_accessors = true:silent | |||||
csharp_style_expression_bodied_lambdas = true:silent | |||||
csharp_style_expression_bodied_local_functions = false:silent | |||||
csharp_style_conditional_delegate_call = true:suggestion | |||||
csharp_style_var_for_built_in_types = false:silent | |||||
csharp_style_var_when_type_is_apparent = false:silent | |||||
csharp_style_var_elsewhere = false:silent | |||||
csharp_prefer_simple_using_statement = true:suggestion | |||||
csharp_prefer_braces = true:silent | |||||
csharp_style_namespace_declarations = block_scoped:silent | |||||
csharp_prefer_static_local_function = true:suggestion | |||||
[*.vb] | |||||
#### 命名样式 #### | |||||
# 命名规则 | |||||
dotnet_naming_rule.interface_should_be_以_i_开始.severity = suggestion | |||||
dotnet_naming_rule.interface_should_be_以_i_开始.symbols = interface | |||||
dotnet_naming_rule.interface_should_be_以_i_开始.style = 以_i_开始 | |||||
dotnet_naming_rule.类型_should_be_帕斯卡拼写法.severity = suggestion | |||||
dotnet_naming_rule.类型_should_be_帕斯卡拼写法.symbols = 类型 | |||||
dotnet_naming_rule.类型_should_be_帕斯卡拼写法.style = 帕斯卡拼写法 | |||||
dotnet_naming_rule.非字段成员_should_be_帕斯卡拼写法.severity = suggestion | |||||
dotnet_naming_rule.非字段成员_should_be_帕斯卡拼写法.symbols = 非字段成员 | |||||
dotnet_naming_rule.非字段成员_should_be_帕斯卡拼写法.style = 帕斯卡拼写法 | |||||
# 符号规范 | |||||
dotnet_naming_symbols.interface.applicable_kinds = interface | |||||
dotnet_naming_symbols.interface.applicable_accessibilities = public, friend, private, protected, protected_friend, private_protected | |||||
dotnet_naming_symbols.interface.required_modifiers = | |||||
dotnet_naming_symbols.类型.applicable_kinds = class, struct, interface, enum | |||||
dotnet_naming_symbols.类型.applicable_accessibilities = public, friend, private, protected, protected_friend, private_protected | |||||
dotnet_naming_symbols.类型.required_modifiers = | |||||
dotnet_naming_symbols.非字段成员.applicable_kinds = property, event, method | |||||
dotnet_naming_symbols.非字段成员.applicable_accessibilities = public, friend, private, protected, protected_friend, private_protected | |||||
dotnet_naming_symbols.非字段成员.required_modifiers = | |||||
# 命名样式 | |||||
dotnet_naming_style.以_i_开始.required_prefix = I | |||||
dotnet_naming_style.以_i_开始.required_suffix = | |||||
dotnet_naming_style.以_i_开始.word_separator = | |||||
dotnet_naming_style.以_i_开始.capitalization = pascal_case | |||||
dotnet_naming_style.帕斯卡拼写法.required_prefix = | |||||
dotnet_naming_style.帕斯卡拼写法.required_suffix = | |||||
dotnet_naming_style.帕斯卡拼写法.word_separator = | |||||
dotnet_naming_style.帕斯卡拼写法.capitalization = pascal_case | |||||
dotnet_naming_style.帕斯卡拼写法.required_prefix = | |||||
dotnet_naming_style.帕斯卡拼写法.required_suffix = | |||||
dotnet_naming_style.帕斯卡拼写法.word_separator = | |||||
dotnet_naming_style.帕斯卡拼写法.capitalization = pascal_case | |||||
[*.{cs,vb}] | |||||
end_of_line = crlf | |||||
dotnet_style_qualification_for_field = false:silent | |||||
dotnet_style_qualification_for_property = false:silent | |||||
dotnet_style_qualification_for_method = false:silent | |||||
dotnet_style_qualification_for_event = false:silent | |||||
dotnet_style_require_accessibility_modifiers = for_non_interface_members:silent | |||||
dotnet_code_quality_unused_parameters = all:suggestion |
@@ -4,10 +4,6 @@ | |||||
<TargetFramework>net6.0</TargetFramework> | <TargetFramework>net6.0</TargetFramework> | ||||
</PropertyGroup> | </PropertyGroup> | ||||
<ItemGroup> | |||||
<None Include="..\.editorconfig" Link=".editorconfig" /> | |||||
</ItemGroup> | |||||
<ItemGroup> | <ItemGroup> | ||||
<ProjectReference Include="..\BPASmartClient.MessageCommunication\BPASmartClient.MessageCommunication.csproj" /> | <ProjectReference Include="..\BPASmartClient.MessageCommunication\BPASmartClient.MessageCommunication.csproj" /> | ||||
<ProjectReference Include="..\BPASmartClient.Model\BPASmartClient.Model.csproj" /> | <ProjectReference Include="..\BPASmartClient.Model\BPASmartClient.Model.csproj" /> | ||||
@@ -1,6 +1,7 @@ | |||||
using BPASmartClient.DRCoffee; | using BPASmartClient.DRCoffee; | ||||
using BPASmartClient.EventBus; | using BPASmartClient.EventBus; | ||||
using BPASmartClient.Helper; | using BPASmartClient.Helper; | ||||
using BPASmartClient.Message; | |||||
using BPASmartClient.Model; | using BPASmartClient.Model; | ||||
using BPASmartClient.Peripheral; | using BPASmartClient.Peripheral; | ||||
using BPASmartClient.SerialPort; | using BPASmartClient.SerialPort; | ||||
@@ -16,13 +17,10 @@ namespace BPASmartClient.DRCoffee | |||||
/// </summary> | /// </summary> | ||||
public class CoffeeMachine: BasePeripheral | public class CoffeeMachine: BasePeripheral | ||||
{ | { | ||||
public Action<bool> PauseAsk { get; set; } | |||||
//通讯代理 | //通讯代理 | ||||
SerialPortClient commProxy = null; | SerialPortClient commProxy = null; | ||||
//数据仓库 | //数据仓库 | ||||
private DataStorage<byte> dataStorage = new DataStorage<byte>(); | private DataStorage<byte> dataStorage = new DataStorage<byte>(); | ||||
//指令组装 | |||||
private CommandHandler commandHandler = new CommandHandler(); | |||||
//主线程运行标识 | //主线程运行标识 | ||||
private bool running = false; | private bool running = false; | ||||
//是否下发指令,主线程等待 | //是否下发指令,主线程等待 | ||||
@@ -72,7 +70,9 @@ namespace BPASmartClient.DRCoffee | |||||
/// 应用状态改变回调 | /// 应用状态改变回调 | ||||
/// </summary> | /// </summary> | ||||
public Action<DrCoffeeAppStatus> CoffeeAppStatusChanged; | public Action<DrCoffeeAppStatus> CoffeeAppStatusChanged; | ||||
/// <summary> | |||||
/// Dr咖啡机基础协议 | |||||
/// </summary> | |||||
private DrCoffeePackage drinksOrder = new DrCoffeePackage(); | private DrCoffeePackage drinksOrder = new DrCoffeePackage(); | ||||
/// <summary> | /// <summary> | ||||
@@ -86,13 +86,7 @@ namespace BPASmartClient.DRCoffee | |||||
public CoffeeMachine() | public CoffeeMachine() | ||||
{ | { | ||||
// | |||||
//commProxy.SetDataStorage(dataStorage); | |||||
//commandHandler.Init(commProxy); | |||||
//commandHandler.PauseAsk = delegate (bool pause) | |||||
//{ | |||||
// free = !pause; | |||||
//}; | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
@@ -100,7 +94,7 @@ namespace BPASmartClient.DRCoffee | |||||
/// </summary> | /// </summary> | ||||
public override void Start() | public override void Start() | ||||
{ | { | ||||
commProxy = new SerialPortClient(PortName,(BaudRates)Enum.Parse(typeof(BaudRates),BaudRate)); | |||||
commProxy.Start(); | commProxy.Start(); | ||||
running = true; | running = true; | ||||
MainLoop(); | MainLoop(); | ||||
@@ -120,15 +114,15 @@ namespace BPASmartClient.DRCoffee | |||||
/// </summary> | /// </summary> | ||||
private void MainLoop() | private void MainLoop() | ||||
{ | { | ||||
ThreadManage.GetInstance.StartLong(new Action(() => | |||||
{ | |||||
if (free) | |||||
{ | |||||
commProxy.SendData(commandHandler.GetStatusAsk()); | |||||
SendCallback?.Invoke(BitConverter.ToString(commandHandler.GetStatusAsk())); | |||||
} | |||||
Thread.Sleep(200); | |||||
}),"咖啡机询问线程"); | |||||
//ThreadManage.GetInstance.StartLong(new Action(() => | |||||
//{ | |||||
// if (free) | |||||
// { | |||||
// commProxy.SendData(commandHandler.GetStatusAsk()); | |||||
// SendCallback?.Invoke(BitConverter.ToString(commandHandler.GetStatusAsk())); | |||||
// } | |||||
// Thread.Sleep(200); | |||||
//}),"咖啡机询问线程"); | |||||
ThreadManage.GetInstance.StartLong(new Action(() => | ThreadManage.GetInstance.StartLong(new Action(() => | ||||
{ | { | ||||
@@ -176,28 +170,63 @@ namespace BPASmartClient.DRCoffee | |||||
public override void Init() | public override void Init() | ||||
{ | { | ||||
commProxy = new SerialPortClient(PortName,(BaudRates)Enum.Parse(typeof(BaudRates),BaudRate)); | |||||
commProxy.SetDataStorage(dataStorage); | |||||
//咖博士咖啡机制作 | //咖博士咖啡机制作 | ||||
EventBus.EventBus.GetInstance().Subscribe<DRCoffee_MakeCoffeeEvent>(DeviceId,delegate (IEvent @event,EventCallBackHandle callBack) | EventBus.EventBus.GetInstance().Subscribe<DRCoffee_MakeCoffeeEvent>(DeviceId,delegate (IEvent @event,EventCallBackHandle callBack) | ||||
{ | { | ||||
PauseAsk?.Invoke(true); | |||||
Thread.Sleep(200); | |||||
drinksOrder.CommCmd = DrCoffeeCommCmd.饮品制作指令; | |||||
//drinksOrder.DrinksCode = ((DRCoffee_MakeCoffeeEvent)@event).CommCmd; | |||||
commProxy.SendData(DrCoffee.Packe(drinksOrder)); | |||||
Thread.Sleep(200); | |||||
PauseAsk?.Invoke(false); | |||||
try | |||||
{ | |||||
free = true; | |||||
Thread.Sleep(200); | |||||
drinksOrder.CommCmd = DrCoffeeCommCmd.饮品制作指令; | |||||
//drinksOrder.DrinksCode = ((DRCoffee_MakeCoffeeEvent)@event).CommCmd; | |||||
commProxy.SendData(DrCoffee.Packe(drinksOrder)); | |||||
Thread.Sleep(200); | |||||
free = false; | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
MessageLog.GetInstance.Show($"BPASmartClient.DRCoffee 中引发错误,CoffeeMachine 类,描述:[{ex.Message}]"); | |||||
} | |||||
}); | }); | ||||
//咖博士咖啡机取消制作咖啡 | //咖博士咖啡机取消制作咖啡 | ||||
EventBus.EventBus.GetInstance().Subscribe<DRCoffee_CancelMakeCoffeeEvent>(DeviceId,delegate (IEvent @event,EventCallBackHandle callBack) | EventBus.EventBus.GetInstance().Subscribe<DRCoffee_CancelMakeCoffeeEvent>(DeviceId,delegate (IEvent @event,EventCallBackHandle callBack) | ||||
{ | { | ||||
try | |||||
{ | |||||
free = true; | |||||
Thread.Sleep(200); | |||||
drinksOrder.CommCmd = DrCoffeeCommCmd.取消应用指令; | |||||
drinksOrder.DrinksCode = 0; | |||||
commProxy.SendData(DrCoffee.Packe(drinksOrder)); | |||||
Thread.Sleep(200); | |||||
free = false; | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
MessageLog.GetInstance.Show($"BPASmartClient.DRCoffee 中引发错误,CoffeeMachine 类,描述:[{ex.Message}]"); | |||||
} | |||||
}); | }); | ||||
//咖博士咖啡机模式设置 | //咖博士咖啡机模式设置 | ||||
EventBus.EventBus.GetInstance().Subscribe<DRCoffee_CoffeeCommCmdEvent>(DeviceId,delegate (IEvent @event,EventCallBackHandle callBack) | EventBus.EventBus.GetInstance().Subscribe<DRCoffee_CoffeeCommCmdEvent>(DeviceId,delegate (IEvent @event,EventCallBackHandle callBack) | ||||
{ | { | ||||
try | |||||
{ | |||||
free = true; | |||||
Thread.Sleep(200); | |||||
//drinksOrder.CommCmd = (DrCoffeeCommCmd)int.Parse(e.obj_MessageObj.ToString()); | |||||
commProxy.SendData(DrCoffee.Packe(drinksOrder)); | |||||
Thread.Sleep(200); | |||||
free = false; | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
MessageLog.GetInstance.Show($"BPASmartClient.DRCoffee 中引发错误,CoffeeCommCmdHandler 类,描述:[{ex.Message}]"); | |||||
} | |||||
}); | }); | ||||
} | } | ||||
} | } | ||||
@@ -1,120 +0,0 @@ | |||||
| |||||
using BPASmartClient.DRCoffee; | |||||
using BPASmartClient.Message; | |||||
using BPASmartClient.MessageCommunication; | |||||
using BPASmartClient.MessageCommunication.MsgControl; | |||||
using BPASmartClient.SerialPort; | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading; | |||||
using System.Threading.Tasks; | |||||
namespace BPASmartClient.DRCoffee | |||||
{ | |||||
/// <summary> | |||||
/// 指令封装 | |||||
/// </summary> | |||||
internal class CommandHandler | |||||
{ | |||||
byte[] cmdAsk; | |||||
private SerialPortClient commProxy; | |||||
private DrCoffeePackage drinksOrder = new DrCoffeePackage(); | |||||
public Action<bool> PauseAsk { get; set; } | |||||
/// <summary> | |||||
/// 初始化 | |||||
/// </summary> | |||||
internal void Init(SerialPortClient commProxy) | |||||
{ | |||||
//DoCoffee | |||||
this.commProxy = commProxy; | |||||
DrCoffeePackage package = new DrCoffeePackage(); | |||||
package.CommCmd = DrCoffeeCommCmd.饮品制作指令; | |||||
cmdAsk = DrCoffee.Packe(package); | |||||
drinksOrder.CommCmd = DrCoffeeCommCmd.饮品制作指令; | |||||
Class_InnerMessageBus.GetInstance().ListenMessage(this, Class_MessageName.DRCoffee_MakeCoffee, "MakeCoffeeHandler"); | |||||
Class_InnerMessageBus.GetInstance().ListenMessage(this, Class_MessageName.DRCoffee_CancelMakeCoffee, "CancelMakeCoffeeHandler"); | |||||
Class_InnerMessageBus.GetInstance().ListenMessage(this, Class_MessageName.DRCoffee_CoffeeCommCmd, "CoffeeCommCmdHandler"); | |||||
} | |||||
/// <summary> | |||||
/// 制作咖啡 | |||||
/// </summary> | |||||
public void MakeCoffeeHandler(object sender, InnerMessageEventArgs e) | |||||
{ | |||||
try | |||||
{ | |||||
if (e.obj_MessageObj is string) | |||||
{ | |||||
PauseAsk?.Invoke(true); | |||||
Thread.Sleep(200); | |||||
drinksOrder.CommCmd = DrCoffeeCommCmd.饮品制作指令; | |||||
drinksOrder.DrinksCode = (DrCoffeeDrinksCode)int.Parse(e.obj_MessageObj.ToString()); | |||||
commProxy.SendData(DrCoffee.Packe(drinksOrder)); | |||||
Thread.Sleep(200); | |||||
PauseAsk?.Invoke(false); | |||||
} | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
MessageLog.GetInstance.Show($"BPASmartClient.DRCoffee 中引发错误,CancelMakeCoffeeHandler 类,描述:[{ex.Message}]"); | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 取消制作 | |||||
/// </summary> | |||||
public void CancelMakeCoffeeHandler(object sender, InnerMessageEventArgs e) | |||||
{ | |||||
try | |||||
{ | |||||
PauseAsk?.Invoke(true); | |||||
Thread.Sleep(200); | |||||
drinksOrder.CommCmd = DrCoffeeCommCmd.取消应用指令; | |||||
drinksOrder.DrinksCode = 0; | |||||
commProxy.SendData(DrCoffee.Packe(drinksOrder)); | |||||
Thread.Sleep(200); | |||||
PauseAsk?.Invoke(false); | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
MessageLog.GetInstance.Show($"BPASmartClient.DRCoffee 中引发错误,CancelMakeCoffeeHandler 类,描述:[{ex.Message}]"); | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 模式设置 | |||||
/// </summary> | |||||
/// <param name="sender"></param> | |||||
/// <param name="e"></param> | |||||
public void CoffeeCommCmdHandler(object sender, InnerMessageEventArgs e) | |||||
{ | |||||
try | |||||
{ | |||||
if (e.obj_MessageObj is string) | |||||
{ | |||||
PauseAsk?.Invoke(true); | |||||
Thread.Sleep(200); | |||||
drinksOrder.CommCmd = (DrCoffeeCommCmd)int.Parse(e.obj_MessageObj.ToString()); | |||||
commProxy.SendData(DrCoffee.Packe(drinksOrder)); | |||||
Thread.Sleep(200); | |||||
PauseAsk?.Invoke(false); | |||||
} | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
MessageLog.GetInstance.Show($"BPASmartClient.DRCoffee 中引发错误,CoffeeCommCmdHandler 类,描述:[{ex.Message}]"); | |||||
} | |||||
} | |||||
/// <summary> | |||||
/// 发送状态询问 | |||||
/// </summary> | |||||
internal byte[] GetStatusAsk() | |||||
{ | |||||
return cmdAsk; | |||||
} | |||||
} | |||||
} |
@@ -22,7 +22,14 @@ namespace BPASmartClient.SCChip | |||||
public Action<string> SendCallback; | public Action<string> SendCallback; | ||||
public Action<string> ReciveCallback; | public Action<string> ReciveCallback; | ||||
/// <summary> | |||||
/// 串口COM口 | |||||
/// </summary> | |||||
public string PortName { get; set; } | |||||
/// <summary> | |||||
/// 串口波特率 | |||||
/// </summary> | |||||
public string BaudRate { get; set; } | |||||
public ICChipMachine() | public ICChipMachine() | ||||
{ | { | ||||