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 初始化