/// <summary> /// 开始启动socket for wcs /// </summary> public void StartForWcs() { var ip = IPAddress.Parse(_config.LocalIp); _socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); _socket.Bind(new IPEndPoint(ip, int.Parse(_config.PortForWcs))); _socket.Listen(int.Parse(_config.MaxConnect)); var thread = new Thread(ListenClientConnectWcs); CallbackUpdateStrip("启动wcs监听;"); thread.Start(); var receiveBoxHandler = new Thread(HandReceiveMailbox);//收件邮箱侦听 receiveBoxHandler.Start(); var sendBoxHandler = new Thread(HandleSendMailbox);//发件箱侦听 sendBoxHandler.Start(); var browser = new ServiceForWCSClient(); Task.Factory.StartNew(() => { while (true) { browser.KeepAlive(); Thread.Sleep(2000); } }); }
/// <summary> /// 任务结果答复给浏览器 /// </summary> /// <param name="message"></param> private static void ReplyBrowser(dynamic message) { try { if (message.infoType == 40) { var browser = new ServiceForWCSClient(); var query = new WCSStockInApplyServiceModel { ClientId = Convert.ToString(message.clientID.Value), DeviceId = Convert.ToString(message.content.deviceS.Value), TrayCode = Convert.ToString(message.content.barCode.Value) }; browser.SendStockInApply(query); } else //目前只有反馈报文 { if (message.content.result.Value == 1) { TaskSuccess(message.content.oriSerial.Value); } } } catch (Exception ex) { } }
/// <summary> /// 定时处理任务 /// </summary> public void StartForWms() { while (true) { Thread.Sleep(200); var browser = new ServiceForWCSClient(); var taskList = browser.GetTaskList(); if (taskList.Any() == false) { continue; } HandTaskList(taskList); } }
/// <summary> /// 发送报文 /// </summary> /// <param name="clientId"></param> /// <param name="taskId"></param> private void HandTaskOneByOne(string clientId, string taskId) { try { if (!wcsList.Any()) { return; } if (!wcsList.Keys.Contains(clientId)) { return; } Socket wcsClinet = wcsList[clientId]; wcsClinet.Send(resultWms); var browser = new ServiceForWCSClient(); browser.MarkTaskAsSend(taskId); } catch (Exception) { } }
/// <summary> /// 通知应用层任务成功 /// </summary> /// <param name="taskId"></param> private static void TaskSuccess(string taskId) { var browser = new ServiceForWCSClient(); browser.MarkTaskAsDone(taskId); }