From 2132e14676d305d90337355d74da06059e6de298 Mon Sep 17 00:00:00 2001 From: maqiao <625215135@qq.com> Date: Fri, 24 Oct 2025 14:29:56 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9F=A5=E8=8D=AF=E7=9B=92=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E6=94=B9=E4=B8=BAbool?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MasaBlazorApp3/DataAccess/Impl/UserDao.cs | 2 +- MasaBlazorApp3/Pages/DrawerAdd.razor | 18 ++++++++++---- MasaBlazorApp3/Pages/DrawerTake.razor | 29 ++++++++++++++++++++--- MasaBlazorApp3/Port/PortUtil.cs | 14 +++++++++-- MasaBlazorApp3/appsettings.json | 4 ++-- 5 files changed, 55 insertions(+), 12 deletions(-) diff --git a/MasaBlazorApp3/DataAccess/Impl/UserDao.cs b/MasaBlazorApp3/DataAccess/Impl/UserDao.cs index ad18e9e..6562510 100644 --- a/MasaBlazorApp3/DataAccess/Impl/UserDao.cs +++ b/MasaBlazorApp3/DataAccess/Impl/UserDao.cs @@ -174,7 +174,7 @@ namespace MasaBlazorApp3.DataAccess.Impl }; var insertDetailResult = _connection.InsertWithInt32Identity(detail); } - } + } if (insertResult <= 0 || updateResult <= 0) diff --git a/MasaBlazorApp3/Pages/DrawerAdd.razor b/MasaBlazorApp3/Pages/DrawerAdd.razor index 5157be1..db4b597 100644 --- a/MasaBlazorApp3/Pages/DrawerAdd.razor +++ b/MasaBlazorApp3/Pages/DrawerAdd.razor @@ -234,7 +234,7 @@ { int beforeQuantity = await PortUtil.CheckQuantityForSingleForErZhong(i + 1); BeforeQuantity[i] = beforeQuantity; - logger.Info($"BeforeQuantity:{(i+1)}-{beforeQuantity}数量{string.Join(",", BeforeQuantity)}"); + logger.Info($"BeforeQuantity:{(i + 1)}-{beforeQuantity}数量{string.Join(",", BeforeQuantity)}"); await Task.Delay(200); } } @@ -298,7 +298,15 @@ //药盒抽屉,开药盒 if (currentCol > 0) { - await PortUtil.OpenBoxByColNoForErZhong(currentCol); + bool boxStatus =await PortUtil.BoxLockStateForErZhong(drawerNo, currentCol); + if (boxStatus) + { + logger.Info("药盒已打开,无需再开药盒"); + } + else + { + await PortUtil.OpenBoxByColNoForErZhong(currentCol); + } } currentCol = 0; } @@ -344,13 +352,13 @@ ); if (setting.Value.single != null && setting.Value.single.Contains(this.drawerNo)) { - + } RestData(); stop(); } }); - + } void RestData() @@ -515,6 +523,8 @@ PortUtil.speechSynthesizer.SpeakAsyncCancelAll(); PortUtil.SpeakAsync("请先点取药按钮打开抽屉"); } + + currentCol = args.Data.ColNo; grid.EditRow(args.Data); } diff --git a/MasaBlazorApp3/Pages/DrawerTake.razor b/MasaBlazorApp3/Pages/DrawerTake.razor index 81d8730..f3d9ffe 100644 --- a/MasaBlazorApp3/Pages/DrawerTake.razor +++ b/MasaBlazorApp3/Pages/DrawerTake.razor @@ -554,7 +554,15 @@ //药盒抽屉,开药盒 if (currentCol > 0) { - await PortUtil.OpenBoxByColNoForErZhong(currentCol); + bool boxStatus = await PortUtil.BoxLockStateForErZhong(drawerNo, currentCol); + if (boxStatus) + { + logger.Info("药盒已打开,无需再开药盒"); + } + else + { + await PortUtil.OpenBoxByColNoForErZhong(currentCol); + } } currentCol = 0; } @@ -786,7 +794,7 @@ grid.Reload(); } - void OnCellClick(DataGridCellMouseEventArgs args) + async Task OnCellClick(DataGridCellMouseEventArgs args) { // if (args.Data.BoardType.ToString().Contains("3")) // { @@ -805,7 +813,22 @@ PortUtil.speechSynthesizer.SpeakAsyncCancelAll(); PortUtil.SpeakAsync("请先点取药按钮打开抽屉"); } - currentCol = args.Data.ColNo; + if (setting.Value.box.Contains(args.Data.DrawerNo)) + { + bool boxStatus=await PortUtil.BoxLockStateForErZhong(args.Data.DrawerNo, args.Data.ColNo); + if(boxStatus) + { + logger.Info("药盒已打开,无需再开药盒"); + } + else + { + currentCol = args.Data.ColNo; + } + } + else + { + currentCol = args.Data.ColNo; + } grid.EditRow(args.Data); } private IDisposable? registration; diff --git a/MasaBlazorApp3/Port/PortUtil.cs b/MasaBlazorApp3/Port/PortUtil.cs index f36e132..5edcab6 100644 --- a/MasaBlazorApp3/Port/PortUtil.cs +++ b/MasaBlazorApp3/Port/PortUtil.cs @@ -1696,14 +1696,24 @@ namespace MasaBlazorApp3.Port #region 药盒操作 // 指定药盒状态查询 - public async Task BoxLockStateForErZhong(int DrawerNo, int ColNo) + public async Task BoxLockStateForErZhong(int DrawerNo, int ColNo) { canBusSerial.DiscardInBuffer(); var channel = Convert.ToInt32(((DrawerNo == 1 ? 22 : 25) + Math.Ceiling((decimal)ColNo / (decimal)3)).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); + byte[] retBuffer = await GetBufferByPort(canBusSerial, 8); + logger.Info($"查询药盒状态返回{ColNo}【{Convert.ToHexString(retBuffer)}】"); + int[] r = retBuffer.Select(it => Convert.ToInt32(it)).ToArray(); + if (r[4] > 0) + { + return true; + } + else + { + return false; + } } /// diff --git a/MasaBlazorApp3/appsettings.json b/MasaBlazorApp3/appsettings.json index d25db9f..546c439 100644 --- a/MasaBlazorApp3/appsettings.json +++ b/MasaBlazorApp3/appsettings.json @@ -24,14 +24,14 @@ //"drawerProtocol": 485, "scanCodePortPath": "COM1", "canBusExsit": true, - "canBusPortPath": "COM2", + "canBusPortPath": "COM9", "totalDrawerCount": 16, "canBusTwoExsit": true, "StorageCan": 1, //第二个can总线端口 //"canBusPortPathTwo": "COM9", //"doorAddr": 0, - //"storageBoxAddr": 0, + "storageBoxAddr": 0, //"fridgePortExist": false, //"fridgePortPath": "COM3" },