From 4dc99d077741548796ddd4845518e8741721dcbf Mon Sep 17 00:00:00 2001 From: liuwf Date: Thu, 14 Mar 2024 11:28:20 +0800 Subject: [PATCH] =?UTF-8?q?change-=E6=88=90=E5=93=81=E4=B8=8B=E7=BA=BF?= =?UTF-8?q?=E6=89=8B=E5=8A=A8=E6=94=BE=E8=A1=8C=E5=8A=A0=E5=AF=86=E7=A0=81?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=EF=BC=8C=E6=B3=A2=E7=89=B9=E7=8E=87=E6=94=BE?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6=EF=BC=8C=E6=9D=A1=E7=A0=81?= =?UTF-8?q?=E7=BB=91=E5=AE=9A=E5=9B=BE=E8=A1=A8=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Service_New/CodeBindingRecordServices.cs | 2 +- .../Business/GunBusiness.cs | 95 ++++---- .../Business/MvCodeHelper.cs | 2 +- .../ViewModels/IndexPageViewModel.cs | 205 ++++++++++-------- .../ViewModels/MainWindowViewModel.cs | 36 ++- .../Views/IndexPageView.xaml | 4 +- Aucma.Core.CodeBinding/appsettings.json | 4 +- .../Business/GunBusiness.cs | 6 +- .../Business/offLineBusiness.cs | 2 +- Aucma.Core.ProductOffLine/Config/AppConfig.cs | 20 ++ .../Views/ChooseDirectionWindow.xaml | 19 +- .../Views/ChooseDirectionWindow.xaml.cs | 88 ++++---- .../Views/HandSendPlcWindow.xaml | 17 ++ .../Views/HandSendPlcWindow.xaml.cs | 79 +++++++ 14 files changed, 381 insertions(+), 198 deletions(-) create mode 100644 Aucma.Core.ProductOffLine/Views/HandSendPlcWindow.xaml create mode 100644 Aucma.Core.ProductOffLine/Views/HandSendPlcWindow.xaml.cs diff --git a/Admin.Core.Service/Service_New/CodeBindingRecordServices.cs b/Admin.Core.Service/Service_New/CodeBindingRecordServices.cs index 32397e0d..9d3496ae 100644 --- a/Admin.Core.Service/Service_New/CodeBindingRecordServices.cs +++ b/Admin.Core.Service/Service_New/CodeBindingRecordServices.cs @@ -39,7 +39,7 @@ namespace Admin.Core.Service { List list = null; var _db = this.BaseDal.Db; - list = await _db.CopyNew().Ado.SqlQueryAsync("SELECT BOX_NAME as BoxName,COUNT(*) as Amount FROM CODE_BINDING WHERE PRODUCT_CODE IS NOT NULL GROUP BY BOX_NAME "); + list = await _db.CopyNew().Ado.SqlQueryAsync("SELECT BOX_NAME as BoxName, COUNT(*) as Amount FROM CODE_BINDING WHERE PRODUCT_CODE IS NOT NULL AND TRUNC(RECORD_TIME2) = TRUNC(SYSDATE) GROUP BY BOX_NAME"); list.OrderBy(x =>x.BoxName); return list; } diff --git a/Aucma.Core.CodeBinding/Business/GunBusiness.cs b/Aucma.Core.CodeBinding/Business/GunBusiness.cs index a21237f7..ff270e06 100644 --- a/Aucma.Core.CodeBinding/Business/GunBusiness.cs +++ b/Aucma.Core.CodeBinding/Business/GunBusiness.cs @@ -1,4 +1,6 @@ -using log4net; +using Admin.Core.Common; +using Aucma.Core.Scanner; +using log4net; using System; using System.Collections.Generic; using System.IO.Ports; @@ -14,8 +16,33 @@ namespace Aucma.Core.CodeBinding.Business /// public class GunBusiness { + + private static SerialPort serialPort = new SerialPort(); + + private static List allScanners = Appsettings.app("ScannerServer").ToList(); + // 内胆扫码器ip + private static string MesScannerIp = allScanners.First(x => x.Name == "mes扫码器").Ip; + // 箱壳扫码器ip + private static string SNScannerIp = allScanners.First(x => x.Name == "sn扫码器").Ip; + + /// + /// code1扫码信息刷新 + /// + /// + public delegate void BindingReceiveCode(string code, string ip); + public static event BindingReceiveCode? BindingReceiveCodeEvent; + #region 单例实现 private static readonly GunBusiness lazy = new GunBusiness(); + + /// + /// 扫码委托 + /// + /// + /// + public delegate void RefreshMaterialCodeStr(string materialCodeStr, string ip); + public static event RefreshMaterialCodeStr RefreshMaterialCodeStrEvent; + public static GunBusiness Instance { get @@ -28,7 +55,7 @@ namespace Aucma.Core.CodeBinding.Business private static readonly log4net.ILog logHelper = LogManager.GetLogger(typeof(GunBusiness)); - + //初始化串口并启动接收数据 public static void InstanceSerialPort3() { @@ -36,11 +63,11 @@ namespace Aucma.Core.CodeBinding.Business { string port = System.IO.Ports.SerialPort.GetPortNames().FirstOrDefault(); //实例化串行端口 - SerialPort serialPort = new SerialPort(); + //端口名 注:因为使用的是USB转RS232 所以去设备管理器中查看一下虚拟com口的名字 serialPort.PortName = port;// portName; //波特率 - serialPort.BaudRate = 9600; + serialPort.BaudRate = 115200; //奇偶校验 serialPort.Parity = Parity.None; //停止位 @@ -49,8 +76,10 @@ namespace Aucma.Core.CodeBinding.Business serialPort.DataBits = 8; //忽略null字节 serialPort.DiscardNull = true; + //接收事件 - serialPort.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived); + serialPort.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(serialPort1_DataReceived); + //开启串口 serialPort.Open(); } @@ -60,56 +89,30 @@ namespace Aucma.Core.CodeBinding.Business } } - - /// - /// 接收数据 - /// - /// - /// - static void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e) + private static void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) { - try - { - - SerialPort serialPort = (SerialPort)sender; - - string code = serialPort.ReadExisting(); - - if (string.IsNullOrEmpty(code)) - { - return; - } - //业务处理 - Console.WriteLine("获取数据:" + code.Trim()); + Thread.Sleep(50); + int nums = serialPort.BytesToRead; + byte[] receiveBytes = new byte[nums]; + serialPort.Read(receiveBytes, 0, nums); - } - catch (Exception ex) - { - Console.Write(ex.ToString()); - } - } - private static void ReceiveData(object serialPortobj) - { - try - { - SerialPort serialPort = (SerialPort)serialPortobj; + StringBuilder sb = new StringBuilder(); - string code = serialPort.ReadExisting(); + string str = Encoding.ASCII.GetString(receiveBytes); - if (string.IsNullOrEmpty(code)) - { - return; - } - //业务处理 - Console.WriteLine("获取数据:" + code.Trim()); + if (str.Substring(0, 1) == "B") + { + // mes条码 + RefreshMaterialCodeStrEvent?.Invoke(str, MesScannerIp); } - catch (Exception ex) + else { - logHelper.Error(ex.Message); + //SN码 + RefreshMaterialCodeStrEvent?.Invoke(str,SNScannerIp); } + sb.Clear(); } - } } diff --git a/Aucma.Core.CodeBinding/Business/MvCodeHelper.cs b/Aucma.Core.CodeBinding/Business/MvCodeHelper.cs index a1a0fee5..a7cafecc 100644 --- a/Aucma.Core.CodeBinding/Business/MvCodeHelper.cs +++ b/Aucma.Core.CodeBinding/Business/MvCodeHelper.cs @@ -134,7 +134,7 @@ namespace Aucma.Core.CodeBinding.Business // Console.WriteLine("CodeNum[" + Convert.ToString(stBcrResult.nCodeNum) + "]"); if (stBcrResult.nCodeNum == 0) { - NoReadEvent?.Invoke(ShellScannerIp); + NoReadEvent?.Invoke(LinerScannerIp); Console.WriteLine(DateTime.Now + ":mes--->No Read 处理"); log.Info(DateTime.Now + ":mes--->No Read 处理"); // 更新存活时间 diff --git a/Aucma.Core.CodeBinding/ViewModels/IndexPageViewModel.cs b/Aucma.Core.CodeBinding/ViewModels/IndexPageViewModel.cs index ed887a75..805635c5 100644 --- a/Aucma.Core.CodeBinding/ViewModels/IndexPageViewModel.cs +++ b/Aucma.Core.CodeBinding/ViewModels/IndexPageViewModel.cs @@ -37,6 +37,7 @@ using System.Windows.Documents; using Admin.Core.Common; using Aucma.Core.CodeBinding.Business; using Aucma.Core.Scanner; +using LiveCharts.Defaults; /* * 首页信息 */ @@ -70,26 +71,24 @@ namespace Aucma.Core.CodeBinding.ViewModels _printBarCodeServices = App.ServiceProvider.GetService(); _iMaterialCompletionServices = App.ServiceProvider.GetService(); Business.MvCodeHelper.BindingReceiveCodeEvent += ReceiveCode; + GunBusiness.RefreshMaterialCodeStrEvent += ReceiveCode; Business.MvCodeHelper.NoReadEvent += ReceiveNoRead; + LoadData(); + //实时绑定条码和实时下发plc放行信号 realBindingAndSendPlc(); LoadCharts(); + //Task.Run(() => //{ - // while (true) - // { - - // Random result = new Random(); - // Thread.Sleep(20000); - // receiveCode1("B24010181060282920"+ result.Next(100,999)); - // Thread.Sleep(1000); - // receiveCode2("16160030000000910"+ result.Next(100, 999)); - // } - - + // Thread.Sleep(4000); + // LoadCharts(); + // Thread.Sleep(3000); + // LoadCharts(); //}); + } catch (Exception ex) @@ -198,68 +197,80 @@ namespace Aucma.Core.CodeBinding.ViewModels #region 加载DataGrid数据 private async void LoadData() { - //try - //{ - // ListItems.Clear(); - // //// 赋值 - // //Code1 = "B236000007811023002"; - // //// Code1Time = "2023-10-23 16:05:23"; - // //Code2 = "B236000007811023002"; - // //// Code2Time = "2023-10-23 16:05:23"; - // //BindingInfo = "条码[B236000007811023002]和SN条码[B236000007811023002]绑定成功!"; - // LoadCharts(); + try + { - // List records = null; - // records = await _codeBindingRecordServices.QueryAsync(x => x.BoxCode != null, "RECORD_TIME2 desc"); + // LoadCharts(); - // if (records != null) - // { - // Application.Current.Dispatcher.Invoke(() => - // { - // foreach (CodeBindingRecord record in records) - // { - // ListItems.Add(new ReaderInfo() { No = ListItems.Count + 1, BoxCode = record.BoxCode, ProductCode = record.ProductCode, BoxName = record.BoxName, BindingResult = record.BindingResult, IsPlcPass = record.isPlcPass == 2 ? "plc放行成功" : "待放行", RecordTime = record.RecordTime2.ToString() }); - // } - // }); - // } - //} - //catch (Exception) - //{ - //} + List records = null; + records = _codeBindingRecordServices.QueryAsync(x => x.BoxCode != null && x.RecordTime2 >= DateTime.Today && x.RecordTime2 < DateTime.Today.AddDays(1)).Result; + + if (records != null && records.Count>0) + { + records = records.OrderBy(x => x.RecordTime2).ToList(); + Application.Current.Dispatcher.Invoke(() => + { + ListItems.Clear(); + + foreach (CodeBindingRecord record in records) + { + ListItems.Insert(0, new ReaderInfo() + { + No = ListItems.Count + 1, + BoxCode = record.BoxCode, + ProductCode = record.ProductCode, + BoxName = record.BoxName, + BindingResult = record.BindingResult, + RecordTime = record.RecordTime2.ToString() + }); + + + } + }); + } + } + catch (Exception) + { + } } // 修改为统计近一天白班或夜班 private async void LoadCharts() { try { - App.Current.Dispatcher.Invoke( () => + List list = _codeBindingRecordServices.QueryCharts().Result; + if (list == null || list.Count == 0) return; + App.Current.Dispatcher.Invoke(() => { - ProductionHourList = new List(); - // List list = _codeBindingRecordServices.QueryCharts().Result; + + ProductionHourList.Clear(); + ModelStatistics.Clear(); // 图表赋值 - ChartValues achievement = new ChartValues(); - List chartList = new List(); - // if (list == null) return; - - - achievement.Add(74); - achievement.Add(78); - achievement.Add(69); - achievement.Add(43); - - ProductionHourList.Add("SC-230,11W"); - ProductionHourList.Add("SC-439,箱体"); - ProductionHourList.Add("SC-255,H"); - ProductionHourList.Add("SC-317,箱体"); + ChartValues achievement = new ChartValues(); + + int i = 0; + double total = 0; + foreach(var item in list) + { + ProductionHourList.Add(GetSubstringBetweenCommas(item.BoxName)); + // achievement.Add(item.Amount); + achievement.Add(new ObservablePoint(i, item.Amount)); + total += item.Amount; + i++; + } + //加一个汇总柱状图 + ProductionHourList.Add("合计"); + achievement.Add(new ObservablePoint(i, total)); + var column = new ColumnSeries(); column.DataLabels = true; column.Title = "型号"; column.Values = achievement; column.Foreground = Brushes.White; + ModelStatistics.Add(column); - ModelStatistics.Add(column); - + }); } catch (Exception) @@ -267,22 +278,42 @@ namespace Aucma.Core.CodeBinding.ViewModels throw; } - - + + } - // 测试方法 - private async void add() - { - //DateTime startTime = DateTime.Now; - //Thread.Sleep(5000); - //TimeSpan elapsedTime = DateTime.Now - startTime; - //Console.WriteLine(elapsedTime.TotalSeconds); - - + /// + /// 截取两个逗号之间的字符串 + /// + /// + /// + static string GetSubstringBetweenCommas(string input) + { + if (input == null) return null; + // 找到第一个逗号的位置 + int firstCommaIndex = input.IndexOf(','); + if (firstCommaIndex != -1) + { + // 找到第二个逗号的位置 + int secondCommaIndex = input.IndexOf(',', firstCommaIndex + 1); + if (secondCommaIndex != -1) + { + // 使用Substring截取第一个逗号和第二个逗号之间的字符 + return input.Substring(firstCommaIndex + 1, secondCommaIndex - firstCommaIndex - 1); + } + else + { + return null; + } + } + else + { + return null; + } } + #endregion #region 参数定义 @@ -359,7 +390,7 @@ namespace Aucma.Core.CodeBinding.ViewModels /// /// 日产量柱状图X轴日期 /// - private List productionHourList; + private List productionHourList =new List(); public List ProductionHourList { @@ -409,14 +440,20 @@ namespace Aucma.Core.CodeBinding.ViewModels // 全局变量赋值 code1Str = string.Empty ; code2Str = string.Empty; + // 页面扫码信息清空 + Code1 = code1Str; + Code2 = code2Str; SendPlcStop(); RefreshAndWriteLog("MES条码NoRead,线体停止"); } - else + else if(model.Id == 2) { - log.Info("MES条码NoRead,线体停止"); + RefreshAndWriteLog("SN条码NoRead,线体停止"); code1Str = string.Empty; code2Str = string.Empty; + // 页面扫码信息清空 + Code1 = code1Str; + Code2 = code2Str; SendPlcStop(); } } @@ -429,8 +466,7 @@ namespace Aucma.Core.CodeBinding.ViewModels private void ReceiveCode(string codeStr,string scannerIp) { - Task.Run(() => - { + ScannerModel model = allScanners.FirstOrDefault(x => x.Ip == scannerIp); if (model.Id == 1) { @@ -446,8 +482,8 @@ namespace Aucma.Core.CodeBinding.ViewModels // 全局变量赋值,mes条码扫描后使用 code2Str = codeStr; RefreshCode2(codeStr); + } - }); #region // 2.创建任务更新数据库条码1 @@ -483,22 +519,7 @@ namespace Aucma.Core.CodeBinding.ViewModels DateTime time = System.DateTime.Now; Code2 = code2; Code2Time = time.ToString(); - // Code2 = record.ProductCode; - //// Code2Time = record.RecordTime2.ToString(); - // if (record.isPlcPass==2) - // { - // BindingInfo = "条码【" + record.BoxCode + "】与SN码【" + record.ProductCode + "】绑定成功,下发Plc放行成功"; - // } - // else - // { - // BindingInfo = "条码【" + record.BoxCode + "】与SN码【" + record.ProductCode + "】下发Plc放行失败"; - // } - - // Application.Current.Dispatcher.Invoke(() => - // { - // // ReaderInfo readerToUpdate = (ReaderInfo)ListItems.Select(item => item.No == 2); - // ListItems.Add(new ReaderInfo() { No = ListItems.Count+1, BoxCode = record.BoxCode, ProductCode = record.ProductCode, BoxName = record.BoxName,BindingResult = record.BindingResult, IsPlcPass = record.isPlcPass==2?"plc放行成功":"",RecordTime = record.RecordTime2.ToString() }); - // }); + } @@ -548,7 +569,7 @@ namespace Aucma.Core.CodeBinding.ViewModels } record.BoxCode = code1; record.ProductCode = code2; - record.RecordTime1 = System.DateTime.Now; + //record.RecordTime1 = System.DateTime.Now; record.RecordTime2 = System.DateTime.Now; record.isPlcPass = 1; record.BindingResult = "成功"; @@ -581,6 +602,10 @@ namespace Aucma.Core.CodeBinding.ViewModels #endregion + SendPlcPass(); + //刷新页面 + LoadData(); + LoadCharts(); } else { diff --git a/Aucma.Core.CodeBinding/ViewModels/MainWindowViewModel.cs b/Aucma.Core.CodeBinding/ViewModels/MainWindowViewModel.cs index 0a4a602b..83e6b959 100644 --- a/Aucma.Core.CodeBinding/ViewModels/MainWindowViewModel.cs +++ b/Aucma.Core.CodeBinding/ViewModels/MainWindowViewModel.cs @@ -8,7 +8,6 @@ using System.Diagnostics; using System.Threading; using NPOI.HSSF.Record; using System.Threading.Tasks; -using Aucma.Core.PLc; using System.Linq; using Admin.Core.Common; using Aucma.Core.Scanner; @@ -23,6 +22,7 @@ using static ICSharpCode.SharpZipLib.Zip.ExtendedUnixData; using System.Windows.Threading; using Aucma.Core.CodeBinding.Business; using MvCodeHelper = Aucma.Core.CodeBinding.Business.MvCodeHelper; +using Aucma.Core.HwPLc; namespace Aucma.Core.CodeBinding.ViewModels { @@ -48,9 +48,9 @@ namespace Aucma.Core.CodeBinding.ViewModels timer.Interval = TimeSpan.FromSeconds(1); timer.Tick += Timer_Tick; timer.Start(); - GunBusiness.InstanceSerialPort3(); + - Job_AllState_Quartz.RefreshStateEvent += RefreshStatus; + // Job_AllState_Quartz.RefreshStateEvent += RefreshStatus; MvCodeHelper.RefreshStateEvent += RefreshScanner; InitHikRobot(); } @@ -63,16 +63,36 @@ namespace Aucma.Core.CodeBinding.ViewModels Task.Run(() => { Thread.Sleep(2000); - //MvCodeHelper1.DeviceListAcq();//获取创建设备 - // MvCodeHelper1.StartGrab(); // 开启触发扫码接收数据 + + Business.MvCodeHelper.Shell(); + }); Task.Run(() => { - Thread.Sleep(3000); - //MvCodeHelper1.DeviceListAcq();//获取创建设备 - // MvCodeHelper1.StartGrab(); // 开启触发扫码接收数据 + Thread.Sleep(4000); + try + { + var obj = PlcHelper.melsecList.FirstOrDefault(d => d.EquipName.Equals("条码绑定Plc")); + if (obj != null) + { + PlcState(true); + } + else + { + PlcState(false); + } + + }catch (Exception ex) + { + PlcState(false); + } + + + + GunBusiness.InstanceSerialPort3(); + Business.MvCodeHelper.Liner(); }); diff --git a/Aucma.Core.CodeBinding/Views/IndexPageView.xaml b/Aucma.Core.CodeBinding/Views/IndexPageView.xaml index a08ba4a7..9d3afa20 100644 --- a/Aucma.Core.CodeBinding/Views/IndexPageView.xaml +++ b/Aucma.Core.CodeBinding/Views/IndexPageView.xaml @@ -171,7 +171,7 @@ - + @@ -214,7 +214,7 @@ - + diff --git a/Aucma.Core.CodeBinding/appsettings.json b/Aucma.Core.CodeBinding/appsettings.json index 6c82c115..0a9f8835 100644 --- a/Aucma.Core.CodeBinding/appsettings.json +++ b/Aucma.Core.CodeBinding/appsettings.json @@ -187,7 +187,7 @@ "Enabled": true }, "QuartzNetJob": { - "Enabled": true + "Enabled": false }, "Scanner": { //扫码器 "Enabled": false @@ -214,6 +214,8 @@ "EquipName": "条码绑定Plc", "PlcType": "Melsec", "Enabled": true, + //"IP": "127.0.0.1", + // "Port": 6000 "IP": "10.10.92.70", "Port": 2014 } diff --git a/Aucma.Core.ProductOffLine/Business/GunBusiness.cs b/Aucma.Core.ProductOffLine/Business/GunBusiness.cs index b00d2cf5..168a647d 100644 --- a/Aucma.Core.ProductOffLine/Business/GunBusiness.cs +++ b/Aucma.Core.ProductOffLine/Business/GunBusiness.cs @@ -60,8 +60,8 @@ namespace Aucma.Core.ProductOffLine.Business //端口名 注:因为使用的是USB转RS232 所以去设备管理器中查看一下虚拟com口的名字 serialPort.PortName = port;// portName; - //波特率 - serialPort.BaudRate = 115200; + //波特率 霍尼威尔扫码枪115200,普通9600 + serialPort.BaudRate = int.Parse(appConfig.BaudRate); ; //奇偶校验 serialPort.Parity = Parity.None; //停止位 @@ -92,7 +92,7 @@ namespace Aucma.Core.ProductOffLine.Business StringBuilder sb = new StringBuilder(); - string str = Encoding.ASCII.GetString(receiveBytes); + string str = Encoding.ASCII.GetString(receiveBytes).Replace("\r\n", ""); string ip = DirectionToIP(); if (!string.IsNullOrEmpty(ip)) { diff --git a/Aucma.Core.ProductOffLine/Business/offLineBusiness.cs b/Aucma.Core.ProductOffLine/Business/offLineBusiness.cs index 0dfd8314..e71a10b1 100644 --- a/Aucma.Core.ProductOffLine/Business/offLineBusiness.cs +++ b/Aucma.Core.ProductOffLine/Business/offLineBusiness.cs @@ -110,7 +110,7 @@ namespace Aucma.Core.ProductOffLine.Business { MvCodeHelper.RefreshMaterialCodeStrEvent += MaterialBarScan; GunBusiness.RefreshMaterialCodeStrEvent += MaterialBarScan; - ChooseDirectionWindow.SendPlcPassEvent += DownLoadPassFlag; + HandSendPlcWindow.SendPlcPassEvent += DownLoadPassFlag; // test(); } diff --git a/Aucma.Core.ProductOffLine/Config/AppConfig.cs b/Aucma.Core.ProductOffLine/Config/AppConfig.cs index 0a14863f..8d3c988b 100644 --- a/Aucma.Core.ProductOffLine/Config/AppConfig.cs +++ b/Aucma.Core.ProductOffLine/Config/AppConfig.cs @@ -61,5 +61,25 @@ namespace Aucma.Core.ProductOffLine.Config get { return iniHelper.IniReadValue("system", "GunDirection"); } set { iniHelper.IniWriteValue("system", "GunDirection", value); } } + + /// + /// 扫码枪波特率:普通9600,霍尼威尔:115200 + /// + public string BaudRate + { + get { return iniHelper.IniReadValue("system", "BaudRate"); } + set { iniHelper.IniWriteValue("system", "BaudRate", value); } + } + + /// + /// 手动放行按钮密码 + /// + public string PassWord + { + get { return iniHelper.IniReadValue("system", "PassWord"); } + set { iniHelper.IniWriteValue("system", "PassWord", value); } + } + + } } diff --git a/Aucma.Core.ProductOffLine/Views/ChooseDirectionWindow.xaml b/Aucma.Core.ProductOffLine/Views/ChooseDirectionWindow.xaml index 19b2e790..b6c554c0 100644 --- a/Aucma.Core.ProductOffLine/Views/ChooseDirectionWindow.xaml +++ b/Aucma.Core.ProductOffLine/Views/ChooseDirectionWindow.xaml @@ -15,19 +15,26 @@ - + + -