From 3e2a666159d92b5057346b0410d50bba2703e821 Mon Sep 17 00:00:00 2001 From: maqiao <625215135@qq.com> Date: Fri, 29 Nov 2024 15:26:38 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8E=BB=E6=8E=89portUtil=E4=B8=AD=E6=97=A0?= =?UTF-8?q?=E5=85=B3=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DM_Weight/App.xaml.cs | 2 +- DM_Weight/Port/PortUtil.cs | 3308 ++++++++--------- .../ViewModels/AdditionWindowViewModel.cs | 10 +- .../CheckOrderNewWindowViewModel.cs | 2 +- .../ViewModels/CheckOrderWindowViewModel.cs | 476 --- .../ViewModels/CheckStockWindowViewModel.cs | 326 -- DM_Weight/ViewModels/HomeWindowViewModel.cs | 12 +- DM_Weight/ViewModels/LoginWindowViewModel.cs | 24 +- .../ViewModels/SettingBoxWindowViewModel.cs | 71 +- DM_Weight/Views/CheckOrderWindow.xaml | 207 -- DM_Weight/Views/CheckOrderWindow.xaml.cs | 28 - DM_Weight/Views/CheckStockWindow.xaml | 314 -- DM_Weight/Views/CheckStockWindow.xaml.cs | 28 - 13 files changed, 1684 insertions(+), 3124 deletions(-) delete mode 100644 DM_Weight/ViewModels/CheckOrderWindowViewModel.cs delete mode 100644 DM_Weight/ViewModels/CheckStockWindowViewModel.cs delete mode 100644 DM_Weight/Views/CheckOrderWindow.xaml delete mode 100644 DM_Weight/Views/CheckOrderWindow.xaml.cs delete mode 100644 DM_Weight/Views/CheckStockWindow.xaml delete mode 100644 DM_Weight/Views/CheckStockWindow.xaml.cs diff --git a/DM_Weight/App.xaml.cs b/DM_Weight/App.xaml.cs index 817e5a2..5c692ce 100644 --- a/DM_Weight/App.xaml.cs +++ b/DM_Weight/App.xaml.cs @@ -170,7 +170,7 @@ namespace DM_Weight //交接柜补药 containerRegistry.RegisterForNavigation(); //核对处方 - containerRegistry.RegisterForNavigation(); + //containerRegistry.RegisterForNavigation(); //管理员根据药箱进行核对处方 containerRegistry.RegisterForNavigation(); //麻醉师核对其名下单子 diff --git a/DM_Weight/Port/PortUtil.cs b/DM_Weight/Port/PortUtil.cs index ae49cb0..4e4550a 100644 --- a/DM_Weight/Port/PortUtil.cs +++ b/DM_Weight/Port/PortUtil.cs @@ -39,647 +39,647 @@ namespace DM_Weight.Port { private readonly ILog logger = LogManager.GetLogger(typeof(PortUtil)); // 抽屉串口 - public SerialPort drawerSerial; - // can总线串口 - public SerialPort canBusSerial; + //public SerialPort drawerSerial; + //// can总线串口 + //public SerialPort canBusSerial; - // 条码枪串口 - public SerialPort scanCodeSerial; + //// 条码枪串口 + //public SerialPort scanCodeSerial; // 冰箱串口 - public SerialPort fridgeSerial; + //public SerialPort fridgeSerial; // 温湿度串口 public SerialPort wsdSerial; // 抽屉串口协议232 | 485 - private int _drawerProtocol = Convert.ToInt32(ConfigurationManager.AppSettings["DrawerProtocol"]); - // can总线耗材板地址 - private int _doorAddr = Convert.ToInt32(ConfigurationManager.AppSettings["DoorAddr"]); - // 储物箱地址 - private int _storageBoxAddr = Convert.ToInt32(ConfigurationManager.AppSettings["StorageBoxAddr"]); + //private int _drawerProtocol = Convert.ToInt32(ConfigurationManager.AppSettings["DrawerProtocol"]); + //// can总线耗材板地址 + //private int _doorAddr = Convert.ToInt32(ConfigurationManager.AppSettings["DoorAddr"]); + //// 储物箱地址 + //private int _storageBoxAddr = Convert.ToInt32(ConfigurationManager.AppSettings["StorageBoxAddr"]); - // can总线串口是否存在 - public bool _canBusExsit = Convert.ToBoolean(ConfigurationManager.AppSettings["CanBusExsit"]); + //// can总线串口是否存在 + //public bool _canBusExsit = Convert.ToBoolean(ConfigurationManager.AppSettings["CanBusExsit"]); // 当前操作的抽屉号 - public int DrawerNo { get; set; } - // 当前操作的库位号列表 - public int[] ColNos { get; set; } = new int[] { }; + //public int DrawerNo { get; set; } + //// 当前操作的库位号列表 + //public int[] ColNos { get; set; } = new int[] { }; - // 当前操作的窗口 - public string WindowName { get; set; } - // 取药操作的窗口名【处方取药、抽屉取药、自选取药、调拨出库】 - private string[] TakeNames = new string[] { "DrawerTakeDrugWindow", "OrderTakeDrugWindow", "SelfTakeDrugWindow", "InvoiceTakeDrugWindow" }; - // 加药操作的窗口名【自选加药、抽屉加药、还药】 - private string[] AddNames = new string[] { "SelfAddWindow", "ReturnDrugWindow", "ReturnDrug1Window", "DrawerAddDrugWindow" }; - // 盘点操作的窗口名【盘点】 - private string[] CheckNames = new string[] { "CheckStockWindow" }; - // 归还空瓶操作的窗口名【盘点】 - private string[] ReturnEmptyNames = new string[] { "ReturnEmptyWindow" }; + //// 当前操作的窗口 + //public string WindowName { get; set; } + //// 取药操作的窗口名【处方取药、抽屉取药、自选取药、调拨出库】 + //private string[] TakeNames = new string[] { "DrawerTakeDrugWindow", "OrderTakeDrugWindow", "SelfTakeDrugWindow", "InvoiceTakeDrugWindow" }; + //// 加药操作的窗口名【自选加药、抽屉加药、还药】 + //private string[] AddNames = new string[] { "SelfAddWindow", "ReturnDrugWindow", "ReturnDrug1Window", "DrawerAddDrugWindow" }; + //// 盘点操作的窗口名【盘点】 + //private string[] CheckNames = new string[] { "CheckStockWindow" }; + //// 归还空瓶操作的窗口名【盘点】 + //private string[] ReturnEmptyNames = new string[] { "ReturnEmptyWindow" }; - public int BoardType { get; set; } = 1; - public int DrawerType { get; set; } = 1; + //public int BoardType { get; set; } = 1; + //public int DrawerType { get; set; } = 1; - private int[] BeforeQuantity { get; set; } = new int[] { }; - private int[] AfterQuantity { get; set; } = new int[] { }; + //private int[] BeforeQuantity { get; set; } = new int[] { }; + //private int[] AfterQuantity { get; set; } = new int[] { }; // 整体流程状态 - private int statue { get; set; } = 0; + //private int statue { get; set; } = 0; // 是否正在操作中 - public bool Operate { get; set; } + //public bool Operate { get; set; } //冰箱是否正在操作中 - public bool FridgeOperate { get; set; } + //public bool FridgeOperate { get; set; } public DateTime dateTime { get; set; } = DateTime.Now; - public async void ResetData() - { - logger.Info($"重新设置串口数据状态【{statue}】,抽屉【{DrawerNo}】"); - if (!"HomeWindow".Equals(WindowName) && statue == 1) - { - if (BoardType == 2) - { - // 灭灯 - AllLightOff(); - } - if (BoardType == 3) - { - // 失能 - await BoxLockLightOff(); - } - if (BoardType == 4) - { - // 失能 - CloseStorage(); - } - if (BoardType == 6) - { - // 失能 - await BoxLockLightOff2(); - } - } - Operate = false; - dateTime = DateTime.Now; - statue = 0; - BeforeQuantity = new int[9]; - AfterQuantity = new int[9]; - BoardType = 1; - DrawerType = 1; - WindowName = ""; - DrawerNo = 0; - ColNos = new int[] { }; - } - public async void OpenBox() - { - logger.Info($"打开药箱,药箱号【{DrawerNo}】"); - Operate = true; - try - { - byte[] buffer = await OpenDrawer(); - int[] r = buffer.Select(it => Convert.ToInt32(it)).ToArray(); + //public async void ResetData() + //{ + // logger.Info($"重新设置串口数据状态【{statue}】,抽屉【{DrawerNo}】"); + // if (!"HomeWindow".Equals(WindowName) && statue == 1) + // { + // if (BoardType == 2) + // { + // // 灭灯 + // AllLightOff(); + // } + // if (BoardType == 3) + // { + // // 失能 + // await BoxLockLightOff(); + // } + // if (BoardType == 4) + // { + // // 失能 + // CloseStorage(); + // } + // if (BoardType == 6) + // { + // // 失能 + // await BoxLockLightOff2(); + // } + // } + // Operate = false; + // dateTime = DateTime.Now; + // statue = 0; + // BeforeQuantity = new int[9]; + // AfterQuantity = new int[9]; + // BoardType = 1; + // DrawerType = 1; + // WindowName = ""; + // DrawerNo = 0; + // ColNos = new int[] { }; + //} + //public async void OpenBox() + //{ + // logger.Info($"打开药箱,药箱号【{DrawerNo}】"); + // Operate = true; + // try + // { + // byte[] buffer = await OpenDrawer(); + // int[] r = buffer.Select(it => Convert.ToInt32(it)).ToArray(); - logger.Info($"OpenDrawer{string.Join(",", r)}"); - if (DrawerState(r)) - { - statue = 1; - // 返回消息 抽屉已经打开 - _eventAggregator.GetEvent().Publish(new util.DeviceMsg() - { - EventType = util.EventType.DRAWEROPEN, - WindowName = WindowName, - }); - logger.Info($"药箱【{DrawerNo}】打开成功"); - await Task.Delay(200); + // logger.Info($"OpenDrawer{string.Join(",", r)}"); + // if (DrawerState(r)) + // { + // statue = 1; + // // 返回消息 抽屉已经打开 + // _eventAggregator.GetEvent().Publish(new util.DeviceMsg() + // { + // EventType = util.EventType.DRAWEROPEN, + // WindowName = WindowName, + // }); + // logger.Info($"药箱【{DrawerNo}】打开成功"); + // await Task.Delay(200); - } - else - { - // 返回消息 抽屉打开失败 - _eventAggregator.GetEvent().Publish(new util.DeviceMsg() - { - EventType = util.EventType.OPENERROR, - WindowName = WindowName, - Message = $"药箱【{DrawerNo}】打开失败" - }); - logger.Info($"药箱【{DrawerNo}】打开失败"); - } - } - catch (Exception ex) - { - _eventAggregator.GetEvent().Publish(new util.DeviceMsg() - { - EventType = util.EventType.OPENERROR, - Message = $"打开药箱异常{ex.Message}" - }); - logger.Info($"打开药箱{DrawerNo}异常:{ex.Message}"); - } + // } + // else + // { + // // 返回消息 抽屉打开失败 + // _eventAggregator.GetEvent().Publish(new util.DeviceMsg() + // { + // EventType = util.EventType.OPENERROR, + // WindowName = WindowName, + // Message = $"药箱【{DrawerNo}】打开失败" + // }); + // logger.Info($"药箱【{DrawerNo}】打开失败"); + // } + // } + // catch (Exception ex) + // { + // _eventAggregator.GetEvent().Publish(new util.DeviceMsg() + // { + // EventType = util.EventType.OPENERROR, + // Message = $"打开药箱异常{ex.Message}" + // }); + // logger.Info($"打开药箱{DrawerNo}异常:{ex.Message}"); + // } - } - //查询药箱状态 - public async void GetBoxStatus() - { - try - { + //} + ////查询药箱状态 + //public async void GetBoxStatus() + //{ + // try + // { - if (Operate) - { - // 查询药箱状态 - byte[] buffer = await CheckBoxStatus(); + // if (Operate) + // { + // // 查询药箱状态 + // byte[] buffer = await CheckBoxStatus(); - int[] r = buffer.Select(it => Convert.ToInt32(it)).ToArray(); + // int[] r = buffer.Select(it => Convert.ToInt32(it)).ToArray(); - logger.Info($"GetBoxStatus{string.Join(",", r)}"); - // 药箱没有关闭 - if (DrawerState(r)) - { - // 继续监听药箱状态 - await Task.Delay(200); - GetBoxStatus(); - } - else - { - // 返回消息 药箱已经关闭 - _eventAggregator.GetEvent().Publish(new util.DeviceMsg() - { - EventType = util.EventType.DRAWERCLOSE, - }); - logger.Info($"抽屉【{DrawerNo}】已关闭"); - } - } + // logger.Info($"GetBoxStatus{string.Join(",", r)}"); + // // 药箱没有关闭 + // if (DrawerState(r)) + // { + // // 继续监听药箱状态 + // await Task.Delay(200); + // GetBoxStatus(); + // } + // else + // { + // // 返回消息 药箱已经关闭 + // _eventAggregator.GetEvent().Publish(new util.DeviceMsg() + // { + // EventType = util.EventType.DRAWERCLOSE, + // }); + // logger.Info($"抽屉【{DrawerNo}】已关闭"); + // } + // } - } - catch (Exception ex) - { - _eventAggregator.GetEvent().Publish(new util.DeviceMsg() - { - EventType = util.EventType.OPENERROR, - WindowName = WindowName, - Message = $"GetBoxStatus异常:{ex.Message}" - }); - logger.Info($"GetBoxStatus异常:{ex.Message}"); - } - } - public async void Start() - { + // } + // catch (Exception ex) + // { + // _eventAggregator.GetEvent().Publish(new util.DeviceMsg() + // { + // EventType = util.EventType.OPENERROR, + // WindowName = WindowName, + // Message = $"GetBoxStatus异常:{ex.Message}" + // }); + // logger.Info($"GetBoxStatus异常:{ex.Message}"); + // } + //} + //public async void Start() + //{ - logger.Info($"进行抽屉操作抽屉号【{DrawerNo}】类型【{BoardType}】库位【{string.Join(",", ColNos)}】窗口【{WindowName}】"); - Operate = true; - //开始录像 - //_chkFunction.HIKStartDVRRecord(); - logger.Info($"时间:{DateTime.Now}"); - try - { - // 储物箱直接开 - if (BoardType == 4) - { - byte[] result = await OpenStorage(); + // logger.Info($"进行抽屉操作抽屉号【{DrawerNo}】类型【{BoardType}】库位【{string.Join(",", ColNos)}】窗口【{WindowName}】"); + // Operate = true; + // //开始录像 + // //_chkFunction.HIKStartDVRRecord(); + // logger.Info($"时间:{DateTime.Now}"); + // try + // { + // // 储物箱直接开 + // if (BoardType == 4) + // { + // byte[] result = await OpenStorage(); - int[] r = result.Select(it => Convert.ToInt32(it)).ToArray(); - if (r[4] != 0) - { - logger.Info($"储物箱使能成功"); - // 查询锁状态 - GetBackDoorState(); - } - else - { - string _WindowName = WindowName; - // 重新初始化数据 - ResetData(); - // 指令发送错误,未打开 - // 返回消息 抽屉打开失败 - _eventAggregator.GetEvent().Publish(new util.DeviceMsg() - { - EventType = util.EventType.OPENERROR, - WindowName = WindowName, - Message = "储物箱使能失败" - }); - logger.Info($"储物箱使能失败"); - } - } - else - { - // 外置抽屉 - if (DrawerType == 3) - { - if (BoardType == 2) - { - byte[] buffer = await OpenRecover(); - int[] r = buffer.Select(it => Convert.ToInt32(it)).ToArray(); - if ((ColNos[0] > 3 && r[4] == 1) || (ColNos[0] < 4 && r[3] == 1)) - { + // int[] r = result.Select(it => Convert.ToInt32(it)).ToArray(); + // if (r[4] != 0) + // { + // logger.Info($"储物箱使能成功"); + // // 查询锁状态 + // GetBackDoorState(); + // } + // else + // { + // string _WindowName = WindowName; + // // 重新初始化数据 + // ResetData(); + // // 指令发送错误,未打开 + // // 返回消息 抽屉打开失败 + // _eventAggregator.GetEvent().Publish(new util.DeviceMsg() + // { + // EventType = util.EventType.OPENERROR, + // WindowName = WindowName, + // Message = "储物箱使能失败" + // }); + // logger.Info($"储物箱使能失败"); + // } + // } + // else + // { + // // 外置抽屉 + // if (DrawerType == 3) + // { + // if (BoardType == 2) + // { + // byte[] buffer = await OpenRecover(); + // int[] r = buffer.Select(it => Convert.ToInt32(it)).ToArray(); + // if ((ColNos[0] > 3 && r[4] == 1) || (ColNos[0] < 4 && r[3] == 1)) + // { - // 告诉前台打开成功 - _eventAggregator.GetEvent().Publish(new util.DeviceMsg() - { - EventType = util.EventType.DRAWEROPEN, - WindowName = WindowName, - }); - logger.Info($"回收箱打开成功"); + // // 告诉前台打开成功 + // _eventAggregator.GetEvent().Publish(new util.DeviceMsg() + // { + // EventType = util.EventType.DRAWEROPEN, + // WindowName = WindowName, + // }); + // logger.Info($"回收箱打开成功"); - // 查询是否关闭状态 - GeRecoverStatus(); - } - else - { - string _WindowName = WindowName; - // 重新初始化数据 - ResetData(); - // 返回消息开启失败 - // 返回消息 抽屉打开失败 - _eventAggregator.GetEvent().Publish(new util.DeviceMsg() - { - EventType = util.EventType.OPENERROR, - WindowName = WindowName, - Message = "回收箱打开失败" - }); - logger.Info($"回收箱打开失败"); - } - } - } - // 内置抽屉 - else - { - if (BoardType == 2) - { - byte[] quantity = await CheckQuantityByDrawer(); - BeforeQuantity = quantity.Select(it => Convert.ToInt32(it)).ToArray().Skip(3).Take(9).ToArray(); - logger.Info($"BeforeQuantity{string.Join(",", BeforeQuantity)}"); - } - if (BoardType == 6) - { - int[] quantity = await CheckQuantityByAddr2(); - BeforeQuantity = quantity.Select(it => Convert.ToInt32(it)).ToArray(); - logger.Info($"BeforeQuantity{string.Join(",", BeforeQuantity)}"); - } + // // 查询是否关闭状态 + // GeRecoverStatus(); + // } + // else + // { + // string _WindowName = WindowName; + // // 重新初始化数据 + // ResetData(); + // // 返回消息开启失败 + // // 返回消息 抽屉打开失败 + // _eventAggregator.GetEvent().Publish(new util.DeviceMsg() + // { + // EventType = util.EventType.OPENERROR, + // WindowName = WindowName, + // Message = "回收箱打开失败" + // }); + // logger.Info($"回收箱打开失败"); + // } + // } + // } + // // 内置抽屉 + // else + // { + // if (BoardType == 2) + // { + // byte[] quantity = await CheckQuantityByDrawer(); + // BeforeQuantity = quantity.Select(it => Convert.ToInt32(it)).ToArray().Skip(3).Take(9).ToArray(); + // logger.Info($"BeforeQuantity{string.Join(",", BeforeQuantity)}"); + // } + // if (BoardType == 6) + // { + // int[] quantity = await CheckQuantityByAddr2(); + // BeforeQuantity = quantity.Select(it => Convert.ToInt32(it)).ToArray(); + // logger.Info($"BeforeQuantity{string.Join(",", BeforeQuantity)}"); + // } - byte[] buffer = await OpenDrawer(); - int[] r = buffer.Select(it => Convert.ToInt32(it)).ToArray(); + // byte[] buffer = await OpenDrawer(); + // int[] r = buffer.Select(it => Convert.ToInt32(it)).ToArray(); - logger.Info($"OpenDrawer{string.Join(",", r)}"); - if (DrawerState(r)) - { - statue = 1; - // 是不是单支抽屉 - if (BoardType == 2) - { - // 取药 - if (Array.IndexOf(TakeNames, WindowName) > -1) - { - // 有药位置亮灯 - await HasLightOnByCol(); - } - // 加药 - if (Array.IndexOf(AddNames, WindowName) > -1) - { - // 无药位置亮灯 - await NoLightOnByCol(); - } - // 盘点 - if (Array.IndexOf(CheckNames, WindowName) > -1) - { - // 不亮灯 - } - // 空瓶 - if (Array.IndexOf(ReturnEmptyNames, WindowName) > -1) - { - // 无药位置亮灯 - await NoLightOnByCol(); - } - } - // 药盒 - if (BoardType == 3) - { - // 药盒指示灯使能 - await BoxLockLightOn(); - } - if (BoardType == 6) - { - // 药盒指示灯使能 - await BoxLockLightOn2(); - } - // 返回消息 抽屉已经打开 - _eventAggregator.GetEvent().Publish(new util.DeviceMsg() - { - EventType = util.EventType.DRAWEROPEN, - WindowName = WindowName, - }); - logger.Info($"抽屉【{DrawerNo}】打开成功"); - // 查询抽屉状态 - await Task.Delay(200); - GetDrawerStatus(); + // logger.Info($"OpenDrawer{string.Join(",", r)}"); + // if (DrawerState(r)) + // { + // statue = 1; + // // 是不是单支抽屉 + // if (BoardType == 2) + // { + // // 取药 + // if (Array.IndexOf(TakeNames, WindowName) > -1) + // { + // // 有药位置亮灯 + // await HasLightOnByCol(); + // } + // // 加药 + // if (Array.IndexOf(AddNames, WindowName) > -1) + // { + // // 无药位置亮灯 + // await NoLightOnByCol(); + // } + // // 盘点 + // if (Array.IndexOf(CheckNames, WindowName) > -1) + // { + // // 不亮灯 + // } + // // 空瓶 + // if (Array.IndexOf(ReturnEmptyNames, WindowName) > -1) + // { + // // 无药位置亮灯 + // await NoLightOnByCol(); + // } + // } + // // 药盒 + // if (BoardType == 3) + // { + // // 药盒指示灯使能 + // await BoxLockLightOn(); + // } + // if (BoardType == 6) + // { + // // 药盒指示灯使能 + // await BoxLockLightOn2(); + // } + // // 返回消息 抽屉已经打开 + // _eventAggregator.GetEvent().Publish(new util.DeviceMsg() + // { + // EventType = util.EventType.DRAWEROPEN, + // WindowName = WindowName, + // }); + // logger.Info($"抽屉【{DrawerNo}】打开成功"); + // // 查询抽屉状态 + // await Task.Delay(200); + // GetDrawerStatus(); - } - else - { - string _WindowName = WindowName; - // 重新初始化数据 - ResetData(); - // 返回消息 抽屉打开失败 - _eventAggregator.GetEvent().Publish(new util.DeviceMsg() - { - EventType = util.EventType.OPENERROR, - WindowName = WindowName, - Message = $"抽屉【{DrawerNo}】打开失败" - }); - logger.Info($"抽屉【{DrawerNo}】打开失败"); - } - } + // } + // else + // { + // string _WindowName = WindowName; + // // 重新初始化数据 + // ResetData(); + // // 返回消息 抽屉打开失败 + // _eventAggregator.GetEvent().Publish(new util.DeviceMsg() + // { + // EventType = util.EventType.OPENERROR, + // WindowName = WindowName, + // Message = $"抽屉【{DrawerNo}】打开失败" + // }); + // logger.Info($"抽屉【{DrawerNo}】打开失败"); + // } + // } - } - } - catch (Exception ex) - { - string _WindowName = WindowName; - // 重新初始化数据 - ResetData(); - // 返回消息 抽屉打开失败 - _eventAggregator.GetEvent().Publish(new util.DeviceMsg() - { - EventType = util.EventType.OPENERROR, - WindowName = _WindowName, - Message = $"操作异常{ex.Message}" - }); - logger.Info(ex.Message); - } + // } + // } + // catch (Exception ex) + // { + // string _WindowName = WindowName; + // // 重新初始化数据 + // ResetData(); + // // 返回消息 抽屉打开失败 + // _eventAggregator.GetEvent().Publish(new util.DeviceMsg() + // { + // EventType = util.EventType.OPENERROR, + // WindowName = _WindowName, + // Message = $"操作异常{ex.Message}" + // }); + // logger.Info(ex.Message); + // } - } + //} - public async void GetDrawerStatus() - { - try - { + //public async void GetDrawerStatus() + //{ + // try + // { - if (Operate) - { - // 查询抽屉状态 - byte[] buffer = await CheckDrawerStatus(); + // if (Operate) + // { + // // 查询抽屉状态 + // byte[] buffer = await CheckDrawerStatus(); - int[] r = buffer.Select(it => Convert.ToInt32(it)).ToArray(); + // int[] r = buffer.Select(it => Convert.ToInt32(it)).ToArray(); - logger.Info($"GetDrawerStatus{string.Join(",", r)}"); - // 抽屉没有关闭 - if (DrawerState(r)) - { - if (BoardType == 2) - { - // 继续查询抽屉药品数量 - // 查询抽屉药品数量 - byte[] quantity = await CheckQuantityByDrawer(); - AfterQuantity = quantity.Select(it => Convert.ToInt32(it)).ToArray().Skip(3).Take(9).ToArray(); - logger.Info($"AfterQuantity{string.Join(",", AfterQuantity)}"); - int[] Quantitys = new int[BeforeQuantity.Length]; - for (int i = 0; i < BeforeQuantity.Length; i++) - { - // 取药 - if (Array.IndexOf(TakeNames, WindowName) > -1) - { - Quantitys[i] = BeforeQuantity[i] - AfterQuantity[i]; - } - // 加药 - if (Array.IndexOf(AddNames, WindowName) > -1) - { - Quantitys[i] = AfterQuantity[i] - BeforeQuantity[i]; - } - // 盘点 - if (Array.IndexOf(CheckNames, WindowName) > -1) - { - Quantitys[i] = AfterQuantity[i] - BeforeQuantity[i]; - } - // 空瓶 - if (Array.IndexOf(CheckNames, WindowName) > -1) - { - Quantitys[i] = AfterQuantity[i] - BeforeQuantity[i]; - } + // logger.Info($"GetDrawerStatus{string.Join(",", r)}"); + // // 抽屉没有关闭 + // if (DrawerState(r)) + // { + // if (BoardType == 2) + // { + // // 继续查询抽屉药品数量 + // // 查询抽屉药品数量 + // byte[] quantity = await CheckQuantityByDrawer(); + // AfterQuantity = quantity.Select(it => Convert.ToInt32(it)).ToArray().Skip(3).Take(9).ToArray(); + // logger.Info($"AfterQuantity{string.Join(",", AfterQuantity)}"); + // int[] Quantitys = new int[BeforeQuantity.Length]; + // for (int i = 0; i < BeforeQuantity.Length; i++) + // { + // // 取药 + // if (Array.IndexOf(TakeNames, WindowName) > -1) + // { + // Quantitys[i] = BeforeQuantity[i] - AfterQuantity[i]; + // } + // // 加药 + // if (Array.IndexOf(AddNames, WindowName) > -1) + // { + // Quantitys[i] = AfterQuantity[i] - BeforeQuantity[i]; + // } + // // 盘点 + // if (Array.IndexOf(CheckNames, WindowName) > -1) + // { + // Quantitys[i] = AfterQuantity[i] - BeforeQuantity[i]; + // } + // // 空瓶 + // if (Array.IndexOf(CheckNames, WindowName) > -1) + // { + // Quantitys[i] = AfterQuantity[i] - BeforeQuantity[i]; + // } - } - // 告诉前台数据变化 - _eventAggregator.GetEvent().Publish(new util.DeviceMsg() - { - EventType = util.EventType.UPDATEQUANTITY, - WindowName = WindowName, - Quantitys = Quantitys - }); - logger.Info($"单支板数量变化【{string.Join(",", Quantitys)}】"); + // } + // // 告诉前台数据变化 + // _eventAggregator.GetEvent().Publish(new util.DeviceMsg() + // { + // EventType = util.EventType.UPDATEQUANTITY, + // WindowName = WindowName, + // Quantitys = Quantitys + // }); + // logger.Info($"单支板数量变化【{string.Join(",", Quantitys)}】"); - } - if (BoardType == 6) - { - // 继续查询抽屉药品数量 - // 查询抽屉药品数量 - int[] quantity = await CheckQuantityByAddr2(); - AfterQuantity = quantity.Select(it => Convert.ToInt32(it)).ToArray(); - logger.Info($"AfterQuantity{string.Join(",", AfterQuantity)}"); - int[] Quantitys = new int[BeforeQuantity.Length]; - for (int i = 0; i < BeforeQuantity.Length; i++) - { - // 取药 - if (Array.IndexOf(TakeNames, WindowName) > -1) - { - Quantitys[i] = BeforeQuantity[i] - AfterQuantity[i]; - } - // 加药 - if (Array.IndexOf(AddNames, WindowName) > -1) - { - Quantitys[i] = AfterQuantity[i] - BeforeQuantity[i]; - } - // 盘点 - if (Array.IndexOf(CheckNames, WindowName) > -1) - { - Quantitys[i] = AfterQuantity[i] - BeforeQuantity[i]; - } - // 空瓶 - if (Array.IndexOf(CheckNames, WindowName) > -1) - { - Quantitys[i] = AfterQuantity[i] - BeforeQuantity[i]; - } + // } + // if (BoardType == 6) + // { + // // 继续查询抽屉药品数量 + // // 查询抽屉药品数量 + // int[] quantity = await CheckQuantityByAddr2(); + // AfterQuantity = quantity.Select(it => Convert.ToInt32(it)).ToArray(); + // logger.Info($"AfterQuantity{string.Join(",", AfterQuantity)}"); + // int[] Quantitys = new int[BeforeQuantity.Length]; + // for (int i = 0; i < BeforeQuantity.Length; i++) + // { + // // 取药 + // if (Array.IndexOf(TakeNames, WindowName) > -1) + // { + // Quantitys[i] = BeforeQuantity[i] - AfterQuantity[i]; + // } + // // 加药 + // if (Array.IndexOf(AddNames, WindowName) > -1) + // { + // Quantitys[i] = AfterQuantity[i] - BeforeQuantity[i]; + // } + // // 盘点 + // if (Array.IndexOf(CheckNames, WindowName) > -1) + // { + // Quantitys[i] = AfterQuantity[i] - BeforeQuantity[i]; + // } + // // 空瓶 + // if (Array.IndexOf(CheckNames, WindowName) > -1) + // { + // Quantitys[i] = AfterQuantity[i] - BeforeQuantity[i]; + // } - } - // 告诉前台数据变化 - _eventAggregator.GetEvent().Publish(new util.DeviceMsg() - { - EventType = util.EventType.UPDATEQUANTITY, - WindowName = WindowName, - Quantitys = Quantitys - }); - logger.Info($"单支板数量变化【{string.Join(",", Quantitys)}】"); + // } + // // 告诉前台数据变化 + // _eventAggregator.GetEvent().Publish(new util.DeviceMsg() + // { + // EventType = util.EventType.UPDATEQUANTITY, + // WindowName = WindowName, + // Quantitys = Quantitys + // }); + // logger.Info($"单支板数量变化【{string.Join(",", Quantitys)}】"); - } - // 继续监听抽屉状态 - await Task.Delay(200); - GetDrawerStatus(); - } - else - { - statue = 2; - if (BoardType == 2) - { - // 关灯 - AllLightOff(); + // } + // // 继续监听抽屉状态 + // await Task.Delay(200); + // GetDrawerStatus(); + // } + // else + // { + // statue = 2; + // if (BoardType == 2) + // { + // // 关灯 + // AllLightOff(); - } - // 药盒 - if (BoardType == 3) - { - // 药盒指示灯失能 - await BoxLockLightOff(); - } - if (BoardType == 6) - { - // 药盒指示灯使能 - await BoxLockLightOff2(); - } - string _WindowName = WindowName; - // 重新初始化数据 - ResetData(); - // 返回消息 抽屉已经关闭 - _eventAggregator.GetEvent().Publish(new util.DeviceMsg() - { - EventType = util.EventType.DRAWERCLOSE, - WindowName = _WindowName, - }); - logger.Info($"抽屉【{DrawerNo}】已关闭"); - } - } + // } + // // 药盒 + // if (BoardType == 3) + // { + // // 药盒指示灯失能 + // await BoxLockLightOff(); + // } + // if (BoardType == 6) + // { + // // 药盒指示灯使能 + // await BoxLockLightOff2(); + // } + // string _WindowName = WindowName; + // // 重新初始化数据 + // ResetData(); + // // 返回消息 抽屉已经关闭 + // _eventAggregator.GetEvent().Publish(new util.DeviceMsg() + // { + // EventType = util.EventType.DRAWERCLOSE, + // WindowName = _WindowName, + // }); + // logger.Info($"抽屉【{DrawerNo}】已关闭"); + // } + // } - } - catch (Exception ex) - { - _eventAggregator.GetEvent().Publish(new util.DeviceMsg() - { - EventType = util.EventType.OPENERROR, - WindowName = WindowName, - Message = $"GetDrawerStatus异常:{ex.Message}" - }); - logger.Info($"GetDrawerStatus异常:{ex.Message}"); - } - } + // } + // catch (Exception ex) + // { + // _eventAggregator.GetEvent().Publish(new util.DeviceMsg() + // { + // EventType = util.EventType.OPENERROR, + // WindowName = WindowName, + // Message = $"GetDrawerStatus异常:{ex.Message}" + // }); + // logger.Info($"GetDrawerStatus异常:{ex.Message}"); + // } + //} - public async void GeRecoverStatus() - { - if (Operate) - { - byte[] buffer = await CheckRecoverStatus(); - int[] r = buffer.Select(it => Convert.ToInt32(it)).ToArray(); + //public async void GeRecoverStatus() + //{ + // if (Operate) + // { + // byte[] buffer = await CheckRecoverStatus(); + // int[] r = buffer.Select(it => Convert.ToInt32(it)).ToArray(); - logger.Info($"GeRecoverStatus{string.Join(",", r)}"); + // logger.Info($"GeRecoverStatus{string.Join(",", r)}"); - // 回收箱关闭成功 - if ((ColNos[0] > 3 && r[4] == 0) || (ColNos[0] < 4 && r[3] == 0)) - { - logger.Info($"回收箱关闭"); - // 查询数量 - byte[] bytes = await CheckRecoverQuantity(); + // // 回收箱关闭成功 + // if ((ColNos[0] > 3 && r[4] == 0) || (ColNos[0] < 4 && r[3] == 0)) + // { + // logger.Info($"回收箱关闭"); + // // 查询数量 + // byte[] bytes = await CheckRecoverQuantity(); - int[] r1 = bytes.Select(it => Convert.ToInt32(it)).ToArray(); - // 返回消息库位关闭,放入空瓶数量 - int[] quantitys = r1.Skip(3).Take(3).ToArray(); - int index = ColNos[0] % 3 > 0 ? ColNos[0] % 3 - 1 : 2; + // int[] r1 = bytes.Select(it => Convert.ToInt32(it)).ToArray(); + // // 返回消息库位关闭,放入空瓶数量 + // int[] quantitys = r1.Skip(3).Take(3).ToArray(); + // int index = ColNos[0] % 3 > 0 ? ColNos[0] % 3 - 1 : 2; - // 指定库位放入的药品数量 - int InCount = quantitys[index]; - string _WindowName = WindowName; - // 重新初始化数据 - ResetData(); - _eventAggregator.GetEvent().Publish(new util.DeviceMsg() - { - EventType = util.EventType.DRAWERCLOSE, - Quantitys = new int[] { InCount }, - WindowName = WindowName, - }); + // // 指定库位放入的药品数量 + // int InCount = quantitys[index]; + // string _WindowName = WindowName; + // // 重新初始化数据 + // ResetData(); + // _eventAggregator.GetEvent().Publish(new util.DeviceMsg() + // { + // EventType = util.EventType.DRAWERCLOSE, + // Quantitys = new int[] { InCount }, + // WindowName = WindowName, + // }); - logger.Info($"回收板数量变化【{string.Join(",", quantitys)}】"); - } - else - { - // 查询是否关闭状态 - await Task.Delay(200); - GeRecoverStatus(); - } - } - } + // logger.Info($"回收板数量变化【{string.Join(",", quantitys)}】"); + // } + // else + // { + // // 查询是否关闭状态 + // await Task.Delay(200); + // GeRecoverStatus(); + // } + // } + //} - public async void GetBackDoorState() - { - try - { - if (Operate) - { - byte[] result = await BackDoorState(); + //public async void GetBackDoorState() + //{ + // try + // { + // if (Operate) + // { + // byte[] result = await BackDoorState(); - int[] r = result.Select(it => Convert.ToInt32(it)).ToArray(); - int[] lockStates = CheckStorageStatus(r.Skip(3).Take(2).ToArray()); - int[] lightStates = CheckStorageStatus(r.Skip(5).Take(2).ToArray()); + // int[] r = result.Select(it => Convert.ToInt32(it)).ToArray(); + // int[] lockStates = CheckStorageStatus(r.Skip(3).Take(2).ToArray()); + // int[] lightStates = CheckStorageStatus(r.Skip(5).Take(2).ToArray()); - // 锁处于关闭状态 - if (lockStates[_storageBoxAddr - 1] == 0) - { - // 锁还未打开过 - if (statue == 0) - { - // 指示灯不闪烁了,说明规定时间内没有开锁,需要给前台提示 - if (lightStates[_storageBoxAddr - 1] == 0) - { - // 打开失败 - logger.Info($"储物箱指示灯不闪烁,使能过期"); - } - else - { - // 灯在闪烁继续监听状态 - GetBackDoorState(); - } - } - else if (statue == 1) - { + // // 锁处于关闭状态 + // if (lockStates[_storageBoxAddr - 1] == 0) + // { + // // 锁还未打开过 + // if (statue == 0) + // { + // // 指示灯不闪烁了,说明规定时间内没有开锁,需要给前台提示 + // if (lightStates[_storageBoxAddr - 1] == 0) + // { + // // 打开失败 + // logger.Info($"储物箱指示灯不闪烁,使能过期"); + // } + // else + // { + // // 灯在闪烁继续监听状态 + // GetBackDoorState(); + // } + // } + // else if (statue == 1) + // { - // 锁是打开状态现在关闭了,说明操作完成了,告诉前台锁已关闭 - statue = 2; + // // 锁是打开状态现在关闭了,说明操作完成了,告诉前台锁已关闭 + // statue = 2; - string _WindowName = WindowName; - // 重新初始化数据 - ResetData(); - _eventAggregator.GetEvent().Publish(new util.DeviceMsg() - { - EventType = util.EventType.DRAWERCLOSE, - WindowName = _WindowName, - }); - logger.Info($"储物箱关闭"); - } - } - // 锁处于打开状态 - if (lockStates[_storageBoxAddr - 1] == 1) - { - // 锁还未打开过,说明打开成功了 - if (statue == 0) - { - statue = 1; - // 告诉前台打开成功 - _eventAggregator.GetEvent().Publish(new util.DeviceMsg() - { - EventType = util.EventType.DRAWEROPEN, - WindowName = WindowName, - }); - logger.Info($"储物箱打开成功"); - } - // 灯在闪烁继续监听状态 - GetBackDoorState(); - } - } + // string _WindowName = WindowName; + // // 重新初始化数据 + // ResetData(); + // _eventAggregator.GetEvent().Publish(new util.DeviceMsg() + // { + // EventType = util.EventType.DRAWERCLOSE, + // WindowName = _WindowName, + // }); + // logger.Info($"储物箱关闭"); + // } + // } + // // 锁处于打开状态 + // if (lockStates[_storageBoxAddr - 1] == 1) + // { + // // 锁还未打开过,说明打开成功了 + // if (statue == 0) + // { + // statue = 1; + // // 告诉前台打开成功 + // _eventAggregator.GetEvent().Publish(new util.DeviceMsg() + // { + // EventType = util.EventType.DRAWEROPEN, + // WindowName = WindowName, + // }); + // logger.Info($"储物箱打开成功"); + // } + // // 灯在闪烁继续监听状态 + // GetBackDoorState(); + // } + // } - } - catch (Exception ex) - { - logger.Info($"GetBackDoorState异常{ex.Message}"); - } - } + // } + // catch (Exception ex) + // { + // logger.Info($"GetBackDoorState异常{ex.Message}"); + // } + //} private readonly IEventAggregator _eventAggregator; @@ -732,22 +732,22 @@ namespace DM_Weight.Port //{ // logger.Error("冰箱串口打开错误" + e.Message); //} - if (_canBusExsit) - { - try - { - string CanBusPortPath = ConfigurationManager.AppSettings["CanBusPortPath"]; - logger.Info($"打开can总线串口【{CanBusPortPath}】"); - canBusSerial = new SerialPort(CanBusPortPath, 57600, Parity.None, 8); - canBusSerial.Open(); - logger.Info($"can总线串口打开结果【{canBusSerial.IsOpen}】"); - } - catch (Exception e) - { - logger.Error("can总线串口打开错误" + e.Message); - } + //if (_canBusExsit) + //{ + // try + // { + // string CanBusPortPath = ConfigurationManager.AppSettings["CanBusPortPath"]; + // logger.Info($"打开can总线串口【{CanBusPortPath}】"); + // canBusSerial = new SerialPort(CanBusPortPath, 57600, Parity.None, 8); + // canBusSerial.Open(); + // logger.Info($"can总线串口打开结果【{canBusSerial.IsOpen}】"); + // } + // catch (Exception e) + // { + // logger.Error("can总线串口打开错误" + e.Message); + // } - } + //} try { string wsdSerialPort = ConfigurationManager.AppSettings["wsdSerialPort"]; @@ -810,1070 +810,1070 @@ namespace DM_Weight.Port - #region 抽屉串口操作 - // 打开抽屉 - public async Task OpenDrawer() - { - drawerSerial.DiscardInBuffer(); - byte[] buffer = new byte[] { 0xaa, 0x41, (byte)DrawerNo, 0xee }; - if (_drawerProtocol == 485) - { - if (DrawerNo > 8) - { - buffer = new byte[] { 0xaa, 0x21, (byte)(DrawerNo - 8), 0xee }; - } - else - { - buffer = new byte[] { 0xaa, 0x11, (byte)DrawerNo, 0xee }; - } - - } - logger.Info($"打开抽屉,串口数据:{Convert.ToHexString(buffer)}"); - drawerSerial.Write(buffer, 0, 4); - - return await GetBufferByPort(drawerSerial, 11); - } - - private bool DrawerState(int[] r) - { - int index = DrawerNo > 8 ? DrawerNo - 7 : DrawerNo + 1; - return r[index] == 0; - } - - // 查询抽屉状态 - public async Task CheckDrawerStatus() - { - drawerSerial.DiscardInBuffer(); - byte[] buffer = new byte[] { 0xaa, 0x42, 0xee }; - if (_drawerProtocol == 485) - { - if (DrawerNo > 8) - { - buffer = new byte[] { 0xaa, 0x22, 0xee }; - } - else - { - buffer = new byte[] { 0xaa, 0x12, 0xee }; - } - - } - - logger.Info($"查询抽屉状态,串口数据:{Convert.ToHexString(buffer)}"); - drawerSerial.Write(buffer, 0, 3); - - return await GetBufferByPort(drawerSerial, 11); - } - // 查询药箱状态 - public async Task CheckBoxStatus() - { - drawerSerial.DiscardInBuffer(); - byte[] buffer = new byte[] { 0xaa, 0x42, 0xee }; - if (_drawerProtocol == 485) - { - if (DrawerNo > 8) - { - buffer = new byte[] { 0xaa, 0x22, 0xee }; - } - else - { - buffer = new byte[] { 0xaa, 0x12, 0xee }; - } - - } - - logger.Info($"查询抽屉状态,串口数据:{Convert.ToHexString(buffer)}"); - drawerSerial.Write(buffer, 0, 3); - - return await GetBufferByPort(drawerSerial, 11); - } - #endregion - - #region can总线串口操作 - #region 耗材板操作 - // 后门状态 - public async Task BackDoorState() - { - - canBusSerial.DiscardInBuffer(); - byte[] buffer = new byte[] { 0xaa, (byte)(_doorAddr), 0x02, 0x00, 0x00, 0x00, 0x00, 0xee }; - canBusSerial.Write(buffer, 0, 8); - - return await GetBufferByPort(canBusSerial, 8); - - } - // 打开电控门储物箱(有灯使能) - public async Task OpenStorage() - { - canBusSerial.DiscardInBuffer(); - byte[] buffer = new byte[] { 0xaa, (byte)(_doorAddr), 0x01, (byte)_storageBoxAddr, 0x00, 0x00, 0x00, 0xee }; - canBusSerial.Write(buffer, 0, 8); - - - return await GetBufferByPort(canBusSerial, 8); - } - // 关闭电控门储物箱(有灯失能) - public void CloseStorage() - { - byte[] buffer = new byte[] { 0xaa, (byte)(_doorAddr), 0x04, 0x00, 0x00, 0x00, 0x00, 0xee }; - canBusSerial.Write(buffer, 0, 8); - } - // 打开普通储物箱(无灯) - public void OpenStorageBox() - { - byte[] buffer = new byte[] { 0xaa, (byte)(_storageBoxAddr), 0x03, 0x00, 0x00, 0x00, 0x00, 0xee }; - canBusSerial.Write(buffer, 0, 8); - } - // 关闭普通储物箱(无灯) - public void CloseStorageBox() - { - byte[] buffer = new byte[] { 0xaa, (byte)(_storageBoxAddr), 0x04, 0x00, 0x00, 0x00, 0x00, 0xee }; - canBusSerial.Write(buffer, 0, 8); - } - - private int[] CheckStorageStatus(int[] data) - { - int a = data[0]; - int b = data[1]; - int[] intA = Decimal2Chunks(a); - int[] intB = Decimal2Chunks(b); - int[] r = new int[intA.Length + intB.Length]; - Array.Copy(intA, 0, r, 0, intA.Length); - Array.Copy(intB, 0, r, intA.Length, intB.Length); - return r; - } - private int[] Decimal2Chunks(int d) - { - string s = Convert.ToString(d, 2); - int[] chars = new int[8]; - char[] schar = s.ToCharArray(); - Array.Reverse(schar); - int[] iArray = Array.ConvertAll(schar, c => (int)Char.GetNumericValue(c)); - int[] addArray = new int[8 - iArray.Length]; - if (iArray.Length < 8) - { - for (int i = 0; i < 8 - iArray.Length; i++) - { - addArray[i] = 0; - } - chars = iArray.Concat(addArray).ToArray(); - } - else - { - chars = iArray[0..iArray.Length]; - } - return chars; - //List t = s.Split().Select(it => Convert.ToInt32(it)).Reverse().ToList(); - //while (t.Count < 8) - //{ - // t.Add(0); - //} - //return t.ToArray(); - } - - #endregion - - #region 单支操作 - // 以抽屉为单位获取抽屉内所有库位的药品数量 - public async Task CheckQuantityByDrawer() - { - canBusSerial.DiscardInBuffer(); - - byte[] buffer = new byte[] { 0xaa, (byte)(0xf0 + DrawerNo), 0x01, 0x00, 0x00, 0x00, 0x00, 0xee }; - - logger.Info($"单支板发送库位数量查询【{string.Join(",", buffer)}】"); - canBusSerial.Write(buffer, 0, 8); - - return await GetBufferByPort(canBusSerial, 13); - } - // 获取单个单支板药品数量 - public async Task CheckQuantityByCol(int DrawerNo, int colNo) - { - canBusSerial.DiscardInBuffer(); - - var channel = Convert.ToInt32((DrawerNo * 10 + colNo).ToString(), 16); - byte[] buffer = new byte[] { 0xaa, (byte)channel, 0x08, 0x00, 0x00, 0x00, 0x00, 0xee }; - canBusSerial.Write(buffer, 0, 8); - - return await GetBufferByPort(canBusSerial, 8); - - } - // 以抽屉为单位有药位置亮灯 - public void HasLightOnByDrawer() - { - byte[] buffer = new byte[] { 0xaa, (byte)(0xf0 + DrawerNo), 0x02, 0x00, 0x00, 0x00, 0x00, 0xee }; - canBusSerial.Write(buffer, 0, 8); - } - // 以抽屉为单位无药位置亮灯 - public void NoLightOnByDrawer() - { - byte[] buffer = new byte[] { 0xaa, (byte)(0xf0 + DrawerNo), 0x03, 0x00, 0x00, 0x00, 0x00, 0xee }; - canBusSerial.Write(buffer, 0, 8); - } - // 以抽屉为单位灭灯 - public void LightOffByDrawer() - { - byte[] buffer = new byte[] { 0xaa, (byte)(0xf0 + DrawerNo), 0x06, 0x00, 0x00, 0x00, 0x00, 0xee }; - canBusSerial.Write(buffer, 0, 8); - } - // 以单支板为单位有药位置亮灯 - public async Task HasLightOnByCol() - { - - for (int i = 0; i < ColNos.Length; i++) - { - - var channel = Convert.ToInt32((DrawerNo * 10 + ColNos[i]).ToString(), 16); - byte[] buffer = new byte[] { 0xaa, (byte)channel, 0x0a, 0x00, 0x00, 0x00, 0x00, 0xee }; - canBusSerial.Write(buffer, 0, 8); - await Task.Delay(TimeSpan.FromMilliseconds(20)); - } - - } - // 以单支板为单位无药位置亮灯 - public async Task NoLightOnByCol() - { - for (int i = 0; i < ColNos.Length; i++) - { - var channel = Convert.ToInt32((DrawerNo * 10 + ColNos[i]).ToString(), 16); - byte[] buffer = new byte[] { 0xaa, (byte)channel, 0x0b, 0x00, 0x00, 0x00, 0x00, 0xee }; - canBusSerial.Write(buffer, 0, 8); - await Task.Delay(TimeSpan.FromMilliseconds(20)); - } - } - // 广播灭灯 - public void AllLightOff() - { - byte[] buffer = new byte[] { 0xaa, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xee }; - canBusSerial.Write(buffer, 0, 8); - } - #endregion - - #region 药盒操作 - // 指定药盒指示灯开启使能开锁 - public async Task BoxLockLightOn() - { - for (int i = 0; i < ColNos.Length; i++) - { - - var channel = Convert.ToInt32((DrawerNo * 10 + ColNos[i]).ToString(), 16); - byte[] buffer = new byte[] { 0xaa, (byte)channel, 0x03, 0x00, 0x00, 0x00, 0x00, 0xee }; - canBusSerial.Write(buffer, 0, 8); - await Task.Delay(TimeSpan.FromMilliseconds(20)); - } - } - // 指定药盒指示灯开启失能开锁 - public async Task BoxLockLightOff() - { - for (int i = 0; i < ColNos.Length; i++) - { - var channel = Convert.ToInt32((DrawerNo * 10 + ColNos[i]).ToString(), 16); - byte[] buffer = new byte[] { 0xaa, (byte)channel, 0x04, 0x00, 0x00, 0x00, 0x00, 0xee }; - canBusSerial.Write(buffer, 0, 8); - await Task.Delay(TimeSpan.FromMilliseconds(20)); - } - } - // 指定药盒状态查询 - public async Task BoxLockState(int ColNo) - { - canBusSerial.DiscardInBuffer(); - var channel = Convert.ToInt32((DrawerNo * 10 + ColNo).ToString(), 16); - byte[] buffer = new byte[] { 0xaa, (byte)channel, 0x02, 0x00, 0x00, 0x00, 0x00, 0xee }; - canBusSerial.Write(buffer, 0, 8); - - return await GetBufferByPort(canBusSerial, 8); - - } - // 以抽屉为单位药盒指示灯开启使能开锁 - public async Task BoxLockLightOnByDrawer() - { - canBusSerial.DiscardInBuffer(); - byte[] buffer = new byte[] { 0xaa, (byte)(0xf0 + DrawerNo), 0x04, 0x00, 0x00, 0x00, 0x00, 0xee }; - canBusSerial.Write(buffer, 0, 8); - } - // 以抽屉为单位药盒指示灯开启失能开锁 - public async Task BoxLockLightOffByDrawer() - { - canBusSerial.DiscardInBuffer(); - byte[] buffer = new byte[] { 0xaa, (byte)(0xf0 + DrawerNo), 0x05, 0x00, 0x00, 0x00, 0x00, 0xee }; - canBusSerial.Write(buffer, 0, 8); - } - #endregion - - #region 药盒操作 - /// - /// 打开药盒 - /// - /// - /// - public async Task OpenBox(int ColNo) - { - var vlock = 321; - decimal decolNO = (decimal)ColNo; - var channel = Convert.ToInt32((DrawerNo * 10 + Math.Ceiling(decolNO % 3)).ToString(), 16); - byte[] buffer = new byte[] { 0xaa, (byte)channel, 5, (byte)vlock, 0x00, 0x00, 0x00, 0xee }; - canBusSerial.Write(buffer, 0, 8); - await Task.Delay(TimeSpan.FromMilliseconds(20)); - } - /// - /// 查询药盒状态 - /// - /// - /// - public async Task GetBoxLockState(int ColNo) - { - decimal deColNo = (decimal)ColNo; - var channel = Convert.ToInt32((DrawerNo * 10 + Math.Ceiling(deColNo / 3)).ToString(), 16); - byte[] buffer = new byte[] { 0xaa, (byte)channel, 2, 0, 0, 0, 0, 0xee }; - canBusSerial.Write(buffer, 0, 8); - return await GetBufferByPort(canBusSerial, 8); - } - - #endregion - - private string trim(string text) - { - //此处使用了转义字符如:\',\",\\,分别表示单引号,双引号,反斜杠 - char[] TrimChar = { ' ', '-', '\'', '\"', '\\', '(', ')', '(', ')', '①', '②' }; - return text.Trim(TrimChar); - } - - #region 2.4寸汉显屏 - // 基础数据写入方法 - public async void WriteChannelInfo(int type, string content, int drawerNo, int colNo) - { - try - { - canBusSerial.DiscardInBuffer(); - Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); - byte[] contentBuf = Encoding.GetEncoding("gb2312").GetBytes(trim(content)); - int channel = (drawerNo * 10 + colNo); - if (contentBuf.Length % 2 != 0) - { - Array.Resize(ref contentBuf, contentBuf.Length + 1); - } - byte[] buffer = new byte[] { 0xaa, (byte)channel, 1, (byte)type, 0, 0, 0, 0xee }; - canBusSerial.Write(buffer, 0, 8); - await Task.Delay(20); - buffer[4] = 1; - for (int i = 0; i < contentBuf.Length; i += 2) - { - buffer[5] = contentBuf[i]; - buffer[6] = contentBuf[i + 1]; - canBusSerial.Write(buffer, 0, 8); - await Task.Delay(20); - } - buffer[4] = 2; - buffer[5] = 0; - buffer[6] = 0; - canBusSerial.Write(buffer, 0, 8); - await Task.Delay(20); - } - catch (Exception ex) - { - _eventAggregator.GetEvent().Publish(new util.DeviceMsg() - { - EventType = util.EventType.OPENERROR, - WindowName = WindowName, - Message = $"2.4寸汉显屏异常{ex.Message}" - }); - logger.Info($"2.4寸汉显屏异常:ex:{ex.Message}"); - } - } - - // 清除显示内容 - public void ClearContent(int drawerNo, int colNo) - { - canBusSerial.DiscardInBuffer(); - int channel = (drawerNo * 10 + colNo); - byte[] buffer = new byte[] { 0xaa, (byte)channel, 4, 0, 0, 0, 0, 0xee }; - canBusSerial.Write(buffer, 0, 8); - } - // 刷新显示内容 - public void ShowContent(int drawerNo, int colNo) - { - try - { - - canBusSerial.DiscardInBuffer(); - int channel = (drawerNo * 10 + colNo); - byte[] buffer = new byte[] { 0xaa, (byte)channel, 2, 0, 0, 0, 0, 0xee }; - canBusSerial.Write(buffer, 0, 8); - } - catch (Exception ex) - { - _eventAggregator.GetEvent().Publish(new util.DeviceMsg() - { - EventType = util.EventType.OPENERROR, - WindowName = WindowName, - Message = $"刷新显示内容异常{ex.Message}" - }); - logger.Info($"刷新显示内容异常:ex:{ex.Message}"); - } - } - // 取药或者加药亮灯 - public void TakeQuantity(int drawerNo, int colNo, int quantity, int stock) - { - try - { - - canBusSerial.DiscardInBuffer(); - int channel = Convert.ToInt32((drawerNo * 10 + colNo).ToString(), 16); - byte[] buffer = new byte[] { 0xaa, (byte)channel, 6, 0, 0, 0, 0, 0xee }; - buffer[3] = (byte)(quantity >> 8); - buffer[4] = (byte)(quantity & 0xff); - buffer[5] = (byte)(stock >> 8); - buffer[6] = (byte)(stock & 0xff); - canBusSerial.Write(buffer, 0, 8); - } - catch (Exception ex) - { - _eventAggregator.GetEvent().Publish(new util.DeviceMsg() - { - EventType = util.EventType.OPENERROR, - WindowName = WindowName, - Message = $"操作发生异常{ex.Message}" - }); - logger.Info($"操作发生异常:ex:{ex.Message}"); - } - } - // 写入数量 - public void WriteQuantity(int drawerNo, int colNo, int quantity) - { - try - { - canBusSerial.DiscardInBuffer(); - int channel = (drawerNo * 10 + colNo); - byte[] buffer = new byte[] { 0xaa, (byte)channel, 0x21, 0, 0, 0, 0, 0xee }; - buffer[5] = (byte)(quantity >> 8); - buffer[6] = (byte)(quantity & 0xff); - canBusSerial.Write(buffer, 0, 8); - } - catch (Exception ex) - { - _eventAggregator.GetEvent().Publish(new util.DeviceMsg() - { - EventType = util.EventType.OPENERROR, - WindowName = WindowName, - Message = $"操作发生异常{ex.Message}" - }); - logger.Info($"操作发生异常:ex:{ex.Message}"); - } - } - - - - #endregion - - #region 标签显示屏 - //清屏 - public void ClearContentMethod(int drawerNo, int colNo) - { - decimal deColNo = colNo; - var channel = drawerNo * 10 + Math.Ceiling(deColNo / 3); - var colNo2 = 321; - byte[] buffer = new byte[] { 0xaa }; - canBusSerial.Write(buffer, 0, 8); - } - #endregion - - #region 回收箱操作 - // 打开回收箱 - public async Task OpenRecover() - { - try - { - canBusSerial.DiscardInBuffer(); - byte[] buffer = new byte[] { 0xAA, 0x9A, 0x04, 0x00, 0x00, 0x00, 0x00, 0xEE }; - canBusSerial.Write(buffer, 0, 8); - - return await GetBufferByPort(canBusSerial, 8); - } - catch (Exception ex) - { - _eventAggregator.GetEvent().Publish(new util.DeviceMsg() - { - EventType = util.EventType.OPENERROR, - WindowName = WindowName, - Message = $"操作发生异常{ex.Message}" - }); - logger.Info($"操作发生异常:ex:{ex.Message}"); - return null; - } - - } - // 回收箱状态查询 - public async Task CheckRecoverStatus() - { - try - { - - canBusSerial.DiscardInBuffer(); - byte[] buffer = new byte[] { 0xAA, 0x9A, 0x03, 0x00, 0x00, 0x00, 0x00, 0xEE }; - canBusSerial.Write(buffer, 0, 8); - - return await GetBufferByPort(canBusSerial, 8); - } - catch (Exception ex) - { - _eventAggregator.GetEvent().Publish(new util.DeviceMsg() - { - EventType = util.EventType.OPENERROR, - WindowName = WindowName, - Message = $"操作发生异常{ex.Message}" - }); - logger.Info($"操作发生异常:ex:{ex.Message}"); - return null; - - } - } - // 回收箱回收数量查询 - public async Task CheckRecoverQuantity() - { - try - { - canBusSerial.DiscardInBuffer(); - byte[] buffer = new byte[] { 0xAA, 0x9A, (byte)(ColNos[0] > 3 ? 2 : 1), 0x00, 0x00, 0x00, 0x00, 0xEE }; - //byte[] buffer = new byte[] { 0xAA, 0x9A, 01, (byte)(ColNos[0] > 3 ? 2 : 1), 0x00, 0x00, 0x00, 0xEE }; - canBusSerial.Write(buffer, 0, 8); - - return await GetBufferByPort(canBusSerial, 8); - - } - catch (Exception ex) - { - _eventAggregator.GetEvent().Publish(new util.DeviceMsg() - { - EventType = util.EventType.OPENERROR, - WindowName = WindowName, - Message = $"操作发生异常{ex.Message}" - }); - logger.Info($"操作发生异常:ex:{ex.Message}"); - return null; - } - } - #endregion - - #region 称重操作 - // 以板子为单位获取抽屉内所有库位的药品数量 - public async Task CheckQuantityByAddr() - { - - canBusSerial.DiscardInBuffer(); - var channel = Convert.ToInt32((DrawerNo * 10 + 1).ToString(), 16); - byte[] buffer = new byte[] { 0xaa, (byte)(channel), 0x28, 0x00, 0x00, 0x00, 0x00, 0xee }; - logger.Info($"称重发送库位数量查询1【{string.Join(",", buffer)}】"); - canBusSerial.Write(buffer, 0, 8); - byte[] result1 = await GetBufferByPort(canBusSerial, 8); - - - var channel2 = Convert.ToInt32((DrawerNo * 10 + 2).ToString(), 16); - byte[] buffer2 = new byte[] { 0xaa, (byte)(channel2), 0x28, 0x00, 0x00, 0x00, 0x00, 0xee }; - logger.Info($"称重发送库位数量查询2【{string.Join(",", buffer2)}】"); - canBusSerial.Write(buffer2, 0, 8); - byte[] result2 = await GetBufferByPort(canBusSerial, 8); - - byte[] res = new byte[6]; - Array.Copy(result1, 3, res, 0, 3); - Array.Copy(result2, 3, res, 3, 3); - - return res; - - } - - // 以板子为单位获取抽屉内所有库位的药品数量 - public async Task CheckQuantityByAddr2() - { - - - int[] res = new int[6]; - for (int i = 0; i < ColNos.Length; i++) - { - canBusSerial.DiscardInBuffer(); - var index = ColNos[i] > 3 ? 2 : 1; - var lock1 = ColNos[i] % 3 == 0 ? 3 : ColNos[i] % 3; - var channel = Convert.ToInt32((DrawerNo * 10 + index).ToString(), 16); - byte[] buffer = new byte[] { 0xaa, (byte)(channel), 0x27, (byte)lock1, 0x00, 0x00, 0x00, 0xee }; - - logger.Info($"称重发送库位数量查询1【{string.Join(",", buffer)}】"); - canBusSerial.Write(buffer, 0, 8); - byte[] result = await GetBufferByPort(canBusSerial, 8); - logger.Info($"称重发送库位数量查询1返回结果【{string.Join(",", result)}】"); - byte[] hl = result.Skip(3).Take(2).ToArray(); - int quantity = BitConverter.ToInt16(hl.Reverse().ToArray(), 0); - res[ColNos[i] - 1] = quantity; - } - - return res; - - } - - // 指定药盒指示灯开启使能开锁 - public async Task BoxLockLightOn2() - { - for (int i = 0; i < ColNos.Length; i++) - { - var index = ColNos[i] > 3 ? 2 : 1; - var lock1 = ColNos[i] % 3 == 0 ? 3 : ColNos[i] % 3; - var channel = Convert.ToInt32((DrawerNo * 10 + index).ToString(), 16); - byte[] buffer = new byte[] { 0xaa, (byte)(channel), 0x03, (byte)lock1, 0x00, 0x00, 0x00, 0xee }; - logger.Info($"称重发送药盒使能【{string.Join(",", buffer)}】"); - canBusSerial.Write(buffer, 0, 8); - await Task.Delay(TimeSpan.FromMilliseconds(500)); - } - } - // 指定药盒指示灯开启失能开锁 - public async Task BoxLockLightOff2() - { - canBusSerial.DiscardInBuffer(); - for (int i = 0; i < ColNos.Length; i++) - { - var index = ColNos[i] > 3 ? 2 : 1; - var lock1 = ColNos[i] % 3 == 0 ? 3 : ColNos[i] % 3; - var channel = Convert.ToInt32((DrawerNo * 10 + index).ToString(), 16); - byte[] buffer = new byte[] { 0xaa, (byte)(channel), 0x04, (byte)lock1, 0x00, 0x00, 0x00, 0xee }; - logger.Info($"称重发送药盒失能【{string.Join(",", buffer)}】"); - canBusSerial.Write(buffer, 0, 8); - await Task.Delay(TimeSpan.FromMilliseconds(50)); - } - } - - public async void ClearCount(int DrawerNo, int ColNo) - { - try - { - canBusSerial.DiscardInBuffer(); - var index = ColNo > 3 ? 2 : 1; - var lock1 = ColNo % 3 == 0 ? 3 : ColNo % 3; - var channel = Convert.ToInt32((DrawerNo * 10 + index).ToString(), 16); - byte[] buffer = new byte[] { 0xaa, (byte)(channel), 0x25, (byte)lock1, 0x00, 0x00, 0x00, 0xee }; - - logger.Info($"称重发送清空计数【{string.Join(",", buffer)}】"); - canBusSerial.Write(buffer, 0, 8); - } - catch (Exception ex) - { - _eventAggregator.GetEvent().Publish(new util.DeviceMsg() - { - EventType = util.EventType.OPENERROR, - WindowName = WindowName, - Message = $"操作发生异常{ex.Message}" - }); - logger.Info($"操作发生异常:ex:{ex.Message},方法名:ClearCount;参数:{DrawerNo},{ColNo}"); - } - - } - - public async void SetNumCount(int DrawerNo, int ColNo, int Quantity) - { - try - { - canBusSerial.DiscardInBuffer(); - var index = ColNo > 3 ? 2 : 1; - var lock1 = ColNo % 3 == 0 ? 3 : ColNo % 3; - var channel = Convert.ToInt32((DrawerNo * 10 + index).ToString(), 16); - byte[] buffer = new byte[] { 0xaa, (byte)(channel), 0x26, (byte)lock1, 0x00, 0x00, 0x00, 0xee }; - - - buffer[4] = (byte)(Quantity >> 8); - buffer[5] = (byte)(Quantity & 0xff); - - - logger.Info($"称重发送数量【{string.Join(",", buffer)}】"); - canBusSerial.Write(buffer, 0, 8); - } - catch (Exception ex) - { - _eventAggregator.GetEvent().Publish(new util.DeviceMsg() - { - EventType = util.EventType.OPENERROR, - WindowName = WindowName, - Message = $"操作发生异常{ex.Message}" - }); - logger.Info($"操作发生异常:ex:{ex.Message},方法名:SetNumCount;参数:{DrawerNo},{ColNo},{Quantity}"); - } - - } - #endregion - /// - /// 冰箱使能 - /// - /// - public async Task FridegOpen(int iIndex) - { - try - { - fridgeSerial.DiscardInBuffer(); - byte bAddress; - if (iIndex == 1) - { - bAddress = 0x01; - } - else - { - bAddress = 0x02; - } - byte[] buffer = new byte[] { bAddress, 0x06, 0x10, 0xD4, 0x00, 0x01, 0x0C, 0xF2 }; - //byte[] buffer = new byte[] { 0x01, 0x06, 0x10, 0xD4, 0x00, 0x01 }; - ////获取数组CRC校验码 - //byte[] byteDate = CRC16MODBUS.CrcModBus(buffer); - ////Array.Reverse(byteDate); - //int dataLength = buffer.Length; - //Array.Resize(ref buffer, dataLength + byteDate.Length); - //for (int i = 0; i < byteDate.Length; i++) - //{ - // buffer[dataLength + i] = byteDate[i]; - //} - logger.Info($"冰箱使能【{Convert.ToHexString(buffer)}】"); - fridgeSerial.Write(buffer, 0, 8); - await Task.Delay(80); - } - catch (Exception ex) - { - logger.Info($"冰箱使能发生异常:ex:{ex.Message}"); - } - FridgeOperate = false; - } - /// - /// 冰箱失能 - /// - /// - public async Task FridgeOff(int iIndex) - { - try - { - fridgeSerial.DiscardInBuffer(); - byte bAddress; - if (iIndex == 1) - { - bAddress = 0x01; - } - else - { - bAddress = 0x02; - } - byte[] buffer = new byte[] { bAddress, 0x06, 0x10, 0xD4, 0x00, 0x00, 0xCD, 0x32 }; - //byte[] buffer = new byte[] { 0x01, 0x06, 0x10, 0xD4, 0x00, 0x01 }; - ////获取数组CRC校验码 - //byte[] byteDate = CRC16MODBUS.CrcModBus(buffer); - ////Array.Reverse(byteDate); - //int dataLength = buffer.Length; - //Array.Resize(ref buffer, dataLength + byteDate.Length); - //for (int i = 0; i < byteDate.Length; i++) - //{ - // buffer[dataLength + i] = byteDate[i]; - //} - logger.Info($"冰箱失能【{Convert.ToHexString(buffer)}】"); - fridgeSerial.Write(buffer, 0, 8); - await Task.Delay(80); - } - catch (Exception ex) - { - logger.Info($"冰箱失能发生异常:ex:{ex.Message}"); - } - FridgeOperate = false; - } - /// - /// 冰箱报警使能 - /// - /// - public async Task FridgeAlarmOn(int iIndex) - { - try - { - fridgeSerial.DiscardInBuffer(); - byte bAddress; - if (iIndex == 1) - { - bAddress = 0x01; - } - else - { - bAddress = 0x02; - } - byte[] buffer = new byte[] { bAddress, 0x06, 0x10, 0xD5, 0x00, 0x01, 0x5D, 0x32 }; - //byte[] buffer = new byte[] { 0x01, 0x06, 0x10, 0xD5, 0x00, 0x01 }; - ////获取数组CRC校验码 - //byte[] byteDate = CRC16MODBUS.CrcModBus(buffer); - ////Array.Reverse(byteDate); - //int dataLength = buffer.Length; - //Array.Resize(ref buffer, dataLength + byteDate.Length); - //for (int i = 0; i < byteDate.Length; i++) - //{ - // buffer[dataLength + i] = byteDate[i]; - //} - logger.Info($"冰箱报警使能【{Convert.ToHexString(buffer)}】"); - fridgeSerial.Write(buffer, 0, 8); - await Task.Delay(80); - } - catch (Exception ex) - { - logger.Info($"冰箱报警使能发生异常:ex:{ex.Message}"); - } - FridgeOperate = false; - - } - - /// - /// 冰箱报警失能 - /// - /// - public async Task FridgeAlarmOff(int iIndex) - { - try - { - fridgeSerial.DiscardInBuffer(); - byte bAddress; - if (iIndex == 1) - { - bAddress = 0x01; - } - else - { - bAddress = 0x02; - } - byte[] buffer = new byte[] { bAddress, 0x06, 0x10, 0xD5, 0x00, 0x00, 0x9C, 0xF2 }; - //byte[] buffer = new byte[] { 0x01, 0x06, 0x10, 0xD5, 0x00, 0x00 }; - ////获取数组CRC校验码 - //byte[] byteDate = CRC16MODBUS.CrcModBus(buffer); - ////Array.Reverse(byteDate); - //int dataLength = buffer.Length; - //Array.Resize(ref buffer, dataLength + byteDate.Length); - //for (int i = 0; i < byteDate.Length; i++) - //{ - // buffer[dataLength + i] = byteDate[i]; - //} - logger.Info($"冰箱报警失能【{Convert.ToHexString(buffer)}】"); - fridgeSerial.Write(buffer, 0, 8); - await Task.Delay(80); - } - catch (Exception ex) - { - logger.Info($"冰箱报警失能发生异常:ex:{ex.Message}"); - } - FridgeOperate = false; - } - /// - /// 冰箱温度设定最小 - /// - /// - public async Task FridgeMinSetting(float min, int iIndex) - { - try - { - - int iMix = Convert.ToInt32(min * 10); - fridgeSerial.DiscardInBuffer(); - //byte[] bufferMin = new byte[] { 0x01, 0x06, 0x10, 0xC9, 0x00, 0x15, 0x9C, 0xFB }; - byte bAddress; - if (iIndex == 1) - { - bAddress = 0x01; - } - else - { - bAddress = 0x02; - } - byte[] bufferMin = new byte[] { bAddress, 0x06, 0x10, 0xC9, 0x00, (byte)(iMix & 0xff) }; - //获取数组CRC校验码 - byte[] byteDate = CRC16MODBUS.CrcModBus(bufferMin); - //Array.Reverse(byteDate); - int dataLength = bufferMin.Length; - Array.Resize(ref bufferMin, dataLength + byteDate.Length); - for (int i = 0; i < byteDate.Length; i++) - { - bufferMin[dataLength + i] = byteDate[i]; - } - logger.Info($"冰箱温度设定Min:【{Convert.ToHexString(bufferMin)}】"); - fridgeSerial.Write(bufferMin, 0, 8); - } - catch (Exception ex) - { - logger.Info($"获取冰箱温度发生异常:ex:{ex.Message}"); - } - } - /// - /// 冰箱温度设定最大 - /// - /// - public async Task FridgeMaxSetting(float max, int iIndex) - { - try - { - int iMax = Convert.ToInt32(max * 10); - fridgeSerial.DiscardInBuffer(); - //byte[] bufferMin = new byte[] { 0x01, 0x06, 0x10, 0xC9, 0x00, 0x15, 0x9C, 0xFB }; - byte bAddress; - if (iIndex == 1) - { - bAddress = 0x01; - } - else - { - bAddress = 0x02; - } - byte[] bufferMax = new byte[] { bAddress, 0x06, 0x10, 0xC8, 0x00, (byte)(iMax & 0xff) }; - //获取数组CRC校验码 - byte[] byteDate = CRC16MODBUS.CrcModBus(bufferMax); - //Array.Reverse(byteDate); - int dataLength = bufferMax.Length; - Array.Resize(ref bufferMax, dataLength + byteDate.Length); - for (int i = 0; i < byteDate.Length; i++) - { - bufferMax[dataLength + i] = byteDate[i]; - } - logger.Info($"冰箱温度设定Max:【{Convert.ToHexString(bufferMax)}】"); - fridgeSerial.Write(bufferMax, 0, 8); - } - catch (Exception ex) - { - logger.Info($"获取冰箱温度发生异常:ex:{ex.Message}"); - } - } - /// - /// 获取冰箱温度 - /// - /// - public async Task GetFridgeTemperature(int iIndex) - { - float temperature = 0.0f; - try - { - fridgeSerial.DiscardInBuffer(); - byte bAddress; - if (iIndex == 1) - { - bAddress = 0x01; - } - else - { - bAddress = 0x02; - } - byte[] buffer = new byte[] { bAddress, 0x03, 0x10, 0x02, 0x00, 0x01, 0x21, 0x0A }; - //byte[] buffer = new byte[] { 0x01, 0x03, 0x10, 0x02, 0x00, 0x01 }; - - ////获取数组CRC校验码 - //byte[] byteDate = CRC16MODBUS.CrcModBus(buffer); - ////Array.Reverse(byteDate); - //int dataLength = buffer.Length; - //Array.Resize(ref buffer, dataLength + byteDate.Length); - //for (int i = 0; i < byteDate.Length; i++) - //{ - // buffer[dataLength + i] = byteDate[i]; - //} - - logger.Info($"获取冰箱温度【{Convert.ToHexString(buffer)}】"); - fridgeSerial.Write(buffer, 0, 8); - - byte[] retByte = await GetBufferByPort(fridgeSerial, 7); - - logger.Info($"获取冰箱温度返回【{Convert.ToHexString(retByte)}】"); - - if (retByte != null && retByte.Length >= 7) - { - var hight = retByte[3]; - var low = retByte[4]; - int iHight = Convert.ToInt32(hight << 8); - int iLow = Convert.ToInt32(retByte[4]); - temperature = Convert.ToSingle(iHight + iLow) / 10; - } - } - catch (Exception ex) - { - - logger.Info($"获取冰箱温度发生异常:ex:{ex.Message}"); - } - return temperature; - } - /// - /// 设置冰箱温度 - /// - /// - public async Task SetFridgeTemperature(float temperature, int iIndex) - { - int tpt = (int)temperature * 10; - byte Temperature = (byte)(tpt & 0xff); - try - { - //if (!FridgeOperate) - { - fridgeSerial.DiscardInBuffer(); - byte bAddress; - if (iIndex == 1) - { - bAddress = 0x01; - } - else - { - bAddress = 0x02; - } - //byte[] buffer = new byte[] { 0x01, 0x03, 0x10, 0x02, 0x00, 0x01, 0x21,0x0A }; - byte[] buffer = new byte[] { bAddress, 0x06, 0x10, 0x02, 0x00, (byte)Temperature }; - - //获取数组CRC校验码 - byte[] byteDate = CRC16MODBUS.CrcModBus(buffer); - //Array.Reverse(byteDate); - int dataLength = buffer.Length; - Array.Resize(ref buffer, dataLength + byteDate.Length); - for (int i = 0; i < byteDate.Length; i++) - { - buffer[dataLength + i] = byteDate[i]; - } - logger.Info($"设置冰箱温度【{Convert.ToHexString(buffer)}】"); - fridgeSerial.Write(buffer, 0, 8); - - await GetBufferByPort(fridgeSerial, 8); - } - } - catch (Exception ex) - { - - logger.Info($"获取冰箱温度发生异常:ex:{ex.Message}"); - } - return temperature; - } - /// - /// 冰箱延迟报警 - /// - /// - public async Task FridgeDelayWarm(int iIndex) - { - try - { - //if (!FridgeOperate) - { - fridgeSerial.DiscardInBuffer(); - byte bAddress; - if (iIndex == 1) - { - bAddress = 0x01; - } - else - { - bAddress = 0x02; - } - byte[] buffer = new byte[] { bAddress, 0x06, 0x10, 0xCD, 0x00, 0x01, 0xDD, 0x35 }; - //byte[] buffer = new byte[] { 0x01, 0x06, 0x10, 0xCD, 0x00, 0x01 }; - ////获取数组CRC校验码 - //byte[] byteDate = CRC16MODBUS.CrcModBus(buffer); - ////Array.Reverse(byteDate); - //int dataLength = buffer.Length; - //Array.Resize(ref buffer, dataLength + byteDate.Length); - //for (int i = 0; i < byteDate.Length; i++) - //{ - // buffer[dataLength + i] = byteDate[i]; - //} - logger.Info($"冰箱延迟报警【{Convert.ToHexString(buffer)}】"); - fridgeSerial.Write(buffer, 0, 8); - } - } - catch (Exception ex) - { - - logger.Info($"获取冰箱温度发生异常:ex:{ex.Message}"); - } - //FridgeOperate = false; - } - #endregion + //#region 抽屉串口操作 + //// 打开抽屉 + //public async Task OpenDrawer() + //{ + // drawerSerial.DiscardInBuffer(); + // byte[] buffer = new byte[] { 0xaa, 0x41, (byte)DrawerNo, 0xee }; + // if (_drawerProtocol == 485) + // { + // if (DrawerNo > 8) + // { + // buffer = new byte[] { 0xaa, 0x21, (byte)(DrawerNo - 8), 0xee }; + // } + // else + // { + // buffer = new byte[] { 0xaa, 0x11, (byte)DrawerNo, 0xee }; + // } + + // } + // logger.Info($"打开抽屉,串口数据:{Convert.ToHexString(buffer)}"); + // drawerSerial.Write(buffer, 0, 4); + + // return await GetBufferByPort(drawerSerial, 11); + //} + + //private bool DrawerState(int[] r) + //{ + // int index = DrawerNo > 8 ? DrawerNo - 7 : DrawerNo + 1; + // return r[index] == 0; + //} + + //// 查询抽屉状态 + //public async Task CheckDrawerStatus() + //{ + // drawerSerial.DiscardInBuffer(); + // byte[] buffer = new byte[] { 0xaa, 0x42, 0xee }; + // if (_drawerProtocol == 485) + // { + // if (DrawerNo > 8) + // { + // buffer = new byte[] { 0xaa, 0x22, 0xee }; + // } + // else + // { + // buffer = new byte[] { 0xaa, 0x12, 0xee }; + // } + + // } + + // logger.Info($"查询抽屉状态,串口数据:{Convert.ToHexString(buffer)}"); + // drawerSerial.Write(buffer, 0, 3); + + // return await GetBufferByPort(drawerSerial, 11); + //} + //// 查询药箱状态 + //public async Task CheckBoxStatus() + //{ + // drawerSerial.DiscardInBuffer(); + // byte[] buffer = new byte[] { 0xaa, 0x42, 0xee }; + // if (_drawerProtocol == 485) + // { + // if (DrawerNo > 8) + // { + // buffer = new byte[] { 0xaa, 0x22, 0xee }; + // } + // else + // { + // buffer = new byte[] { 0xaa, 0x12, 0xee }; + // } + + // } + + // logger.Info($"查询抽屉状态,串口数据:{Convert.ToHexString(buffer)}"); + // drawerSerial.Write(buffer, 0, 3); + + // return await GetBufferByPort(drawerSerial, 11); + //} + //#endregion + + //#region can总线串口操作 + //#region 耗材板操作 + //// 后门状态 + //public async Task BackDoorState() + //{ + + // canBusSerial.DiscardInBuffer(); + // byte[] buffer = new byte[] { 0xaa, (byte)(_doorAddr), 0x02, 0x00, 0x00, 0x00, 0x00, 0xee }; + // canBusSerial.Write(buffer, 0, 8); + + // return await GetBufferByPort(canBusSerial, 8); + + //} + //// 打开电控门储物箱(有灯使能) + //public async Task OpenStorage() + //{ + // canBusSerial.DiscardInBuffer(); + // byte[] buffer = new byte[] { 0xaa, (byte)(_doorAddr), 0x01, (byte)_storageBoxAddr, 0x00, 0x00, 0x00, 0xee }; + // canBusSerial.Write(buffer, 0, 8); + + + // return await GetBufferByPort(canBusSerial, 8); + //} + //// 关闭电控门储物箱(有灯失能) + //public void CloseStorage() + //{ + // byte[] buffer = new byte[] { 0xaa, (byte)(_doorAddr), 0x04, 0x00, 0x00, 0x00, 0x00, 0xee }; + // canBusSerial.Write(buffer, 0, 8); + //} + //// 打开普通储物箱(无灯) + //public void OpenStorageBox() + //{ + // byte[] buffer = new byte[] { 0xaa, (byte)(_storageBoxAddr), 0x03, 0x00, 0x00, 0x00, 0x00, 0xee }; + // canBusSerial.Write(buffer, 0, 8); + //} + //// 关闭普通储物箱(无灯) + //public void CloseStorageBox() + //{ + // byte[] buffer = new byte[] { 0xaa, (byte)(_storageBoxAddr), 0x04, 0x00, 0x00, 0x00, 0x00, 0xee }; + // canBusSerial.Write(buffer, 0, 8); + //} + + //private int[] CheckStorageStatus(int[] data) + //{ + // int a = data[0]; + // int b = data[1]; + // int[] intA = Decimal2Chunks(a); + // int[] intB = Decimal2Chunks(b); + // int[] r = new int[intA.Length + intB.Length]; + // Array.Copy(intA, 0, r, 0, intA.Length); + // Array.Copy(intB, 0, r, intA.Length, intB.Length); + // return r; + //} + //private int[] Decimal2Chunks(int d) + //{ + // string s = Convert.ToString(d, 2); + // int[] chars = new int[8]; + // char[] schar = s.ToCharArray(); + // Array.Reverse(schar); + // int[] iArray = Array.ConvertAll(schar, c => (int)Char.GetNumericValue(c)); + // int[] addArray = new int[8 - iArray.Length]; + // if (iArray.Length < 8) + // { + // for (int i = 0; i < 8 - iArray.Length; i++) + // { + // addArray[i] = 0; + // } + // chars = iArray.Concat(addArray).ToArray(); + // } + // else + // { + // chars = iArray[0..iArray.Length]; + // } + // return chars; + // //List t = s.Split().Select(it => Convert.ToInt32(it)).Reverse().ToList(); + // //while (t.Count < 8) + // //{ + // // t.Add(0); + // //} + // //return t.ToArray(); + //} + + //#endregion + + //#region 单支操作 + //// 以抽屉为单位获取抽屉内所有库位的药品数量 + //public async Task CheckQuantityByDrawer() + //{ + // canBusSerial.DiscardInBuffer(); + + // byte[] buffer = new byte[] { 0xaa, (byte)(0xf0 + DrawerNo), 0x01, 0x00, 0x00, 0x00, 0x00, 0xee }; + + // logger.Info($"单支板发送库位数量查询【{string.Join(",", buffer)}】"); + // canBusSerial.Write(buffer, 0, 8); + + // return await GetBufferByPort(canBusSerial, 13); + //} + //// 获取单个单支板药品数量 + //public async Task CheckQuantityByCol(int DrawerNo, int colNo) + //{ + // canBusSerial.DiscardInBuffer(); + + // var channel = Convert.ToInt32((DrawerNo * 10 + colNo).ToString(), 16); + // byte[] buffer = new byte[] { 0xaa, (byte)channel, 0x08, 0x00, 0x00, 0x00, 0x00, 0xee }; + // canBusSerial.Write(buffer, 0, 8); + + // return await GetBufferByPort(canBusSerial, 8); + + //} + //// 以抽屉为单位有药位置亮灯 + //public void HasLightOnByDrawer() + //{ + // byte[] buffer = new byte[] { 0xaa, (byte)(0xf0 + DrawerNo), 0x02, 0x00, 0x00, 0x00, 0x00, 0xee }; + // canBusSerial.Write(buffer, 0, 8); + //} + //// 以抽屉为单位无药位置亮灯 + //public void NoLightOnByDrawer() + //{ + // byte[] buffer = new byte[] { 0xaa, (byte)(0xf0 + DrawerNo), 0x03, 0x00, 0x00, 0x00, 0x00, 0xee }; + // canBusSerial.Write(buffer, 0, 8); + //} + //// 以抽屉为单位灭灯 + //public void LightOffByDrawer() + //{ + // byte[] buffer = new byte[] { 0xaa, (byte)(0xf0 + DrawerNo), 0x06, 0x00, 0x00, 0x00, 0x00, 0xee }; + // canBusSerial.Write(buffer, 0, 8); + //} + //// 以单支板为单位有药位置亮灯 + //public async Task HasLightOnByCol() + //{ + + // for (int i = 0; i < ColNos.Length; i++) + // { + + // var channel = Convert.ToInt32((DrawerNo * 10 + ColNos[i]).ToString(), 16); + // byte[] buffer = new byte[] { 0xaa, (byte)channel, 0x0a, 0x00, 0x00, 0x00, 0x00, 0xee }; + // canBusSerial.Write(buffer, 0, 8); + // await Task.Delay(TimeSpan.FromMilliseconds(20)); + // } + + //} + //// 以单支板为单位无药位置亮灯 + //public async Task NoLightOnByCol() + //{ + // for (int i = 0; i < ColNos.Length; i++) + // { + // var channel = Convert.ToInt32((DrawerNo * 10 + ColNos[i]).ToString(), 16); + // byte[] buffer = new byte[] { 0xaa, (byte)channel, 0x0b, 0x00, 0x00, 0x00, 0x00, 0xee }; + // canBusSerial.Write(buffer, 0, 8); + // await Task.Delay(TimeSpan.FromMilliseconds(20)); + // } + //} + //// 广播灭灯 + //public void AllLightOff() + //{ + // byte[] buffer = new byte[] { 0xaa, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xee }; + // canBusSerial.Write(buffer, 0, 8); + //} + //#endregion + + //#region 药盒操作 + //// 指定药盒指示灯开启使能开锁 + //public async Task BoxLockLightOn() + //{ + // for (int i = 0; i < ColNos.Length; i++) + // { + + // var channel = Convert.ToInt32((DrawerNo * 10 + ColNos[i]).ToString(), 16); + // byte[] buffer = new byte[] { 0xaa, (byte)channel, 0x03, 0x00, 0x00, 0x00, 0x00, 0xee }; + // canBusSerial.Write(buffer, 0, 8); + // await Task.Delay(TimeSpan.FromMilliseconds(20)); + // } + //} + //// 指定药盒指示灯开启失能开锁 + //public async Task BoxLockLightOff() + //{ + // for (int i = 0; i < ColNos.Length; i++) + // { + // var channel = Convert.ToInt32((DrawerNo * 10 + ColNos[i]).ToString(), 16); + // byte[] buffer = new byte[] { 0xaa, (byte)channel, 0x04, 0x00, 0x00, 0x00, 0x00, 0xee }; + // canBusSerial.Write(buffer, 0, 8); + // await Task.Delay(TimeSpan.FromMilliseconds(20)); + // } + //} + //// 指定药盒状态查询 + //public async Task BoxLockState(int ColNo) + //{ + // canBusSerial.DiscardInBuffer(); + // var channel = Convert.ToInt32((DrawerNo * 10 + ColNo).ToString(), 16); + // byte[] buffer = new byte[] { 0xaa, (byte)channel, 0x02, 0x00, 0x00, 0x00, 0x00, 0xee }; + // canBusSerial.Write(buffer, 0, 8); + + // return await GetBufferByPort(canBusSerial, 8); + + //} + //// 以抽屉为单位药盒指示灯开启使能开锁 + //public async Task BoxLockLightOnByDrawer() + //{ + // canBusSerial.DiscardInBuffer(); + // byte[] buffer = new byte[] { 0xaa, (byte)(0xf0 + DrawerNo), 0x04, 0x00, 0x00, 0x00, 0x00, 0xee }; + // canBusSerial.Write(buffer, 0, 8); + //} + //// 以抽屉为单位药盒指示灯开启失能开锁 + //public async Task BoxLockLightOffByDrawer() + //{ + // canBusSerial.DiscardInBuffer(); + // byte[] buffer = new byte[] { 0xaa, (byte)(0xf0 + DrawerNo), 0x05, 0x00, 0x00, 0x00, 0x00, 0xee }; + // canBusSerial.Write(buffer, 0, 8); + //} + //#endregion + + //#region 药盒操作 + ///// + ///// 打开药盒 + ///// + ///// + ///// + //public async Task OpenBox(int ColNo) + //{ + // var vlock = 321; + // decimal decolNO = (decimal)ColNo; + // var channel = Convert.ToInt32((DrawerNo * 10 + Math.Ceiling(decolNO % 3)).ToString(), 16); + // byte[] buffer = new byte[] { 0xaa, (byte)channel, 5, (byte)vlock, 0x00, 0x00, 0x00, 0xee }; + // canBusSerial.Write(buffer, 0, 8); + // await Task.Delay(TimeSpan.FromMilliseconds(20)); + //} + ///// + ///// 查询药盒状态 + ///// + ///// + ///// + //public async Task GetBoxLockState(int ColNo) + //{ + // decimal deColNo = (decimal)ColNo; + // var channel = Convert.ToInt32((DrawerNo * 10 + Math.Ceiling(deColNo / 3)).ToString(), 16); + // byte[] buffer = new byte[] { 0xaa, (byte)channel, 2, 0, 0, 0, 0, 0xee }; + // canBusSerial.Write(buffer, 0, 8); + // return await GetBufferByPort(canBusSerial, 8); + //} + + //#endregion + + //private string trim(string text) + //{ + // //此处使用了转义字符如:\',\",\\,分别表示单引号,双引号,反斜杠 + // char[] TrimChar = { ' ', '-', '\'', '\"', '\\', '(', ')', '(', ')', '①', '②' }; + // return text.Trim(TrimChar); + //} + + //#region 2.4寸汉显屏 + //// 基础数据写入方法 + //public async void WriteChannelInfo(int type, string content, int drawerNo, int colNo) + //{ + // try + // { + // canBusSerial.DiscardInBuffer(); + // Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); + // byte[] contentBuf = Encoding.GetEncoding("gb2312").GetBytes(trim(content)); + // int channel = (drawerNo * 10 + colNo); + // if (contentBuf.Length % 2 != 0) + // { + // Array.Resize(ref contentBuf, contentBuf.Length + 1); + // } + // byte[] buffer = new byte[] { 0xaa, (byte)channel, 1, (byte)type, 0, 0, 0, 0xee }; + // canBusSerial.Write(buffer, 0, 8); + // await Task.Delay(20); + // buffer[4] = 1; + // for (int i = 0; i < contentBuf.Length; i += 2) + // { + // buffer[5] = contentBuf[i]; + // buffer[6] = contentBuf[i + 1]; + // canBusSerial.Write(buffer, 0, 8); + // await Task.Delay(20); + // } + // buffer[4] = 2; + // buffer[5] = 0; + // buffer[6] = 0; + // canBusSerial.Write(buffer, 0, 8); + // await Task.Delay(20); + // } + // catch (Exception ex) + // { + // _eventAggregator.GetEvent().Publish(new util.DeviceMsg() + // { + // EventType = util.EventType.OPENERROR, + // WindowName = WindowName, + // Message = $"2.4寸汉显屏异常{ex.Message}" + // }); + // logger.Info($"2.4寸汉显屏异常:ex:{ex.Message}"); + // } + //} + + //// 清除显示内容 + //public void ClearContent(int drawerNo, int colNo) + //{ + // canBusSerial.DiscardInBuffer(); + // int channel = (drawerNo * 10 + colNo); + // byte[] buffer = new byte[] { 0xaa, (byte)channel, 4, 0, 0, 0, 0, 0xee }; + // canBusSerial.Write(buffer, 0, 8); + //} + //// 刷新显示内容 + //public void ShowContent(int drawerNo, int colNo) + //{ + // try + // { + + // canBusSerial.DiscardInBuffer(); + // int channel = (drawerNo * 10 + colNo); + // byte[] buffer = new byte[] { 0xaa, (byte)channel, 2, 0, 0, 0, 0, 0xee }; + // canBusSerial.Write(buffer, 0, 8); + // } + // catch (Exception ex) + // { + // _eventAggregator.GetEvent().Publish(new util.DeviceMsg() + // { + // EventType = util.EventType.OPENERROR, + // WindowName = WindowName, + // Message = $"刷新显示内容异常{ex.Message}" + // }); + // logger.Info($"刷新显示内容异常:ex:{ex.Message}"); + // } + //} + //// 取药或者加药亮灯 + //public void TakeQuantity(int drawerNo, int colNo, int quantity, int stock) + //{ + // try + // { + + // canBusSerial.DiscardInBuffer(); + // int channel = Convert.ToInt32((drawerNo * 10 + colNo).ToString(), 16); + // byte[] buffer = new byte[] { 0xaa, (byte)channel, 6, 0, 0, 0, 0, 0xee }; + // buffer[3] = (byte)(quantity >> 8); + // buffer[4] = (byte)(quantity & 0xff); + // buffer[5] = (byte)(stock >> 8); + // buffer[6] = (byte)(stock & 0xff); + // canBusSerial.Write(buffer, 0, 8); + // } + // catch (Exception ex) + // { + // _eventAggregator.GetEvent().Publish(new util.DeviceMsg() + // { + // EventType = util.EventType.OPENERROR, + // WindowName = WindowName, + // Message = $"操作发生异常{ex.Message}" + // }); + // logger.Info($"操作发生异常:ex:{ex.Message}"); + // } + //} + //// 写入数量 + //public void WriteQuantity(int drawerNo, int colNo, int quantity) + //{ + // try + // { + // canBusSerial.DiscardInBuffer(); + // int channel = (drawerNo * 10 + colNo); + // byte[] buffer = new byte[] { 0xaa, (byte)channel, 0x21, 0, 0, 0, 0, 0xee }; + // buffer[5] = (byte)(quantity >> 8); + // buffer[6] = (byte)(quantity & 0xff); + // canBusSerial.Write(buffer, 0, 8); + // } + // catch (Exception ex) + // { + // _eventAggregator.GetEvent().Publish(new util.DeviceMsg() + // { + // EventType = util.EventType.OPENERROR, + // WindowName = WindowName, + // Message = $"操作发生异常{ex.Message}" + // }); + // logger.Info($"操作发生异常:ex:{ex.Message}"); + // } + //} + + + + //#endregion + + //#region 标签显示屏 + ////清屏 + //public void ClearContentMethod(int drawerNo, int colNo) + //{ + // decimal deColNo = colNo; + // var channel = drawerNo * 10 + Math.Ceiling(deColNo / 3); + // var colNo2 = 321; + // byte[] buffer = new byte[] { 0xaa }; + // canBusSerial.Write(buffer, 0, 8); + //} + //#endregion + + //#region 回收箱操作 + //// 打开回收箱 + //public async Task OpenRecover() + //{ + // try + // { + // canBusSerial.DiscardInBuffer(); + // byte[] buffer = new byte[] { 0xAA, 0x9A, 0x04, 0x00, 0x00, 0x00, 0x00, 0xEE }; + // canBusSerial.Write(buffer, 0, 8); + + // return await GetBufferByPort(canBusSerial, 8); + // } + // catch (Exception ex) + // { + // _eventAggregator.GetEvent().Publish(new util.DeviceMsg() + // { + // EventType = util.EventType.OPENERROR, + // WindowName = WindowName, + // Message = $"操作发生异常{ex.Message}" + // }); + // logger.Info($"操作发生异常:ex:{ex.Message}"); + // return null; + // } + + //} + //// 回收箱状态查询 + //public async Task CheckRecoverStatus() + //{ + // try + // { + + // canBusSerial.DiscardInBuffer(); + // byte[] buffer = new byte[] { 0xAA, 0x9A, 0x03, 0x00, 0x00, 0x00, 0x00, 0xEE }; + // canBusSerial.Write(buffer, 0, 8); + + // return await GetBufferByPort(canBusSerial, 8); + // } + // catch (Exception ex) + // { + // _eventAggregator.GetEvent().Publish(new util.DeviceMsg() + // { + // EventType = util.EventType.OPENERROR, + // WindowName = WindowName, + // Message = $"操作发生异常{ex.Message}" + // }); + // logger.Info($"操作发生异常:ex:{ex.Message}"); + // return null; + + // } + //} + //// 回收箱回收数量查询 + //public async Task CheckRecoverQuantity() + //{ + // try + // { + // canBusSerial.DiscardInBuffer(); + // byte[] buffer = new byte[] { 0xAA, 0x9A, (byte)(ColNos[0] > 3 ? 2 : 1), 0x00, 0x00, 0x00, 0x00, 0xEE }; + // //byte[] buffer = new byte[] { 0xAA, 0x9A, 01, (byte)(ColNos[0] > 3 ? 2 : 1), 0x00, 0x00, 0x00, 0xEE }; + // canBusSerial.Write(buffer, 0, 8); + + // return await GetBufferByPort(canBusSerial, 8); + + // } + // catch (Exception ex) + // { + // _eventAggregator.GetEvent().Publish(new util.DeviceMsg() + // { + // EventType = util.EventType.OPENERROR, + // WindowName = WindowName, + // Message = $"操作发生异常{ex.Message}" + // }); + // logger.Info($"操作发生异常:ex:{ex.Message}"); + // return null; + // } + //} + //#endregion + + //#region 称重操作 + //// 以板子为单位获取抽屉内所有库位的药品数量 + //public async Task CheckQuantityByAddr() + //{ + + // canBusSerial.DiscardInBuffer(); + // var channel = Convert.ToInt32((DrawerNo * 10 + 1).ToString(), 16); + // byte[] buffer = new byte[] { 0xaa, (byte)(channel), 0x28, 0x00, 0x00, 0x00, 0x00, 0xee }; + // logger.Info($"称重发送库位数量查询1【{string.Join(",", buffer)}】"); + // canBusSerial.Write(buffer, 0, 8); + // byte[] result1 = await GetBufferByPort(canBusSerial, 8); + + + // var channel2 = Convert.ToInt32((DrawerNo * 10 + 2).ToString(), 16); + // byte[] buffer2 = new byte[] { 0xaa, (byte)(channel2), 0x28, 0x00, 0x00, 0x00, 0x00, 0xee }; + // logger.Info($"称重发送库位数量查询2【{string.Join(",", buffer2)}】"); + // canBusSerial.Write(buffer2, 0, 8); + // byte[] result2 = await GetBufferByPort(canBusSerial, 8); + + // byte[] res = new byte[6]; + // Array.Copy(result1, 3, res, 0, 3); + // Array.Copy(result2, 3, res, 3, 3); + + // return res; + + //} + + //// 以板子为单位获取抽屉内所有库位的药品数量 + //public async Task CheckQuantityByAddr2() + //{ + + + // int[] res = new int[6]; + // for (int i = 0; i < ColNos.Length; i++) + // { + // canBusSerial.DiscardInBuffer(); + // var index = ColNos[i] > 3 ? 2 : 1; + // var lock1 = ColNos[i] % 3 == 0 ? 3 : ColNos[i] % 3; + // var channel = Convert.ToInt32((DrawerNo * 10 + index).ToString(), 16); + // byte[] buffer = new byte[] { 0xaa, (byte)(channel), 0x27, (byte)lock1, 0x00, 0x00, 0x00, 0xee }; + + // logger.Info($"称重发送库位数量查询1【{string.Join(",", buffer)}】"); + // canBusSerial.Write(buffer, 0, 8); + // byte[] result = await GetBufferByPort(canBusSerial, 8); + // logger.Info($"称重发送库位数量查询1返回结果【{string.Join(",", result)}】"); + // byte[] hl = result.Skip(3).Take(2).ToArray(); + // int quantity = BitConverter.ToInt16(hl.Reverse().ToArray(), 0); + // res[ColNos[i] - 1] = quantity; + // } + + // return res; + + //} + + //// 指定药盒指示灯开启使能开锁 + //public async Task BoxLockLightOn2() + //{ + // for (int i = 0; i < ColNos.Length; i++) + // { + // var index = ColNos[i] > 3 ? 2 : 1; + // var lock1 = ColNos[i] % 3 == 0 ? 3 : ColNos[i] % 3; + // var channel = Convert.ToInt32((DrawerNo * 10 + index).ToString(), 16); + // byte[] buffer = new byte[] { 0xaa, (byte)(channel), 0x03, (byte)lock1, 0x00, 0x00, 0x00, 0xee }; + // logger.Info($"称重发送药盒使能【{string.Join(",", buffer)}】"); + // canBusSerial.Write(buffer, 0, 8); + // await Task.Delay(TimeSpan.FromMilliseconds(500)); + // } + //} + //// 指定药盒指示灯开启失能开锁 + //public async Task BoxLockLightOff2() + //{ + // canBusSerial.DiscardInBuffer(); + // for (int i = 0; i < ColNos.Length; i++) + // { + // var index = ColNos[i] > 3 ? 2 : 1; + // var lock1 = ColNos[i] % 3 == 0 ? 3 : ColNos[i] % 3; + // var channel = Convert.ToInt32((DrawerNo * 10 + index).ToString(), 16); + // byte[] buffer = new byte[] { 0xaa, (byte)(channel), 0x04, (byte)lock1, 0x00, 0x00, 0x00, 0xee }; + // logger.Info($"称重发送药盒失能【{string.Join(",", buffer)}】"); + // canBusSerial.Write(buffer, 0, 8); + // await Task.Delay(TimeSpan.FromMilliseconds(50)); + // } + //} + + //public async void ClearCount(int DrawerNo, int ColNo) + //{ + // try + // { + // canBusSerial.DiscardInBuffer(); + // var index = ColNo > 3 ? 2 : 1; + // var lock1 = ColNo % 3 == 0 ? 3 : ColNo % 3; + // var channel = Convert.ToInt32((DrawerNo * 10 + index).ToString(), 16); + // byte[] buffer = new byte[] { 0xaa, (byte)(channel), 0x25, (byte)lock1, 0x00, 0x00, 0x00, 0xee }; + + // logger.Info($"称重发送清空计数【{string.Join(",", buffer)}】"); + // canBusSerial.Write(buffer, 0, 8); + // } + // catch (Exception ex) + // { + // _eventAggregator.GetEvent().Publish(new util.DeviceMsg() + // { + // EventType = util.EventType.OPENERROR, + // WindowName = WindowName, + // Message = $"操作发生异常{ex.Message}" + // }); + // logger.Info($"操作发生异常:ex:{ex.Message},方法名:ClearCount;参数:{DrawerNo},{ColNo}"); + // } + + //} + + //public async void SetNumCount(int DrawerNo, int ColNo, int Quantity) + //{ + // try + // { + // canBusSerial.DiscardInBuffer(); + // var index = ColNo > 3 ? 2 : 1; + // var lock1 = ColNo % 3 == 0 ? 3 : ColNo % 3; + // var channel = Convert.ToInt32((DrawerNo * 10 + index).ToString(), 16); + // byte[] buffer = new byte[] { 0xaa, (byte)(channel), 0x26, (byte)lock1, 0x00, 0x00, 0x00, 0xee }; + + + // buffer[4] = (byte)(Quantity >> 8); + // buffer[5] = (byte)(Quantity & 0xff); + + + // logger.Info($"称重发送数量【{string.Join(",", buffer)}】"); + // canBusSerial.Write(buffer, 0, 8); + // } + // catch (Exception ex) + // { + // _eventAggregator.GetEvent().Publish(new util.DeviceMsg() + // { + // EventType = util.EventType.OPENERROR, + // WindowName = WindowName, + // Message = $"操作发生异常{ex.Message}" + // }); + // logger.Info($"操作发生异常:ex:{ex.Message},方法名:SetNumCount;参数:{DrawerNo},{ColNo},{Quantity}"); + // } + + //} + //#endregion + ///// + ///// 冰箱使能 + ///// + ///// + //public async Task FridegOpen(int iIndex) + //{ + // try + // { + // fridgeSerial.DiscardInBuffer(); + // byte bAddress; + // if (iIndex == 1) + // { + // bAddress = 0x01; + // } + // else + // { + // bAddress = 0x02; + // } + // byte[] buffer = new byte[] { bAddress, 0x06, 0x10, 0xD4, 0x00, 0x01, 0x0C, 0xF2 }; + // //byte[] buffer = new byte[] { 0x01, 0x06, 0x10, 0xD4, 0x00, 0x01 }; + // ////获取数组CRC校验码 + // //byte[] byteDate = CRC16MODBUS.CrcModBus(buffer); + // ////Array.Reverse(byteDate); + // //int dataLength = buffer.Length; + // //Array.Resize(ref buffer, dataLength + byteDate.Length); + // //for (int i = 0; i < byteDate.Length; i++) + // //{ + // // buffer[dataLength + i] = byteDate[i]; + // //} + // logger.Info($"冰箱使能【{Convert.ToHexString(buffer)}】"); + // fridgeSerial.Write(buffer, 0, 8); + // await Task.Delay(80); + // } + // catch (Exception ex) + // { + // logger.Info($"冰箱使能发生异常:ex:{ex.Message}"); + // } + // FridgeOperate = false; + //} + ///// + ///// 冰箱失能 + ///// + ///// + //public async Task FridgeOff(int iIndex) + //{ + // try + // { + // fridgeSerial.DiscardInBuffer(); + // byte bAddress; + // if (iIndex == 1) + // { + // bAddress = 0x01; + // } + // else + // { + // bAddress = 0x02; + // } + // byte[] buffer = new byte[] { bAddress, 0x06, 0x10, 0xD4, 0x00, 0x00, 0xCD, 0x32 }; + // //byte[] buffer = new byte[] { 0x01, 0x06, 0x10, 0xD4, 0x00, 0x01 }; + // ////获取数组CRC校验码 + // //byte[] byteDate = CRC16MODBUS.CrcModBus(buffer); + // ////Array.Reverse(byteDate); + // //int dataLength = buffer.Length; + // //Array.Resize(ref buffer, dataLength + byteDate.Length); + // //for (int i = 0; i < byteDate.Length; i++) + // //{ + // // buffer[dataLength + i] = byteDate[i]; + // //} + // logger.Info($"冰箱失能【{Convert.ToHexString(buffer)}】"); + // fridgeSerial.Write(buffer, 0, 8); + // await Task.Delay(80); + // } + // catch (Exception ex) + // { + // logger.Info($"冰箱失能发生异常:ex:{ex.Message}"); + // } + // FridgeOperate = false; + //} + ///// + ///// 冰箱报警使能 + ///// + ///// + //public async Task FridgeAlarmOn(int iIndex) + //{ + // try + // { + // fridgeSerial.DiscardInBuffer(); + // byte bAddress; + // if (iIndex == 1) + // { + // bAddress = 0x01; + // } + // else + // { + // bAddress = 0x02; + // } + // byte[] buffer = new byte[] { bAddress, 0x06, 0x10, 0xD5, 0x00, 0x01, 0x5D, 0x32 }; + // //byte[] buffer = new byte[] { 0x01, 0x06, 0x10, 0xD5, 0x00, 0x01 }; + // ////获取数组CRC校验码 + // //byte[] byteDate = CRC16MODBUS.CrcModBus(buffer); + // ////Array.Reverse(byteDate); + // //int dataLength = buffer.Length; + // //Array.Resize(ref buffer, dataLength + byteDate.Length); + // //for (int i = 0; i < byteDate.Length; i++) + // //{ + // // buffer[dataLength + i] = byteDate[i]; + // //} + // logger.Info($"冰箱报警使能【{Convert.ToHexString(buffer)}】"); + // fridgeSerial.Write(buffer, 0, 8); + // await Task.Delay(80); + // } + // catch (Exception ex) + // { + // logger.Info($"冰箱报警使能发生异常:ex:{ex.Message}"); + // } + // FridgeOperate = false; + + //} + + ///// + ///// 冰箱报警失能 + ///// + ///// + //public async Task FridgeAlarmOff(int iIndex) + //{ + // try + // { + // fridgeSerial.DiscardInBuffer(); + // byte bAddress; + // if (iIndex == 1) + // { + // bAddress = 0x01; + // } + // else + // { + // bAddress = 0x02; + // } + // byte[] buffer = new byte[] { bAddress, 0x06, 0x10, 0xD5, 0x00, 0x00, 0x9C, 0xF2 }; + // //byte[] buffer = new byte[] { 0x01, 0x06, 0x10, 0xD5, 0x00, 0x00 }; + // ////获取数组CRC校验码 + // //byte[] byteDate = CRC16MODBUS.CrcModBus(buffer); + // ////Array.Reverse(byteDate); + // //int dataLength = buffer.Length; + // //Array.Resize(ref buffer, dataLength + byteDate.Length); + // //for (int i = 0; i < byteDate.Length; i++) + // //{ + // // buffer[dataLength + i] = byteDate[i]; + // //} + // logger.Info($"冰箱报警失能【{Convert.ToHexString(buffer)}】"); + // fridgeSerial.Write(buffer, 0, 8); + // await Task.Delay(80); + // } + // catch (Exception ex) + // { + // logger.Info($"冰箱报警失能发生异常:ex:{ex.Message}"); + // } + // FridgeOperate = false; + //} + ///// + ///// 冰箱温度设定最小 + ///// + ///// + //public async Task FridgeMinSetting(float min, int iIndex) + //{ + // try + // { + + // int iMix = Convert.ToInt32(min * 10); + // fridgeSerial.DiscardInBuffer(); + // //byte[] bufferMin = new byte[] { 0x01, 0x06, 0x10, 0xC9, 0x00, 0x15, 0x9C, 0xFB }; + // byte bAddress; + // if (iIndex == 1) + // { + // bAddress = 0x01; + // } + // else + // { + // bAddress = 0x02; + // } + // byte[] bufferMin = new byte[] { bAddress, 0x06, 0x10, 0xC9, 0x00, (byte)(iMix & 0xff) }; + // //获取数组CRC校验码 + // byte[] byteDate = CRC16MODBUS.CrcModBus(bufferMin); + // //Array.Reverse(byteDate); + // int dataLength = bufferMin.Length; + // Array.Resize(ref bufferMin, dataLength + byteDate.Length); + // for (int i = 0; i < byteDate.Length; i++) + // { + // bufferMin[dataLength + i] = byteDate[i]; + // } + // logger.Info($"冰箱温度设定Min:【{Convert.ToHexString(bufferMin)}】"); + // fridgeSerial.Write(bufferMin, 0, 8); + // } + // catch (Exception ex) + // { + // logger.Info($"获取冰箱温度发生异常:ex:{ex.Message}"); + // } + //} + ///// + ///// 冰箱温度设定最大 + ///// + ///// + //public async Task FridgeMaxSetting(float max, int iIndex) + //{ + // try + // { + // int iMax = Convert.ToInt32(max * 10); + // fridgeSerial.DiscardInBuffer(); + // //byte[] bufferMin = new byte[] { 0x01, 0x06, 0x10, 0xC9, 0x00, 0x15, 0x9C, 0xFB }; + // byte bAddress; + // if (iIndex == 1) + // { + // bAddress = 0x01; + // } + // else + // { + // bAddress = 0x02; + // } + // byte[] bufferMax = new byte[] { bAddress, 0x06, 0x10, 0xC8, 0x00, (byte)(iMax & 0xff) }; + // //获取数组CRC校验码 + // byte[] byteDate = CRC16MODBUS.CrcModBus(bufferMax); + // //Array.Reverse(byteDate); + // int dataLength = bufferMax.Length; + // Array.Resize(ref bufferMax, dataLength + byteDate.Length); + // for (int i = 0; i < byteDate.Length; i++) + // { + // bufferMax[dataLength + i] = byteDate[i]; + // } + // logger.Info($"冰箱温度设定Max:【{Convert.ToHexString(bufferMax)}】"); + // fridgeSerial.Write(bufferMax, 0, 8); + // } + // catch (Exception ex) + // { + // logger.Info($"获取冰箱温度发生异常:ex:{ex.Message}"); + // } + //} + ///// + ///// 获取冰箱温度 + ///// + ///// + //public async Task GetFridgeTemperature(int iIndex) + //{ + // float temperature = 0.0f; + // try + // { + // fridgeSerial.DiscardInBuffer(); + // byte bAddress; + // if (iIndex == 1) + // { + // bAddress = 0x01; + // } + // else + // { + // bAddress = 0x02; + // } + // byte[] buffer = new byte[] { bAddress, 0x03, 0x10, 0x02, 0x00, 0x01, 0x21, 0x0A }; + // //byte[] buffer = new byte[] { 0x01, 0x03, 0x10, 0x02, 0x00, 0x01 }; + + // ////获取数组CRC校验码 + // //byte[] byteDate = CRC16MODBUS.CrcModBus(buffer); + // ////Array.Reverse(byteDate); + // //int dataLength = buffer.Length; + // //Array.Resize(ref buffer, dataLength + byteDate.Length); + // //for (int i = 0; i < byteDate.Length; i++) + // //{ + // // buffer[dataLength + i] = byteDate[i]; + // //} + + // logger.Info($"获取冰箱温度【{Convert.ToHexString(buffer)}】"); + // fridgeSerial.Write(buffer, 0, 8); + + // byte[] retByte = await GetBufferByPort(fridgeSerial, 7); + + // logger.Info($"获取冰箱温度返回【{Convert.ToHexString(retByte)}】"); + + // if (retByte != null && retByte.Length >= 7) + // { + // var hight = retByte[3]; + // var low = retByte[4]; + // int iHight = Convert.ToInt32(hight << 8); + // int iLow = Convert.ToInt32(retByte[4]); + // temperature = Convert.ToSingle(iHight + iLow) / 10; + // } + // } + // catch (Exception ex) + // { + + // logger.Info($"获取冰箱温度发生异常:ex:{ex.Message}"); + // } + // return temperature; + //} + ///// + ///// 设置冰箱温度 + ///// + ///// + //public async Task SetFridgeTemperature(float temperature, int iIndex) + //{ + // int tpt = (int)temperature * 10; + // byte Temperature = (byte)(tpt & 0xff); + // try + // { + // //if (!FridgeOperate) + // { + // fridgeSerial.DiscardInBuffer(); + // byte bAddress; + // if (iIndex == 1) + // { + // bAddress = 0x01; + // } + // else + // { + // bAddress = 0x02; + // } + // //byte[] buffer = new byte[] { 0x01, 0x03, 0x10, 0x02, 0x00, 0x01, 0x21,0x0A }; + // byte[] buffer = new byte[] { bAddress, 0x06, 0x10, 0x02, 0x00, (byte)Temperature }; + + // //获取数组CRC校验码 + // byte[] byteDate = CRC16MODBUS.CrcModBus(buffer); + // //Array.Reverse(byteDate); + // int dataLength = buffer.Length; + // Array.Resize(ref buffer, dataLength + byteDate.Length); + // for (int i = 0; i < byteDate.Length; i++) + // { + // buffer[dataLength + i] = byteDate[i]; + // } + // logger.Info($"设置冰箱温度【{Convert.ToHexString(buffer)}】"); + // fridgeSerial.Write(buffer, 0, 8); + + // await GetBufferByPort(fridgeSerial, 8); + // } + // } + // catch (Exception ex) + // { + + // logger.Info($"获取冰箱温度发生异常:ex:{ex.Message}"); + // } + // return temperature; + //} + ///// + ///// 冰箱延迟报警 + ///// + ///// + //public async Task FridgeDelayWarm(int iIndex) + //{ + // try + // { + // //if (!FridgeOperate) + // { + // fridgeSerial.DiscardInBuffer(); + // byte bAddress; + // if (iIndex == 1) + // { + // bAddress = 0x01; + // } + // else + // { + // bAddress = 0x02; + // } + // byte[] buffer = new byte[] { bAddress, 0x06, 0x10, 0xCD, 0x00, 0x01, 0xDD, 0x35 }; + // //byte[] buffer = new byte[] { 0x01, 0x06, 0x10, 0xCD, 0x00, 0x01 }; + // ////获取数组CRC校验码 + // //byte[] byteDate = CRC16MODBUS.CrcModBus(buffer); + // ////Array.Reverse(byteDate); + // //int dataLength = buffer.Length; + // //Array.Resize(ref buffer, dataLength + byteDate.Length); + // //for (int i = 0; i < byteDate.Length; i++) + // //{ + // // buffer[dataLength + i] = byteDate[i]; + // //} + // logger.Info($"冰箱延迟报警【{Convert.ToHexString(buffer)}】"); + // fridgeSerial.Write(buffer, 0, 8); + // } + // } + // catch (Exception ex) + // { + + // logger.Info($"获取冰箱温度发生异常:ex:{ex.Message}"); + // } + // //FridgeOperate = false; + //} + //#endregion #region 温湿度 public TemperatureHumidityInfo GetWSD() diff --git a/DM_Weight/ViewModels/AdditionWindowViewModel.cs b/DM_Weight/ViewModels/AdditionWindowViewModel.cs index 39619dd..84f4dc3 100644 --- a/DM_Weight/ViewModels/AdditionWindowViewModel.cs +++ b/DM_Weight/ViewModels/AdditionWindowViewModel.cs @@ -43,11 +43,13 @@ namespace DM_Weight.ViewModels IDialogService _dialogService; IEventAggregator _eventAggregator; + private PortUtil _portUtil; - public AdditionWindowViewModel(IDialogService dialogService, IEventAggregator eventAggregator) + public AdditionWindowViewModel(IDialogService dialogService, IEventAggregator eventAggregator, PortUtil portUtil) { _dialogService = dialogService; _eventAggregator = eventAggregator; + _portUtil = portUtil; } public bool IsNavigationTarget(NavigationContext navigationContext) { @@ -83,8 +85,14 @@ namespace DM_Weight.ViewModels selectedStock = ChannelStocks.FindAll(cs => cs.ChannelLst.IsSelected).ToList(); if (selectedStock != null && selectedStock.Count > 0) { + int drawerNo = 0; for (int i = 0; i < selectedStock.Count; i++) { + if (!(drawerNo == selectedStock[i].DrawerNo)) + { + drawerNo = selectedStock[i].DrawerNo; + _portUtil.SpeakAsync($"正在打开{selectedStock[i].DrawerNo}号药箱"); + } ModbusHelper.GetInstance().OpenBoxDoor(selectedStock[i].DrawerNo - 1); Thread.Sleep(100); } diff --git a/DM_Weight/ViewModels/CheckOrderNewWindowViewModel.cs b/DM_Weight/ViewModels/CheckOrderNewWindowViewModel.cs index 7596224..355a7a4 100644 --- a/DM_Weight/ViewModels/CheckOrderNewWindowViewModel.cs +++ b/DM_Weight/ViewModels/CheckOrderNewWindowViewModel.cs @@ -523,7 +523,7 @@ namespace DM_Weight.ViewModels OrderInfo oi = confirmData[i]; //更新处方状态 - if (oi.DmStatus == 0) + if (oi.DmStatus == 1) { SqlSugarHelper.Db.Updateable(new OrderInfo() { diff --git a/DM_Weight/ViewModels/CheckOrderWindowViewModel.cs b/DM_Weight/ViewModels/CheckOrderWindowViewModel.cs deleted file mode 100644 index 166d680..0000000 --- a/DM_Weight/ViewModels/CheckOrderWindowViewModel.cs +++ /dev/null @@ -1,476 +0,0 @@ -using DM_Weight.Models; -using DM_Weight.msg; -using DM_Weight.Port; -using DM_Weight.util; -using DM_Weight.Views; -using log4net; -using log4net.Repository.Hierarchy; -using Prism.Commands; -using Prism.Events; -using Prism.Mvvm; -using Prism.Regions; -using System; -using System.Collections; -using System.Collections.Generic; -using System.ComponentModel; -using System.Configuration; -using System.Drawing.Printing; -using System.Linq; -using System.Linq.Expressions; -using System.Text; -using System.Threading.Tasks; -using System.Windows.Data; - -namespace DM_Weight.ViewModels -{ - public class CheckOrderWindowViewModel : BindableBase,INavigationAware, IRegionMemberLifetime - { - //private int _pageNum = 1; - //public int PageNum - //{ - // get => _pageNum; - // set - // { - // SetProperty(ref _pageNum, value); - // RequestData(); - // } - //} - - //private int _pageCount = 1; - //public int PageCount - //{ - // get => _pageCount; - // set - // { - // SetProperty(ref _pageCount, value); - // } - //} - - //private int _pageSize = 8; - //public int PageSize - //{ - // get => _pageSize; - // set - // { - // SetProperty(ref _pageSize, value); - // } - //} - - //private int _totalCount = 0; - //public int TotalCount - //{ - // get => _totalCount; - // set - // { - // SetProperty(ref _totalCount, value); - // } - //} - - - private readonly ILog logger = LogManager.GetLogger(typeof(CheckOrderWindowViewModel)); - - private int _status=0; - - public int Status { get => _status; set => SetProperty(ref _status, value); } - - private bool _btnEnable=true; - public bool BtnEnable { get => _btnEnable;set=>SetProperty(ref _btnEnable, value); } - - //抽屉号列表 - public static List iList = new List(); - //第几个抽屉号 - public static int iNumber = 1; - private List orderDetailList=new(); - public List OrderDetailList - { - get=> orderDetailList; - set=>SetProperty(ref orderDetailList, value); - } - - private string _orderDate = DateTime.Now.ToString("yyyy-MM-dd"); - /// - /// 查询条件 处方日期 - /// - public string OrderDate - { - get { return _orderDate; } - set - { - if (!String.IsNullOrEmpty(value)) - { - SetProperty(ref _orderDate, DateTime.Parse(value).ToString("yyyy-MM-dd")); - } - else - { - SetProperty(ref _orderDate, value); - } - - RequestData(); - } - } - - private PortUtil _portUtil; - IEventAggregator _eventAggregator; - public CheckOrderWindowViewModel(PortUtil portUtil, IEventAggregator eventAggregator) - { - _portUtil = portUtil; - _eventAggregator = eventAggregator; - } - public bool KeepAlive => false; - - public bool IsNavigationTarget(NavigationContext navigationContext) - { - return true; - } - - public void OnNavigatedFrom(NavigationContext navigationContext) - { - // 取消消息订阅 - _eventAggregator.GetEvent().Unsubscribe(DoMyPrismEvent); - } - - public void OnNavigatedTo(NavigationContext navigationContext) - { - RequestData(); - _eventAggregator.GetEvent().Subscribe(DoMyPrismEvent); - } - public DelegateCommand Query - { - get => new DelegateCommand(()=> { RequestData(); }); - } - public void RequestData() - { - OrderDetailList.Clear(); - //int totalCount = 0; - List queryData = SqlSugarHelper.Db.Queryable() - .Includes(od => od._OrderInfo) - .Includes(od => od.DrugInfo) - .WhereIF(OrderDate != null, od => od._OrderInfo.RecvDate.ToString("yyyy-MM-dd") == OrderDate) - .WhereIF(!String.IsNullOrEmpty(ConfigurationManager.AppSettings["storage"]), od => od._OrderInfo.Pharmacy == ConfigurationManager.AppSettings["storage"]) - .Where(od => od._OrderInfo.DmStatus == 0) - .Where(od => od._OrderInfo.HisDispFlag == 0) - .Where(od => od._OrderInfo.CancelFlag == 0) - //.Where(od=>od._OrderInfo.OrderNo== "202312219183416") - .Where(od=>od._OrderInfo.DoctorCode== HomeWindowViewModel.Operator.UserBarcode) - .OrderBy(od => od.OrderId) - .ToList(); - //.ToPageList(PageNum, PageSize, ref totalCount); - - - - ICollectionView vw = CollectionViewSource.GetDefaultView(queryData); - vw.GroupDescriptions.Add(new PropertyGroupDescription("_OrderInfo")); - - OrderDetailList = queryData; - //TotalCount = totalCount; - //PageCount = (int)Math.Ceiling((double)TotalCount / PageSize); - - } - //核对确认 - public DelegateCommand ConfirmCommand - { - get => new DelegateCommand(() => - { - ConfirmAction(); - }); - } - - private void ConfirmAction() - { - //打开当前用户下的药箱 - iList = SqlSugarHelper.Db.Queryable().Where(cl => cl.MachineId == "DM5") - .Where(cl => cl.BelongUser == HomeWindowViewModel.Operator.UserName) - .Select(cl => cl.DrawerNo).ToList(); - if (iList.Count > 0) - { - _portUtil.SpeakAsync("正在打开药箱"); - _portUtil.DrawerNo = iList[iNumber]; - iNumber++; - Status = 1; - _portUtil.OpenBox(); - } - - } - - void DoMyPrismEvent(DeviceMsg msg) - { - switch (msg.EventType) - { - // 药箱打开 - case EventType.DRAWEROPEN: - BtnEnable = false; - //记录开药箱日志 - SqlSugarHelper.Db.Insertable(new MachineRecord() - { - MachineId = "DM5", - DrawerNo = _portUtil.DrawerNo, - Operator = HomeWindowViewModel.Operator?.Id, - OperationTime = DateTime.Now, - Type = 55, - InvoiceId = "药箱打开", - }).ExecuteCommand(); - - if (iNumber < iList.Count) - { - _portUtil.DrawerNo = iList[iNumber]; - iNumber++; - if (Status == 1) - { - Status = 2; - } - _portUtil.OpenBox(); - } - else - { - iNumber = 0; - _portUtil.GetBoxStatus(); - } - break; - // 药箱关闭 - case EventType.DRAWERCLOSE: - //记录药箱操作日志 - SqlSugarHelper.Db.Insertable(new MachineRecord() - { - MachineId = "DM5", - DrawerNo = _portUtil.DrawerNo, - Operator = HomeWindowViewModel.Operator?.Id, - OperationTime = DateTime.Now, - Type = 55, - InvoiceId = "药箱关闭", - }).ExecuteCommand(); - - if (Status == 2) - { - Status = 3; - } - BtnEnable = true; - _portUtil.Operate = false; - - //减库存,生成操作记录 - SaveDate(); - - break; - // 打开失败 - case EventType.OPENERROR: - AlertMsg alertMsg = new AlertMsg - { - Message = msg.Message, - Type = MsgType.ERROR - }; - _eventAggregator.GetEvent().Publish(alertMsg); - - BtnEnable = true; - Status = 0; - _portUtil.Operate = false; - - //记录药箱操作日志 - SqlSugarHelper.Db.Insertable(new MachineRecord() - { - MachineId = "DM5", - DrawerNo = _portUtil.DrawerNo, - Operator = HomeWindowViewModel.Operator?.Id, - OperationTime = DateTime.Now, - Type = 55, - InvoiceId = "药箱打开失败", - }).ExecuteCommand(); - _portUtil.Operate = false; - break; - } - } - //减库存,生成操作记录 - private void SaveDate() - { - var confirmData = OrderDetailList.Where(od => od._OrderInfo.ItemIsChecked == true).ToList(); - if(confirmData.Count > 0 ) - { - - var f = SqlSugarHelper.Db.UseTran(() => - { - string empChannelStock=string.Empty; - - for (int i = 0; i < confirmData.Count; i++) - { - OrderDetail od = confirmData[i]; - - //更新处方状态 - if(od._OrderInfo.DmStatus==0) - { - SqlSugarHelper.Db.Updateable(new OrderInfo() - { - DmStatus = 1, - OrderNo = od.OrderNo - }).UpdateColumns(it => new { it.DmStatus }).WhereColumns(it => new { it.OrderNo }).ExecuteCommand(); - - SqlSugarHelper.Db.Insertable(new OrderFinish() - { - OrderNo = od.OrderNo, - PatientId = od._OrderInfo.PatientId, - Pharmacy = od._OrderInfo.Pharmacy, - State = 1, - Operator = HomeWindowViewModel.Operator?.Nickname, - }); - } - - Expression> updateExp = it => it.ManuNo == od.SetManuNo && it.EffDate == od.SetEffDate; - - ChannelStock cs = SqlSugarHelper.Db.Queryable().Where(cs =>cs.DrugId==od.DrugId && cs.ManuNo == od.SetManuNo && cs.EffDate == od.SetEffDate && cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM3")).First(); - if(cs==null) - { - empChannelStock += $"{od.OrderNo},{od.DrugId},{od.SetManuNo},{od.SetEffDate}"; - continue; - } - cs.Quantity = cs.Quantity - od.Quantity; - // 更新数据 库存信息 - SqlSugarHelper.Db.Updateable(cs).UpdateColumns(it => new { it.Quantity }).ExecuteCommand(); - - if (cs != null) - { - - SqlSugarHelper.Db.Insertable(new MachineRecord() - { - MachineId = ConfigurationManager.AppSettings["machineId"].ToString(), - DrawerNo = cs.DrawerNo, - ColNo = cs.ColNo, - DrugId = cs.DrugId, - ManuNo = cs.ManuNo, - EffDate = !String.IsNullOrEmpty(cs.EffDate) ? DateTime.ParseExact(cs.EffDate, "yyyy-MM-dd", System.Globalization.CultureInfo.CurrentCulture) : null, - Operator = HomeWindowViewModel.Operator?.Id, - Reviewer = HomeWindowViewModel.Reviewer?.Id, - OperationTime = DateTime.Now, - Quantity = od.Quantity, - Type = 2, - InvoiceId = od.OrderNo - //, StockQuantity = nowChannels.Sum(it => it.Quantity) - }).ExecuteCommand(); - } - //保存账册 - int iInsertResult = SqlSugarHelper.Db.Insertable(new AccountBookG2() - { - DrugId = od.DrugId, - Type = 2, - Department = od._OrderInfo.DeptName, - OrderNo = od.OrderNo, - ManuNo = cs.ManuNo, - EffDate = cs.EffDate, - OutQuantity = od.Quantity, - UserId1 = HomeWindowViewModel.Operator?.Id, - UserId2 = HomeWindowViewModel.Reviewer?.Id, - MachineId = ConfigurationManager.AppSettings["machineId"].ToString(), - CreateDate = DateTime.Now.ToString("yyyy-MM-dd"), - CreateTime = DateTime.Now, - InvoiceNo = od.OrderNo - - }).ExecuteCommand(); - //修改凌晨生成的日结存与总结存数据 - AccountBookG2 accountBookG2Day = SqlSugarHelper.Db.Queryable() - .Where(ab => ab.MachineId.Equals(ConfigurationManager.AppSettings["machineId"].ToString())) - .Where(ab => ab.Type == 3) - .Where(ab => ab.DrugId == od.DrugId) - .Where(ab => ab.ManuNo == cs.ManuNo) - .Where(ab => ab.CreateDate == DateTime.Now.ToString("yyyy-MM-dd")).First(); - if (accountBookG2Day != null) - { - accountBookG2Day.ManuStock = accountBookG2Day.ManuStock - od.Quantity; - SqlSugarHelper.Db.Updateable(accountBookG2Day).ExecuteCommand(); - } - else - { - //生成日结存时可能没有该库位的绑定信息,需要写入日结存 - int iDayResult = SqlSugarHelper.Db.Insertable(new AccountBookG2() - { - DrugId = od.DrugId, - Type = 3, - ManuNo = cs.ManuNo, - EffDate = cs.EffDate, - YQuantity = 0, - ManuStock = od.Quantity, - TotalStock = od.Quantity, - UserId1 = HomeWindowViewModel.Operator?.Id, - UserId2 = HomeWindowViewModel.Reviewer?.Id, - MachineId = ConfigurationManager.AppSettings["machineId"].ToString(), - CreateDate = DateTime.Now.ToString("yyyy-MM-dd"), - InvoiceNo = "日结存" - }).ExecuteCommand(); - if (iDayResult <= 0) - { - logger.Info($"未写入日结存数据{od.DrugId}-{cs.ManuNo}-{cs.EffDate}-{cs.Quantity}"); - } - } - //修改凌晨生成的日结存与总结存数据 - AccountBookG2 accountBookG2Total = SqlSugarHelper.Db.Queryable() - .Where(ab => ab.MachineId.Equals(ConfigurationManager.AppSettings["machineId"].ToString())) - .Where(ab => ab.Type == 4) - .Where(ab => ab.DrugId == od.DrugId) - .Where(ab => ab.CreateDate == DateTime.Now.ToString("yyyy-MM-dd")).First(); - if (accountBookG2Total != null) - { - accountBookG2Total.TotalStock = accountBookG2Total.TotalStock - od.Quantity; - SqlSugarHelper.Db.Updateable(accountBookG2Total).ExecuteCommand(); - } - else - { - //生成总结存时可能没有该库位的绑定信息,需要写入总结存 - int iTotalResult = SqlSugarHelper.Db.Insertable(new AccountBookG2() - { - DrugId = od.DrugId, - Type = 4, - YQuantity = 0, - ManuStock = od.Quantity, - TotalStock = od.Quantity, - UserId1 = HomeWindowViewModel.Operator?.Id, - UserId2 = HomeWindowViewModel.Reviewer?.Id, - MachineId = ConfigurationManager.AppSettings["machineId"].ToString(), - CreateDate = DateTime.Now.ToString("yyyy-MM-dd"), - InvoiceNo = "总结存" - }).ExecuteCommand(); - if (iTotalResult <= 0) - { - logger.Info($"未写入总结存数据{od.DrugId}-{od.Quantity}"); - } - } - } - if(!string.IsNullOrEmpty(empChannelStock)) - { - AlertMsg alertMsg = new AlertMsg - { - Message = $"所选处方对应药品批次效期无库存{empChannelStock}", - Type = MsgType.ERROR, - }; - _eventAggregator.GetEvent().Publish(alertMsg); - logger.Info($"所选处方对应药品批次效期无库存{empChannelStock}"); - } - return true; - }); - if (f.Data) - { - RequestData(); - AlertMsg alertMsg = new AlertMsg - { - Message = "所选处方已核对完成", - Type = MsgType.SUCCESS, - }; - _eventAggregator.GetEvent().Publish(alertMsg); - } - if (!f.IsSuccess) - { - AlertMsg alertMsg = new AlertMsg - { - Message = "处方核对失败!", - Type = MsgType.ERROR, - }; - _eventAggregator.GetEvent().Publish(alertMsg); - } - Status = 0; - } - else - { - AlertMsg alertMsg = new AlertMsg - { - Message = "请勾选要核对的处方数据", - Type = MsgType.ERROR - }; - _eventAggregator.GetEvent().Publish(alertMsg); - } - } - } -} diff --git a/DM_Weight/ViewModels/CheckStockWindowViewModel.cs b/DM_Weight/ViewModels/CheckStockWindowViewModel.cs deleted file mode 100644 index 2e46b39..0000000 --- a/DM_Weight/ViewModels/CheckStockWindowViewModel.cs +++ /dev/null @@ -1,326 +0,0 @@ -using log4net; -using Prism.Commands; -using Prism.Events; -using Prism.Mvvm; -using Prism.Regions; -using SqlSugar; -using System; -using System.Collections.Generic; -using System.Configuration; -using System.Linq; -using System.Speech.Synthesis; -using System.Text; -using System.Threading.Tasks; -using DM_Weight.Models; -using DM_Weight.msg; -using DM_Weight.Port; -using DM_Weight.util; - -namespace DM_Weight.ViewModels -{ - public class CheckStockWindowViewModel : BindableBase, IConfirmNavigationRequest, IRegionMemberLifetime - { - private readonly ILog logger = LogManager.GetLogger(typeof(CheckStockWindowViewModel)); - private List _channelStocks = new(); - - public List ChannelStocks - { - get => _channelStocks; - set => SetProperty(ref _channelStocks, value); - } - private static readonly DateTime Jan1st1970 = new DateTime - (1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); - - private PortUtil _portUtil; - IEventAggregator _eventAggregator; - - public CheckStockWindowViewModel(PortUtil portUtil, IEventAggregator eventAggregator) - { - _portUtil = portUtil; - _eventAggregator = eventAggregator; - } - - void DoMyPrismEvent(DeviceMsg msg) - { - if (msg.WindowName == "CheckStockWindow") - { - switch (msg.EventType) - { - // 抽屉打开 - case EventType.DRAWEROPEN: - if (Status == 1) - { - Status = 2; - } - - break; - // 抽屉关闭 - case EventType.DRAWERCLOSE: - if (Status == 2) - { - Status = 3; - } - break; - // 数量变化 - case EventType.UPDATEQUANTITY: - if (Status == 2) - { - logger.Info($"抽屉【{DrawerNo}】库位药品数量【{msg.Quantitys}】"); - } - break; - // 打开失败 - case EventType.OPENERROR: - AlertMsg alertMsg = new AlertMsg - { - Message = msg.Message, - Type = MsgType.ERROR, - }; - _eventAggregator.GetEvent().Publish(alertMsg); - Status = 0; - break; - } - } - - } - - private int _status; - - public int Status { get => _status; set => SetProperty(ref _status, value); } - - private int _drawerNo = 1; - - public int DrawerNo - { - get => _drawerNo; - set => SetProperty(ref _drawerNo, value); - } - - private bool _is8Drawer = true; - - public bool Is8Drawer { get => _is8Drawer; set => SetProperty(ref _is8Drawer, value); } - - private bool _is16Drawer = false; - - public bool Is16Drawer { get => _is16Drawer; set => SetProperty(ref _is16Drawer, value); } - - - private bool _is17Drawer = false; - - public bool Is17Drawer { get => _is17Drawer; set => SetProperty(ref _is17Drawer, value); } - public DelegateCommand UpdateDrawerNo - { - get => new DelegateCommand((DrawerNo) => - { - this.DrawerNo = Convert.ToInt32(DrawerNo); - RequestData(); - }, (DrawerNo) => Status == 0 - ); - } - public DelegateCommand OpenDrawer - { - get => new DelegateCommand(() => - { - Status = 1; - _portUtil.SpeakAsync("正在打开" + DrawerNo + "号抽屉"); - - - List singleChannels = ChannelStocks.FindAll(it => it.BoardType != 1); - - _portUtil.WindowName = "CheckStockWindow"; - _portUtil.Operate = true; - _portUtil.BoardType = singleChannels.Count > 0 ? singleChannels[0].BoardType : 1; - _portUtil.ColNos = singleChannels.Select(it => it.ColNo).ToArray(); - _portUtil.DrawerNo = DrawerNo; - _portUtil.Start(); - - }, () => Status == 0).ObservesProperty(() => Status); - } - - private bool _isFinishClick = false; - - // 完成按钮 - public DelegateCommand TakeFinish - { - get => new DelegateCommand(() => - { - _isFinishClick = true; - List record = ChannelStocks.FindAll(it => it.Quantity != it.CheckQuantity).ToList(); - if (record.Count > 0) - { - string InvoiceId = "CHECK_" + CurrentTimeMillis(); - var f = SqlSugarHelper.Db.UseTran(() => - { - - for (int i = 0; i < record.Count; i++) - { - ChannelStock it = record[i]; - - - // 更新数据 库存信息 - SqlSugarHelper.Db.Updateable(new ChannelStock() - { - Quantity = it.CheckQuantity, - ManuNo = it.ManuNo, - EffDate = it.EffDate, - Id = it.Id, - }).UpdateColumns(it => new { it.Quantity, it.ManuNo, it.EffDate }).ExecuteCommand(); - // 获取更新完库存后的药品库存 - List nowChannels = SqlSugarHelper.Db.Queryable() - .Where(cs => cs.MachineId.Equals(it.MachineId)) - .Where(cs => cs.DrugId.Equals(it.DrugId)) - .Where(cs => cs.DrawerType == 1) - .ToList(); - - // 保存数据 盘点记录 - SqlSugarHelper.Db.Insertable(new MachineRecord() - { - MachineId = it.MachineId, - DrawerNo = it.DrawerNo, - ColNo = it.ColNo, - DrugId = it.DrugId, - ManuNo = it.ManuNo, - EffDate = !String.IsNullOrEmpty(it.EffDate) ? DateTime.ParseExact(it.EffDate, "yyyy-MM-dd", System.Globalization.CultureInfo.CurrentCulture) : null, - Operator = HomeWindowViewModel.Operator?.Id, - Reviewer = HomeWindowViewModel.Reviewer?.Id, - OperationTime = DateTime.Now, - Quantity = it.CheckQuantity - it.Quantity, - Type = 4, - InvoiceId = InvoiceId - //,StockQuantity = nowChannels.Sum(it => it.Quantity), - //CheckQuantity = it.CheckQuantity - }).ExecuteCommand(); - - - logger.Info($"库存盘点->库位【{it.DrawerNo}-{it.ColNo}】药品【{it.DrugInfo.DrugName}】盘点前库存【{it.Quantity}】,更改后【{it.CheckQuantity}】"); - } - return true; - }); - if (f.Data) - { - // 更新屏显库存 - List singleChannels = record.FindAll(it => it.BoardType != 1); - if ((singleChannels.Count > 0 ? singleChannels[0].BoardType : 1) == 5) - { - singleChannels.ForEach(it => - { - _portUtil.WriteQuantity(it.DrawerNo, it.ColNo, it.CheckQuantity); - }); - } - - RequestData(); - AlertMsg alertMsg = new AlertMsg - { - Message = "抽屉盘点完成,库存已更新", - Type = MsgType.SUCCESS, - }; - _eventAggregator.GetEvent().Publish(alertMsg); - } - if (!f.IsSuccess) - { - AlertMsg alertMsg = new AlertMsg - { - Message = "抽屉盘点完成,库存更新失败!", - Type = MsgType.ERROR, - }; - _eventAggregator.GetEvent().Publish(alertMsg); - } - Status = 0; - _isFinishClick = false; - } - else - { - _isFinishClick = false; - AlertMsg alertMsg = new AlertMsg - { - Message = "盘点完成,库存无改变", - Type = MsgType.ERROR - }; - _eventAggregator.GetEvent().Publish(alertMsg); - Status = 0; - _isFinishClick = false; - } - - - }, () => Status == 3 && !_isFinishClick).ObservesProperty(() => Status); - } - - // 取消按钮 - public DelegateCommand CancleTake - { - get => new DelegateCommand(() => - { - _portUtil.ResetData(); - Status = 0; - }); - } - - public long CurrentTimeMillis() - { - return (long)(DateTime.UtcNow - Jan1st1970).TotalMilliseconds; - } - - public bool KeepAlive => false; - - public void FindDrawerCount() - { - int count = 0; - if (ConfigurationManager.AppSettings["MultiBatch"].ToString().Equals("1")) - { - count = SqlSugarHelper.Db.Queryable().Where(cs => cs.DrawerType != 3) - .Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1")).GroupBy(cs => cs.DrawerNo).Select(cs => SqlFunc.AggregateCount(cs.DrawerNo)).Count(); - } - else - { - count = SqlSugarHelper.Db.Queryable().Where(cs => cs.DrawerType != 3) - .Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1")).GroupBy(cs => cs.DrawerNo).Select(cs => SqlFunc.AggregateCount(cs.DrawerNo)).Count(); - - } - Is8Drawer = count < 9; - Is16Drawer = count >= 16; - Is17Drawer = count > 16; - } - - - //这个方法用于拦截请求,continuationCallback(true)就是不拦截,continuationCallback(false)拦截本次操作 - public void ConfirmNavigationRequest(NavigationContext navigationContext, Action continuationCallback) - { - continuationCallback(true); - } - - - public void RequestData() - { - List queryData = SqlSugarHelper.Db.Queryable() - .Includes(cs => cs.DrugInfo) - .Where(cs => cs.DrawerNo == DrawerNo) - .Where(cs => cs.DrugId != null) - .Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1")) - .OrderBy(cs => cs.ColNo) - .ToList(); - ChannelStocks = queryData.Select(it => { it.CheckQuantity = it.Quantity; return it; }).ToList(); - } - - //接收导航传过来的参数 现在是在此处初始化了表格数据 - public void OnNavigatedTo(NavigationContext navigationContext) - { - _eventAggregator.GetEvent().Subscribe(DoMyPrismEvent); - FindDrawerCount(); - RequestData(); - } - - - //每次导航的时候,该实列用不用重新创建,true是不重新创建,false是重新创建 - public bool IsNavigationTarget(NavigationContext navigationContext) - { - return true; - } - - //这个方法用于拦截请求 - public void OnNavigatedFrom(NavigationContext navigationContext) - { - // 取消消息订阅 - _eventAggregator.GetEvent().Unsubscribe(DoMyPrismEvent); - } - } -} - diff --git a/DM_Weight/ViewModels/HomeWindowViewModel.cs b/DM_Weight/ViewModels/HomeWindowViewModel.cs index d6e0d65..67ce963 100644 --- a/DM_Weight/ViewModels/HomeWindowViewModel.cs +++ b/DM_Weight/ViewModels/HomeWindowViewModel.cs @@ -154,8 +154,8 @@ namespace DM_Weight.ViewModels } private void SelectChildNavigate(PremissionDm SelectedChildMenu) { - if (!_portUtil.Operate) - { + //if (!_portUtil.Operate) + //{ if (SelectedChildMenu != null) { if (SelectedChildMenu.PremissionPath.Equals("TakeRecordWindow")) @@ -233,7 +233,7 @@ namespace DM_Weight.ViewModels } } } - } + //} } public PremissionDm? SelectedMenu @@ -312,10 +312,10 @@ namespace DM_Weight.ViewModels { //SelectedMenu.Children = SelectedMenu.Children; //SelectedChildMenu = SelectedMenu.Children[0]; - if (!_portUtil.Operate) - { + //if (!_portUtil.Operate) + //{ _regionManager.RequestNavigate("ContentRegion", SelectedMenu.Children[0].PremissionPath); - } + //} } } #region 子菜单点击 diff --git a/DM_Weight/ViewModels/LoginWindowViewModel.cs b/DM_Weight/ViewModels/LoginWindowViewModel.cs index 66d2ab3..cea50c3 100644 --- a/DM_Weight/ViewModels/LoginWindowViewModel.cs +++ b/DM_Weight/ViewModels/LoginWindowViewModel.cs @@ -75,14 +75,14 @@ namespace DM_Weight.ViewModels public UserList Operator { get; set; } public UserList Reviewer { get; set; } - public bool DrawerPortMsg - { - get => !_portUtil.drawerSerial.IsOpen; - } - public bool CanBusPortMsg - { - get => _portUtil._canBusExsit && !_portUtil.canBusSerial.IsOpen; - } + //public bool DrawerPortMsg + //{ + // get => !_portUtil.drawerSerial.IsOpen; + //} + //public bool CanBusPortMsg + //{ + // get => _portUtil._canBusExsit && !_portUtil.canBusSerial.IsOpen; + //} private bool _fingerMsg= CHKFunction.HKUserId>=0; @@ -91,10 +91,10 @@ namespace DM_Weight.ViewModels get => _fingerMsg; set => SetProperty(ref _fingerMsg, value); } - public bool FridgePortMsg - { - get => !_portUtil.fridgeSerial.IsOpen; - } + //public bool FridgePortMsg + //{ + // get => !_portUtil.fridgeSerial.IsOpen; + //} //温湿度 public bool WSDPortMsg { diff --git a/DM_Weight/ViewModels/SettingBoxWindowViewModel.cs b/DM_Weight/ViewModels/SettingBoxWindowViewModel.cs index 0c2f2a2..02648e3 100644 --- a/DM_Weight/ViewModels/SettingBoxWindowViewModel.cs +++ b/DM_Weight/ViewModels/SettingBoxWindowViewModel.cs @@ -282,76 +282,7 @@ namespace DM_Weight.ViewModels }); } - void DoMyPrismEvent(DeviceMsg msg) - { - switch (msg.EventType) - { - // 药箱打开 - case EventType.DRAWEROPEN: - if (Status == 1) - { - Status = 2; - } - //记录开药箱日志 - SqlSugarHelper.Db.Insertable(new MachineRecord() - { - MachineId = "DM5", - DrawerNo = _portUtil.DrawerNo, - Operator = HomeWindowViewModel.Operator?.Id, - OperationTime = DateTime.Now, - Type = 55, - InvoiceId = "药箱打开", - }).ExecuteCommand(); - _portUtil.GetBoxStatus(); - break; - // 药箱关闭 - case EventType.DRAWERCLOSE: - //记录药箱操作日志 - SqlSugarHelper.Db.Insertable(new MachineRecord() - { - MachineId = "DM5", - DrawerNo = _portUtil.DrawerNo, - Operator = HomeWindowViewModel.Operator?.Id, - OperationTime = DateTime.Now, - Type = 55, - InvoiceId = "药箱关闭", - }).ExecuteCommand(); - - if (Status == 2) - { - Status = 3; - } - IsEnable = true; - DrawerNo = -1; - _portUtil.Operate = false; - break; - // 打开失败 - case EventType.OPENERROR: - AlertMsg alertMsg = new AlertMsg - { - Message = msg.Message, - Type = MsgType.ERROR - }; - _eventAggregator.GetEvent().Publish(alertMsg); - - IsEnable = true; - DrawerNo = -1; - Status = 0; - - //记录药箱操作日志 - SqlSugarHelper.Db.Insertable(new MachineRecord() - { - MachineId = "DM5", - DrawerNo = _portUtil.DrawerNo, - Operator = HomeWindowViewModel.Operator?.Id, - OperationTime = DateTime.Now, - Type = 55, - InvoiceId = "药箱打开失败", - }).ExecuteCommand(); - _portUtil.Operate = false; - break; - } - } + public DelegateCommand Query { diff --git a/DM_Weight/Views/CheckOrderWindow.xaml b/DM_Weight/Views/CheckOrderWindow.xaml deleted file mode 100644 index 97ce0d3..0000000 --- a/DM_Weight/Views/CheckOrderWindow.xaml +++ /dev/null @@ -1,207 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - -