|
using Hanhe.iWCS.Business;
|
using Hanhe.iWCS.Common;
|
using Hanhe.iWCS.DeviceDriver;
|
using Hanhe.iWCS.Factroy;
|
using Hanhe.iWCS.Interface;
|
using Hanhe.iWCS.Model;
|
using SuperSocket.SocketBase;
|
using SuperSocket.SocketBase.Protocol;
|
using System;
|
using System.Configuration;
|
using System.Linq;
|
|
namespace Hanhe.iWCS.IndonesiaGLMTCP
|
{
|
public class WCSServer : AppServer<WCSSession, BinaryRequestInfo> {
|
/// <summary>
|
/// 兼容CommandLine 命令行方式的协议 和 纯字符串的协议 都是以$$为结束符
|
/// </summary>
|
public WCSServer()
|
: base(new YourReceiveFilter()) {
|
//: base(new CommandLineReceiveFilterFactory("$$", Encoding.UTF8, new BasicRequestInfoParser(",", "&"))) {
|
//设备初始化
|
HardwareAccessHelper.Instance.Initialize();
|
HardwareAccessHelper.Instance.ProgramDataInit();
|
HardwareAccessHelper.Instance.ArchivesInit();
|
SessionInstance.Instance.Initialize();
|
Console.WriteLine("amswcs service CopyRight haninfo.cc " + DateTime.Now.Year);
|
StockInstance.Instance.Initialize();
|
|
//添加开启线程
|
|
//任务拦截
|
IEnentListen agvStateListen = DataAccess.CreateEnentListen();
|
agvStateListen.EnentSubscribe(new TN_I_TASK_DTL_ACTION() { CN_N_ACTION_CODE = 1027 });
|
|
//10001-读取包装线信号-3楼包装取料
|
IEnentListen CheckPackingMachine = DataAccess.CreateEnentListen();
|
CheckPackingMachine.EnentSubscribe(new TN_I_TASK_DTL_ACTION() { CN_N_ACTION_CODE = 10001 });
|
|
//10002-读取叠包机信号(三楼双层缓存架入叠盘机流程)-3楼缓存架入叠托
|
IEnentListen CacheStackingMouth = DataAccess.CreateEnentListen();
|
CacheStackingMouth.EnentSubscribe(new TN_I_TASK_DTL_ACTION() { CN_N_ACTION_CODE = 10002 });
|
|
//10003-读包装机信号(包装机补空托流程)-3楼包装补空
|
IEnentListen PickUpBlank = DataAccess.CreateEnentListen();
|
PickUpBlank.EnentSubscribe(new TN_I_TASK_DTL_ACTION() { CN_N_ACTION_CODE = 10003 });
|
|
//10004-打包线空托补料请求(3楼拆盘机补空托)-3楼拆盘补空
|
IEnentListen CheckPackingLineEmpty = DataAccess.CreateEnentListen();
|
CheckPackingLineEmpty.EnentSubscribe(new TN_I_TASK_DTL_ACTION() { CN_N_ACTION_CODE = 10004 });
|
|
//10005 - 三楼叠盘机请求 - 3楼叠盘下线 - 二期新增任务流程
|
IEnentListen CheckLineEmtpy = DataAccess.CreateEnentListen();
|
CheckLineEmtpy.EnentSubscribe(new TN_I_TASK_DTL_ACTION() { CN_N_ACTION_CODE = 10005 });
|
|
//10006-打包线下线-满托入库
|
IEnentListen CheckPackingLineFull = DataAccess.CreateEnentListen();
|
CheckPackingLineFull.EnentSubscribe(new TN_I_TASK_DTL_ACTION() { CN_N_ACTION_CODE = 10006 });
|
|
//10007-缓存位入入料平台
|
IEnentListen InInlet = DataAccess.CreateEnentListen();
|
//InInlet.EnentSubscribe(new TN_I_TASK_DTL_ACTION() { CN_N_ACTION_CODE = 10007 });
|
|
//充电任务
|
IEnentListen BatteryTime = DataAccess.CreateEnentListen();
|
//BatteryTime.EnentSubscribe(new TN_I_TASK_DTL_ACTION() { CN_N_ACTION_CODE = 2000 });
|
|
//写电量任务
|
IEnentListen WirteBattery = DataAccess.CreateEnentListen();
|
//WirteBattery.EnentSubscribe(new TN_I_TASK_DTL_ACTION() { CN_N_ACTION_CODE = 2001 });
|
|
//任务动作线程
|
IEnentListen ActionControl = DataAccess.CreateEnentListen();
|
ActionControl.EnentSubscribe(new TN_I_TASK_DTL_ACTION() { CN_N_ACTION_CODE = 10010 });
|
|
//设备合格率
|
IEnentListen machine = DataAccess.CreateEnentListen();
|
//machine.EnentSubscribe(new TN_I_TASK_DTL_ACTION() { CN_N_ACTION_CODE = 10011 });
|
|
//荆门变更
|
IEnentListen changeSignal = DataAccess.CreateEnentListen();
|
//changeSignal.EnentSubscribe(new TN_I_TASK_DTL_ACTION() { CN_N_ACTION_CODE = 10012 });
|
|
//删除变更中间表时间大于两周的数据
|
IEnentListen deleteTableTask = DataAccess.CreateEnentListen();
|
//deleteTableTask.EnentSubscribe(new TN_I_TASK_DTL_ACTION() { CN_N_ACTION_CODE = 10013 });
|
|
//ERP变更功能
|
IEnentListen SendERPTaskCompleteFunc = DataAccess.CreateEnentListen();
|
SendERPTaskCompleteFunc.EnentSubscribe(new TN_I_TASK_DTL_ACTION() { CN_N_ACTION_CODE = 10014 });
|
|
//看板内容写入通道
|
IEnentListen writeQtt = DataAccess.CreateEnentListen();
|
//writeQtt.EnentSubscribe(new TN_I_TASK_DTL_ACTION() { CN_N_ACTION_CODE = 10015 });
|
|
//将物料表数据插入中间表
|
IEnentListen insertMidTable = DataAccess.CreateEnentListen();
|
insertMidTable.EnentSubscribe(new TN_I_TASK_DTL_ACTION() { CN_N_ACTION_CODE = 10017 });
|
|
}
|
public class YourReceiveFilter : IReceiveFilterFactory<BinaryRequestInfo> {
|
public IReceiveFilter<BinaryRequestInfo> CreateFilter(IAppServer appServer, IAppSession appSession, System.Net.IPEndPoint remoteEndPoint) {
|
return new MsgPackReceiveFilter();
|
}
|
}
|
public class MsgPackReceiveFilter : TerminatorReceiveFilter<BinaryRequestInfo> {
|
public MsgPackReceiveFilter()
|
: base(new byte[] { 36, 36 }) {
|
}
|
public override BinaryRequestInfo Filter(byte[] readBuffer, int offset, int length, bool toBeCopied, out int rest) {
|
return base.Filter(readBuffer, offset, length, toBeCopied, out rest);
|
}
|
protected override BinaryRequestInfo ProcessMatchedRequest(byte[] data, int offset, int length) {
|
return new BinaryRequestInfo("", data.Skip(offset).Take(length).ToArray());
|
}
|
}
|
}
|
}
|