diff --git a/Aucma.Core.BoxFoam/Aucma.Core.BoxFoam.csproj b/Aucma.Core.BoxFoam/Aucma.Core.BoxFoam.csproj index ceb32918..a4a39d03 100644 --- a/Aucma.Core.BoxFoam/Aucma.Core.BoxFoam.csproj +++ b/Aucma.Core.BoxFoam/Aucma.Core.BoxFoam.csproj @@ -83,9 +83,6 @@ ..\dll\LiveCharts.Wpf.dll - - ..\dll\MvCodeReaderSDK.Net.dll - diff --git a/Aucma.Core.BoxFoam/Business/InStoreBusiness.cs b/Aucma.Core.BoxFoam/Business/InStoreBusiness.cs index b0e58c3e..1e932157 100644 --- a/Aucma.Core.BoxFoam/Business/InStoreBusiness.cs +++ b/Aucma.Core.BoxFoam/Business/InStoreBusiness.cs @@ -18,6 +18,7 @@ using System.Windows.Forms; using Admin.Core.Model.Model_New; using static ICSharpCode.SharpZipLib.Zip.ExtendedUnixData; using Microsoft.IdentityModel.Logging; +using Admin.Core.Socket; namespace Aucma.Core.BoxFoam.Business { @@ -117,7 +118,7 @@ namespace Aucma.Core.BoxFoam.Business public InStoreBusiness() { - MvCodeHelper.PQKReceiveCodeEvent += NewTask; + TouchSocketService.ReceiveCodeDelegateEvent += NewTask; storeCode = Appsettings.app("StoreInfo", "BeforeStoreCode");//泡前库code #region 更新库数据 @@ -136,7 +137,7 @@ namespace Aucma.Core.BoxFoam.Business /// /// /// - public async Task NewTask(string materialBarCode) + public async Task NewTask(string IP,string materialBarCode) { if (string.IsNullOrEmpty(materialBarCode)) { diff --git a/Aucma.Core.BoxFoam/Business/MvCodeHelper.cs b/Aucma.Core.BoxFoam/Business/MvCodeHelper.cs deleted file mode 100644 index 603735f5..00000000 --- a/Aucma.Core.BoxFoam/Business/MvCodeHelper.cs +++ /dev/null @@ -1,285 +0,0 @@ -using Admin.Core.Common; -using Aucma.Core.Scanner; -using MvCodeReaderSDKNet; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Runtime.InteropServices; -using System.Text; -using System.Threading.Tasks; - -namespace Aucma.Core.BoxFoam.Business -{ - public class MvCodeHelper - { - - //private static AppConfig appConfig = AppConfig.Instance; - public static bool m_bGrabbing = true; - private static string lastCode; - private static List allScanners = Appsettings.app("ScannerServer").ToList(); - // 内胆扫码器ip - private static string LinerScannerIp = allScanners.First(x => x.Name == "扫码器1").Ip; - - - #region 委托事件 - - /// - /// 泡前库扫码 - /// - /// - public delegate Task PQKReceiveCode(string code1); - public static event PQKReceiveCode? PQKReceiveCodeEvent; - - /// - /// 日志信息刷新 - /// - /// - public delegate void RefreshLogMessage(string message); - public static event RefreshLogMessage RefreshLogMessageEvent; - #endregion - - - public static void LinerImageCallbackFunc(IntPtr pData, IntPtr pstFrameInfoEx2, IntPtr pUser) - { - var stFrameInfo = (MvCodeReader.MV_CODEREADER_IMAGE_OUT_INFO_EX2)Marshal.PtrToStructure(pstFrameInfoEx2, typeof(MvCodeReader.MV_CODEREADER_IMAGE_OUT_INFO_EX2)); - - MvCodeReader.MV_CODEREADER_RESULT_BCR_EX2 stBcrResult = (MvCodeReader.MV_CODEREADER_RESULT_BCR_EX2)Marshal.PtrToStructure(stFrameInfo.UnparsedBcrList.pstCodeListEx2, typeof(MvCodeReader.MV_CODEREADER_RESULT_BCR_EX2)); - - // Console.WriteLine("CodeNum[" + Convert.ToString(stBcrResult.nCodeNum) + "]"); - if (stBcrResult.nCodeNum == 0) - { - Console.WriteLine("liner--->No Read 处理"); - } - for (Int32 i = 0; i < stBcrResult.nCodeNum; i++) - { - bool bIsValidUTF8 = IsTextUTF8(stBcrResult.stBcrInfoEx2[i].chCode); - if (bIsValidUTF8) - { - string strCode = Encoding.UTF8.GetString(stBcrResult.stBcrInfoEx2[i].chCode); - Console.WriteLine("Get CodeNum: " + "CodeNum[" + i.ToString() + "], CodeString[" + strCode.Trim().TrimEnd('\0') + "]"); - } - else - { - string strCode = Encoding.GetEncoding("GB2312").GetString(stBcrResult.stBcrInfoEx2[i].chCode); - Console.WriteLine("Get CodeNum: " + "CodeNum[" + i.ToString() + "], CodeString[" + strCode.Trim().TrimEnd('\0') + "]"); - // RefreshMaterialCodeStrEvent?.Invoke(strCode.Trim().TrimEnd('\0'), LinerScannerIp); - // 业务处理 - Console.WriteLine(strCode.Trim().TrimEnd('\0')); - PQKReceiveCodeEvent?.Invoke(strCode.Trim().TrimEnd('\0')); - } - } - - MvCodeReader.MV_CODEREADER_OCR_INFO_LIST stOcrInfo = (MvCodeReader.MV_CODEREADER_OCR_INFO_LIST)Marshal.PtrToStructure(stFrameInfo.UnparsedOcrList.pstOcrList, typeof(MvCodeReader.MV_CODEREADER_OCR_INFO_LIST)); - - Console.WriteLine("ocrAllNum[" + Convert.ToString(stOcrInfo.nOCRAllNum) + "]"); - for (int i = 0; i < stOcrInfo.nOCRAllNum; i++) - { - string strOcrCharCode = Encoding.UTF8.GetString(stOcrInfo.stOcrRowInfo[i].chOcr); - Console.WriteLine("Get OcrInfo:" + "ocrNum[" + i.ToString() + "], ocrLen[" + Convert.ToString(stOcrInfo.stOcrRowInfo[i].nOcrLen) + "], ocrChar[" + strOcrCharCode.Trim().TrimEnd('\0') + "]"); - } - } - - - - public static void Liner() - { - - MvCodeReader.cbOutputEx2delegate ImageCallback; - - MvCodeReader.MV_CODEREADER_IMAGE_OUT_INFO_EX2 stFrameInfo = new MvCodeReader.MV_CODEREADER_IMAGE_OUT_INFO_EX2(); - MvCodeReader device = new MvCodeReader(); - int nRet = MvCodeReader.MV_CODEREADER_OK; - - do - { - // ch:枚举设备 | en:Enum device - MvCodeReader.MV_CODEREADER_DEVICE_INFO_LIST stDevList = new MvCodeReader.MV_CODEREADER_DEVICE_INFO_LIST(); - nRet = MvCodeReader.MV_CODEREADER_EnumDevices_NET(ref stDevList, MvCodeReader.MV_CODEREADER_GIGE_DEVICE); - if (MvCodeReader.MV_CODEREADER_OK != nRet) - { - Console.WriteLine("Enum device failed:{0:x8}", nRet); - break; - } - Console.WriteLine("Enum device count : " + Convert.ToString(stDevList.nDeviceNum)); - if (0 == stDevList.nDeviceNum) - { - break; - } - - MvCodeReader.MV_CODEREADER_DEVICE_INFO stDevInfo; // 通用设备信息 - Int32 nDevIndex = -1; - // ch:打印设备信息 | en:Print device info - for (Int32 i = 0; i < stDevList.nDeviceNum; i++) - { - stDevInfo = (MvCodeReader.MV_CODEREADER_DEVICE_INFO)Marshal.PtrToStructure(stDevList.pDeviceInfo[i], typeof(MvCodeReader.MV_CODEREADER_DEVICE_INFO)); - - if (MvCodeReader.MV_CODEREADER_GIGE_DEVICE == stDevInfo.nTLayerType) - { - MvCodeReader.MV_CODEREADER_GIGE_DEVICE_INFO stGigEDeviceInfo = (MvCodeReader.MV_CODEREADER_GIGE_DEVICE_INFO)MvCodeReader.ByteToStruct(stDevInfo.SpecialInfo.stGigEInfo, typeof(MvCodeReader.MV_CODEREADER_GIGE_DEVICE_INFO)); - uint nIp1 = ((stGigEDeviceInfo.nCurrentIp & 0xff000000) >> 24); - uint nIp2 = ((stGigEDeviceInfo.nCurrentIp & 0x00ff0000) >> 16); - uint nIp3 = ((stGigEDeviceInfo.nCurrentIp & 0x0000ff00) >> 8); - uint nIp4 = (stGigEDeviceInfo.nCurrentIp & 0x000000ff); - // Console.WriteLine("\n" + i.ToString() + ": [GigE] User Define Name : " + stGigEDeviceInfo.chUserDefinedName); - string ip = ((stGigEDeviceInfo.nCurrentIp & 0xff000000) >> 24) + "." + ((stGigEDeviceInfo.nCurrentIp & 0x00ff0000) >> 16) + "." + ((stGigEDeviceInfo.nCurrentIp & 0x0000ff00) >> 8) + "." + (stGigEDeviceInfo.nCurrentIp & 0x000000ff); - string ipStr = nIp1 + "." + nIp2 + "." + nIp3 + "." + nIp4; - if (ipStr == LinerScannerIp) - { - Console.WriteLine("device IP :" + ipStr); - nDevIndex = i; - } - } - } - if (nDevIndex < 0) return; - stDevInfo = (MvCodeReader.MV_CODEREADER_DEVICE_INFO)Marshal.PtrToStructure(stDevList.pDeviceInfo[nDevIndex], typeof(MvCodeReader.MV_CODEREADER_DEVICE_INFO)); - - // ch:创建设备 | en:Create device - nRet = device.MV_CODEREADER_CreateHandle_NET(ref stDevInfo); - if (MvCodeReader.MV_CODEREADER_OK != nRet) - { - Console.WriteLine("Create device failed:{0:x8}", nRet); - break; - } - - // ch:打开设备 | en:Open device - nRet = device.MV_CODEREADER_OpenDevice_NET(); - if (MvCodeReader.MV_CODEREADER_OK != nRet) - { - Console.WriteLine("Open device failed:{0:x8}", nRet); - break; - } - - - // ch:注册回调函数 | en:Register image callback - ImageCallback = new MvCodeReader.cbOutputEx2delegate(LinerImageCallbackFunc); - nRet = device.MV_CODEREADER_RegisterImageCallBackEx2_NET(ImageCallback, IntPtr.Zero); - if (MvCodeReader.MV_CODEREADER_OK != nRet) - { - Console.WriteLine("Register image callback failed!"); - break; - } - - // ch:开启抓图 || en: start grab image - nRet = device.MV_CODEREADER_StartGrabbing_NET(); - if (MvCodeReader.MV_CODEREADER_OK != nRet) - { - Console.WriteLine("Start grabbing failed:{0:x8}", nRet); - break; - } - - Console.WriteLine("Press enter to exit"); - Console.ReadLine(); - - // ch:停止抓图 | en:Stop grabbing - nRet = device.MV_CODEREADER_StopGrabbing_NET(); - if (MvCodeReader.MV_CODEREADER_OK != nRet) - { - Console.WriteLine("Stop grabbing failed{0:x8}", nRet); - break; - } - - // ch:关闭设备 | en:Close device - nRet = device.MV_CODEREADER_CloseDevice_NET(); - if (MvCodeReader.MV_CODEREADER_OK != nRet) - { - Console.WriteLine("Close device failed{0:x8}", nRet); - break; - } - - // ch:销毁设备 | en:Destroy device - nRet = device.MV_CODEREADER_DestroyHandle_NET(); - if (MvCodeReader.MV_CODEREADER_OK != nRet) - { - Console.WriteLine("Destroy device failed:{0:x8}", nRet); - break; - } - } while (false); - - if (MvCodeReader.MV_CODEREADER_OK != nRet) - { - // ch:销毁设备 | en:Destroy device - nRet = device.MV_CODEREADER_DestroyHandle_NET(); - if (MvCodeReader.MV_CODEREADER_OK != nRet) - { - Console.WriteLine("Destroy device failed:{0:x8}", nRet); - } - } - - } - - #region 判断字符编码 - /// - /// 判断字符编码 - /// - /// - /// - public static bool IsTextUTF8(byte[] inputStream) - { - int encodingBytesCount = 0; - bool allTextsAreASCIIChars = true; - - for (int i = 0; i < inputStream.Length; i++) - { - byte current = inputStream[i]; - - if ((current & 0x80) == 0x80) - { - allTextsAreASCIIChars = false; - } - // First byte - if (encodingBytesCount == 0) - { - if ((current & 0x80) == 0) - { - // ASCII chars, from 0x00-0x7F - continue; - } - - if ((current & 0xC0) == 0xC0) - { - encodingBytesCount = 1; - current <<= 2; - - // More than two bytes used to encoding a unicode char. - // Calculate the real length. - while ((current & 0x80) == 0x80) - { - current <<= 1; - encodingBytesCount++; - } - } - else - { - // Invalid bits structure for UTF8 encoding rule. - return false; - } - } - else - { - // Following bytes, must start with 10. - if ((current & 0xC0) == 0x80) - { - encodingBytesCount--; - } - else - { - // Invalid bits structure for UTF8 encoding rule. - return false; - } - } - } - if (encodingBytesCount != 0) - { - // Invalid bits structure for UTF8 encoding rule. - // Wrong following bytes count. - return false; - } - // Although UTF8 supports encoding for ASCII chars, we regard as a input stream, whose contents are all ASCII as default encoding. - return !allTextsAreASCIIChars; - } - - #endregion - - - } -} diff --git a/Aucma.Core.BoxFoam/Startup.cs b/Aucma.Core.BoxFoam/Startup.cs index 8bd53e50..f0e51902 100644 --- a/Aucma.Core.BoxFoam/Startup.cs +++ b/Aucma.Core.BoxFoam/Startup.cs @@ -6,6 +6,7 @@ using Admin.Core.IService.ISys; using Admin.Core.Model; using Admin.Core.Repository; using Admin.Core.Service; +using Admin.Core.Socket; using Admin.Core.Tasks; using Aucma.Core.RunPlc; using Aucma.Core.Scanner; @@ -14,6 +15,7 @@ using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; +using System.Net.Sockets; using System.Text; namespace Aucma.Core.BoxFoam @@ -63,13 +65,14 @@ namespace Aucma.Core.BoxFoam AddServices(services); //ɨ - services.AddScannerSetup(); + //services.AddScannerSetup(); // // services.AddJobSetup(); //PLC services.AddPlcSetup(); - + //socketɨ + services.AddTouchSocketSetup(); //ֱ֧ȫ :֧ System.Text.Encoding.GetEncoding("GB2312") System.Text.Encoding.GetEncoding("GB18030") Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); } @@ -90,7 +93,7 @@ namespace Aucma.Core.BoxFoam /// /// /// - public void Configure(IApplicationBuilder app, IRunPlcService runPlcService) + public void Configure(IApplicationBuilder app, IRunPlcService runPlcService, ITouchSocketService socket) { // ʹþ̬ļ app.UseStaticFiles(); @@ -102,8 +105,7 @@ namespace Aucma.Core.BoxFoam //PLC app.UsePlcMildd(runPlcService); //ɨ - //app.UseScannerMildd(scannerService); - + app.UseTouchSocketMildd(socket); } #region ע diff --git a/Aucma.Core.BoxFoam/ViewModels/MainWindowViewModel.cs b/Aucma.Core.BoxFoam/ViewModels/MainWindowViewModel.cs index 62fb1c86..7ce2d2f8 100644 --- a/Aucma.Core.BoxFoam/ViewModels/MainWindowViewModel.cs +++ b/Aucma.Core.BoxFoam/ViewModels/MainWindowViewModel.cs @@ -1,4 +1,5 @@ using Admin.Core.Common; +using Admin.Core.Socket; using Aucma.Core.BoxFoam.Business; using Aucma.Core.BoxFoam.Views; using Aucma.Core.HwPLc; @@ -6,6 +7,7 @@ using Aucma.Core.Scanner; using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; using log4net; +using NPOI.SS.Formula.Functions; using System; using System.Collections.ObjectModel; using System.Diagnostics; @@ -33,13 +35,9 @@ namespace Aucma.Core.BoxFoam.ViewModels public MainWindowViewModel() { UserContent = firstPage; - - // 创建一个DispatcherTimer对象 - DispatcherTimer timer = new DispatcherTimer(); - timer.Interval = TimeSpan.FromSeconds(1); - timer.Tick += Timer_Tick; - timer.Start(); - InitHikRobot(); + TouchSocketService.RefreshStateEvent += RefreshScanner; + string address = Appsettings.app("Middleware", "TouchSocket", "Address").ObjToString(); + RefreshScanner(address, false); Task.Run(() => { init(); @@ -58,33 +56,14 @@ namespace Aucma.Core.BoxFoam.ViewModels timer.Enabled = true; timer.Start(); + // 创建一个DispatcherTimer对象 + DispatcherTimer dispatcherTimer = new DispatcherTimer(); + dispatcherTimer.Interval = TimeSpan.FromSeconds(1); + dispatcherTimer.Tick += Timer_Tick; + dispatcherTimer.Start(); return Task.CompletedTask; } - #region 开启海康扫码器 - public void InitHikRobot() - { - try - { - - Task.Run(() => - { - Thread.Sleep(2000); - //MvCodeHelper1.DeviceListAcq();//获取创建设备 - // MvCodeHelper1.StartGrab(); // 开启触发扫码接收数据 - Business.MvCodeHelper.Liner(); - }); - - } - catch (Exception ex) - { - //MvCodeHelper.CloseAllDevice(); - InitHikRobot(); - } - } - #endregion - - #region 设备状态刷新 /// /// 设备状态刷新 @@ -95,8 +74,6 @@ namespace Aucma.Core.BoxFoam.ViewModels { RefreshMesDb(); RefreshPlc(); - RefreshScanner(); - } /// /// 数据库状态刷新 @@ -154,11 +131,9 @@ namespace Aucma.Core.BoxFoam.ViewModels /// /// /// - public void RefreshScanner() + public void RefreshScanner(string address,bool type) { - string ip1 = Appsettings.app("Middleware", "Scanner1", "Ip"); - // bool flag1 = MvCodeHelper.ConnectionStatus(ip1); - Scanner1State(true); + Scanner1State(type); } #endregion diff --git a/Aucma.Core.BoxFoam/appsettings.json b/Aucma.Core.BoxFoam/appsettings.json index 6d2ed62c..b7cede78 100644 --- a/Aucma.Core.BoxFoam/appsettings.json +++ b/Aucma.Core.BoxFoam/appsettings.json @@ -193,7 +193,7 @@ }, "TouchSocket": { "Enabled": true, - "Address": "10.10.92.232:5000" + "Address": "10.10.93.50:5000" } }, "ScannerServer": [ diff --git a/Aucma.Core.DoorFoam/Aucma.Core.DoorFoam.csproj b/Aucma.Core.DoorFoam/Aucma.Core.DoorFoam.csproj index a6564ec1..86a4431d 100644 --- a/Aucma.Core.DoorFoam/Aucma.Core.DoorFoam.csproj +++ b/Aucma.Core.DoorFoam/Aucma.Core.DoorFoam.csproj @@ -77,12 +77,6 @@ - - - ..\dll\MvCodeReaderSDK.Net.dll - - - Code diff --git a/Aucma.Core.DoorFoam/ViewModels/MainWindowViewModel.cs b/Aucma.Core.DoorFoam/ViewModels/MainWindowViewModel.cs index f4debab3..a161125b 100644 --- a/Aucma.Core.DoorFoam/ViewModels/MainWindowViewModel.cs +++ b/Aucma.Core.DoorFoam/ViewModels/MainWindowViewModel.cs @@ -39,10 +39,6 @@ namespace Aucma.Core.DoorFoam.ViewModels string address = Appsettings.app("Middleware", "TouchSocket", "Address").ObjToString(); RefreshScanner(address, false); init(); - - - //doorCollection.startCollect(); - //collectionFoam.startCollect(); } #region 初始化