Files
6098/Cowain.Bake.Communication/Scan/ScanCodeManage.cs

70 lines
2.1 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using Cowain.Bake.BLL;
using Cowain.Bake.Common;
using Cowain.Bake.Common.Core;
using Cowain.Bake.Common.Enums;
using Cowain.Bake.Communication.Interface;
using Cowain.Bake.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Unity;
namespace Cowain.Bake.Communication.Scan
{
public class ScanCodeManage
{
private List<TDeviceConfig> scanCodeList;
IUnityContainer _unityContainer;
public ScanCodeManage(IUnityContainer unityContainer)
{
_unityContainer = unityContainer;
scanCodeList = unityContainer.Resolve<DeviceConfigService>().GetConfig(EDeviceType.SCANNER);
List<Task> listTask = new List<Task>();
foreach (var item in scanCodeList)
{
Assembly asm = Assembly.GetExecutingAssembly(); //获得当前程序的绝对路径
Type type = asm.GetType(MyPath.SCAN + item.DriverName);
unityContainer.RegisterSingleton(typeof(IScanCodeBase), type, item.Name);
var scanCode = _unityContainer.Resolve<IScanCodeBase>(item.Name); //几个PLC就实例化几个
scanCode.Id = item.Id;
scanCode.Name = item.Name;
scanCode.DeviceName = item.DriverName;
scanCode.GetJsonParam(item.Json);
if (item.Enable)
{
listTask.Add(Task.Run(() =>
{
scanCode.Connect();
}));
}
}
Task.WaitAll(listTask.ToArray());
Task.Run(async () =>
{
while(true)
{
await Task.Delay(5000);
CheckConnect();
}
});
}
void CheckConnect()
{
var scanCodes = _unityContainer.ResolveAll<IScanCodeBase>();
foreach(var item in scanCodes)
{
bool b = item.IsConnect;
}
}
}
}