| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979 | 
							- 
 
- using System;
 
- using System.Collections.Generic;
 
- using System.Reflection;
 
- using System.Windows.Forms;
 
- using Newtonsoft.Json;
 
- using System.Net;
 
- using System.Threading.Tasks;
 
- using System.Threading;
 
- using System.Text;
 
- using System.Configuration;
 
- using System.IO;
 
- using EasyModbusClient.redis;
 
- using EasyModbusClient.util;
 
- using EasyModbusClient.businessBody;
 
- using Newtonsoft.Json.Serialization;
 
- using EasyModbus;
 
- using YG.Device;
 
- using YG;
 
- using IMCS.Device;
 
- using IMCS.Device.body;
 
- using Newtonsoft.Json.Linq;
 
- using IMCS.Http.businessBody;
 
- using IMCS.Lib;
 
- using System.Linq;
 
- namespace EasyModbusClient
 
- {
 
-     /*
 
-      *     string cmdreceive= CMDLib.Instance.WriteCmd($"netsh http add urlacl url={HttpServerUrlString}  user=Everyone");
 
-             YG.Log.Instance.WriteLogAdd($"启动HttpServer 默认添加允许项:{cmdreceive}");
 
-             System.Threading.Thread.Sleep(500);
 
-      */
 
-     class ControllerHelper
 
-     {
 
-         private static string RETVAL = "success";
 
-         private static int ASK_TIMES = 20;
 
-         private static string VirtualProgram = ConfigurationManager.AppSettings["VirtualProgram"];
 
-         private static int HEX_BINARY = 8;
 
-         private uint currentToolArea = 1;
 
-         private static string ConncetionRedisString = ConfigurationManager.AppSettings["ConncetionRedisString"];
 
-         private static string HttpServerUrlString = ConfigurationManager.AppSettings["HttpServerUrlString"];
 
-         private static string NcExtendPath = ConfigurationManager.AppSettings["NcExtendPath"];
 
-         private static string NcUpLoadPath = ConfigurationManager.AppSettings["NcUpLoadPath"];
 
-         private static string LocalNcPath = ConfigurationManager.AppSettings["LocalNcPath"];
 
-         private static string ClsSFTP_IP = ConfigurationManager.AppSettings["ClsSFTP_Ip"];
 
-         private static string ClsSFTP_Port = ConfigurationManager.AppSettings["ClsSFTP_Port"];
 
-         private static string ClsSFTP_UserName = ConfigurationManager.AppSettings["ClsSFTP_UserName"];
 
-         private static string ClsSFTP_PWD = ConfigurationManager.AppSettings["ClsSFTP_Pwd"];
 
-         private void send(HttpListenerResponse response, short value, string machine = "WL")
 
-         {
 
-             ResponseBody responseBody = new ResponseBody();
 
-             responseBody.Code = 0;
 
-             responseBody.Msg = Constants.OPERATE_SUCCESS_MSG;
 
-             response.StatusCode = 200;
 
-             response.ContentType = "application/json;charset=UTF-8";
 
-             response.ContentEncoding = Encoding.UTF8;
 
-             response.AppendHeader("Content-Type", "application/json;charset=UTF-8");
 
-             using (StreamWriter writer = new StreamWriter(response.OutputStream, Encoding.UTF8))
 
-             {
 
-                 string respstring = "";
 
-                 if (value == -3)
 
-                 {
 
-                     respstring = "关状态";
 
-                 }
 
-                 else if (value == -4)
 
-                 {
 
-                     respstring = "开状态";
 
-                 }
 
-                 if (machine == "JC")
 
-                 {
 
-                     switch (value)
 
-                     {
 
-                         case 1:
 
-                             respstring = "执行程序成功";
 
-                             break;
 
-                         case 2:
 
-                             respstring = "执行程序失败";
 
-                             break;
 
-                         case 3:
 
-                             respstring = "不满足前置条件";
 
-                             break;
 
-                     }
 
-                 }
 
-                 if (machine == "WL")
 
-                 {
 
-                     switch (value)
 
-                     {
 
-                         case 1:
 
-                             respstring = "执行取动作";
 
-                             break;
 
-                         case 4:
 
-                             respstring = "执行放动作";
 
-                             break;
 
-                         case 7:
 
-                             respstring = "执行移动动作";
 
-                             break;
 
-                         case 2:
 
-                             respstring = "取执行中";
 
-                             break;
 
-                         case 3:
 
-                             respstring = "取完成";
 
-                             break;
 
-                         case 5:
 
-                             respstring = "放执行中";
 
-                             break;
 
-                         case 6:
 
-                             respstring = "放完成";
 
-                             break;
 
-                         case 8:
 
-                             respstring = "移动完成";
 
-                             break;
 
-                         case 9:
 
-                             respstring = "机器人故障";
 
-                             break;
 
-                         case 10:
 
-                             respstring = "打标完成";
 
-                             break;
 
-                         case 11:
 
-                             respstring = "清洗剂执行中";
 
-                             break;
 
-                         case 12:
 
-                             respstring = "不满足清晰条件";
 
-                             break;
 
-                     }
 
-                 }
 
-                 else if (machine == "LHT")
 
-                 {
 
-                     switch (value)
 
-                     {
 
-                         case 1:
 
-                             respstring = "执行取动作";
 
-                             break;
 
-                         case 2:
 
-                             respstring = "取完成";
 
-                             break;
 
-                         case 3:
 
-                             respstring = "执行放动作";
 
-                             break;
 
-                         case 4:
 
-                             respstring = "放完成";
 
-                             break;
 
-                         case 5:
 
-                             respstring = "取执行中";
 
-                             break;
 
-                         case 6:
 
-                             respstring = "放执行中";
 
-                             break;
 
-                     }
 
-                 }
 
-                 writer.Write(respstring);
 
-                 writer.Close();
 
-                 response.Close();
 
-             }
 
-         }
 
-         //httpser服务
 
-         public void StartHttpServer()
 
-         {
 
-             CommonUtil.InitXml();
 
-             HttpListener listener = new HttpListener();//  HTTP 协议侦听器
 
-             LibCMD.Instance.WriteCmd(HttpServerUrlString);
 
-             listener.Prefixes.Add(HttpServerUrlString);// 配置访问权限地址
 
-             listener.Start();
 
-             CommonUtil.WriteAccessLog(DateTime.Now + ">>>监听服务启动Listening>>>>");
 
-             Task task = Task.Factory.StartNew(() =>
 
-             { // 创建异步task
 
-                 while (listener.IsListening)
 
-                 {
 
-                     HttpListenerContext context = listener.GetContext();
 
-                     HttpListenerRequest request = context.Request;
 
-                     HttpListenerResponse response = context.Response;
 
-                     try
 
-                     {
 
-                         Servlet servlet = new MyServlet();
 
-                         servlet.onCreate();
 
-                         if (!request.Url.ToString().Contains("favicon"))
 
-                         {
 
-                             if (request.HttpMethod == "POST")
 
-                             {
 
-                                 Stream stream = context.Request.InputStream;
 
-                                 StreamReader reader = new StreamReader(stream, Encoding.UTF8);
 
-                                 string body = reader.ReadToEnd();
 
-                                 YG.Log.Instance.WriteLogAdd(">>>===收到POST数据 : >>>>===" + body);
 
-                                 CcsRequestBody ccsRequestBody = JsonJavaScriptSerializer.FromJSON<CcsRequestBody>(body);
 
-                                 string url = (ccsRequestBody.Url + ":" + ccsRequestBody.Port);
 
-                                 string businessType = ccsRequestBody.BusinessType;
 
-                                 DeviceList conDeviceInfo = DeviceManage.Instance.GetOne(url);
 
-                                 ResponseBody responseBody = ResponseBody.newObject();
 
-                                 response.StatusCode = 200;
 
-                                 response.ContentType = "application/json;charset=UTF-8";
 
-                                 response.ContentEncoding = Encoding.UTF8;
 
-                                 response.AppendHeader("Content-Type", "application/json;charset=UTF-8");
 
-                                 if (conDeviceInfo != null)
 
-                                 {
 
-                                     if (!string.IsNullOrEmpty(businessType))
 
-                                     {
 
-                                         if (businessType.Equals("testwork"))
 
-                                         {
 
-                                             conDeviceInfo.DeviceSend("DB200.52", "1111".ReturnBtyesWtitString(40));
 
-                                             System.Threading.Thread.Sleep(1100);
 
-                                             conDeviceInfo.DeviceSend("DB200.92", "1111".ReturnBtyesWtitString(20));
 
-                                         }
 
-                                         if (businessType.Equals("uploadProgram"))
 
-                                         {
 
-                                             responseBody = UpLoadNc(conDeviceInfo, ccsRequestBody.Data, ccsRequestBody);
 
-                                         }
 
-                                         else if (businessType.Equals("deleteProgram"))
 
-                                         {
 
-                                             responseBody = DeleteNCProgram(conDeviceInfo, ccsRequestBody.Data, ccsRequestBody);
 
-                                         }
 
-                                         else if (businessType.Equals("execProgram"))
 
-                                         {
 
-                                             CcsRequestBody itemrequestbody = ccsRequestBody.clone() as CcsRequestBody;
 
-                                             DeviceOPCUat itemreadopcua = (DeviceOPCUat)conDeviceInfo;
 
-                                             int runcount = 0;
 
-                                             Task.Factory.StartNew(async () =>
 
-                                             {
 
-                                                 while (true)
 
-                                                 {
 
-                                                     runcount++;
 
-                                                     if (runcount > 10)
 
-                                                     {
 
-                                                         break;
 
-                                                     }
 
-                                                     await Task.Delay(2000);
 
-                                                     List<string> itemopcuavalue = itemreadopcua.OpcUa_Read(new List<string> { "/Plc/M1300.0", "/Plc/I37.1" });
 
-                                                     if (itemopcuavalue.Where(m => m.Equals("False")).Count() == 0 && itemopcuavalue.Count > 0)
 
-                                                     //    List<string> itemopcuavalue = itemreadopcua.OpcUa_Read(new List<string> { "/Plc/M1300.0"});
 
-                                                     //if (itemopcuavalue.Where(m => m.Equals("False")).Count() == 0 && itemopcuavalue.Count > 0)
 
-                                                     {
 
-                                                         try
 
-                                                         {
 
-                                                             if (SelectedNCProgram(conDeviceInfo, itemrequestbody.Data, itemrequestbody))
 
-                                                             {
 
-                                                                 try
 
-                                                                 {
 
-                                                                     System.Threading.Thread.Sleep(2000);
 
-                                                                     responseBody = WriteValue(conDeviceInfo, itemrequestbody, true);
 
-                                                                     break;
 
-                                                                 }
 
-                                                                 catch (Exception eex)
 
-                                                                 {
 
-                                                                     YG.Log.Instance.WriteLogAdd($"247-->程序执行中出现了异常情况-->{eex.Message}");
 
-                                                                 }
 
-                                                             }
 
-                                                             else
 
-                                                             {
 
-                                                                 YG.Log.Instance.WriteLogAdd($"------------->>>选择程序出现异常");
 
-                                                             }
 
-                                                         }
 
-                                                         catch (Exception ex)
 
-                                                         {
 
-                                                             YG.Log.Instance.WriteLogAdd($"247-->程序出现异常-->{ex.Message}");
 
-                                                         }
 
-                                                     }
 
-                                                 }
 
-                                             });
 
-                                             //将选中程序和执行程序合并 一个指令执行
 
-                                         }
 
-                                         else
 
-                                         {
 
-                                             responseBody = WriteValue(conDeviceInfo, ccsRequestBody, true);
 
-                                         }
 
-                                         //如果此操作成功,加入回调任务队列
 
-                                         if (responseBody.Code == Constants.RET_SUCCESS_CODE)
 
-                                         {
 
-                                             callResponse(ccsRequestBody, conDeviceInfo.ServerUrl, Constants.RET_SUCCESS_CODE, Constants.OPERATE_SUCCESS_MSG);
 
-                                         }
 
-                                         var serializerSettings = new JsonSerializerSettings()
 
-                                         {
 
-                                             // 设置为驼峰命名
 
-                                             ContractResolver = new CamelCasePropertyNamesContractResolver()
 
-                                         };
 
-                                         using (StreamWriter writer = new StreamWriter(response.OutputStream, Encoding.UTF8))
 
-                                         {
 
-                                             YG.Log.Instance.WriteLogAdd($"WMS--->>{responseBody.Json_SerializeObject()}--->>{body}\r\n");
 
-                                             writer.Write(JsonConvert.SerializeObject(responseBody, Formatting.Indented, serializerSettings));
 
-                                             writer.Close();
 
-                                             response.Close();
 
-                                         }
 
-                                     }
 
-                                 }
 
-                                 else
 
-                                 {
 
-                                     using (StreamWriter writer = new StreamWriter(response.OutputStream, Encoding.UTF8))
 
-                                     {
 
-                                         YG.Log.Instance.WriteLogAdd($"WMS--->>{responseBody.Json_SerializeObject()}--->>{body}\r\n");
 
-                                         responseBody.Code = 3;
 
-                                         responseBody.Msg = "无法找到相关设备,请检查网络是否通畅";
 
-                                         writer.Write(responseBody.Json_SerializeObject());
 
-                                         writer.Close();
 
-                                         response.Close();
 
-                                     }
 
-                                     YG.Log.Instance.WriteLogAdd("---->>没有检测到当前设备");
 
-                                 }
 
-                             }
 
-                         }
 
-                     }
 
-                     catch (Exception ex)
 
-                     {
 
-                         CommonUtil.WriteAccessLog(DateTime.Now + ">>>===HTTP Server监听器异常 {0}信息 : >>>>===" + ex.ToString());
 
-                         listener.Stop();
 
-                         StartHttpServer();
 
-                     }
 
-                 }
 
-             });
 
-             task.Wait();
 
-         }
 
-         bool IsRun = true;
 
-         private ResponseBody UpLoadNc(DeviceList device, object data, CcsRequestBody ccsRequestBody)
 
-         {
 
-             CcsRequestBody itemrequestbody = ccsRequestBody.clone() as CcsRequestBody;
 
-             DeviceOPCUat itemreadopcua = (DeviceOPCUat)device;
 
-             int runcount = 0;
 
-             bool tasksleep = true;
 
-             while (tasksleep)
 
-             {
 
-                 List<string> itemopcuavalue = itemreadopcua.OpcUa_Read(new List<string> { "/Plc/M1300.0", "/Plc/I37.1" });
 
-                 if (itemopcuavalue.Where(m => m.Equals("False")).Count() == 0 && itemopcuavalue.Count > 0)
 
-                     //    List<string> itemopcuavalue = itemreadopcua.OpcUa_Read(new List<string> { "/Plc/M1300.0"});
 
-                     if (itemopcuavalue.Where(m => m.Equals("False")).Count() == 0 && itemopcuavalue.Count > 0)
 
-                     {
 
-                         tasksleep = false;
 
-                     }
 
-             }
 
-             SFTPDeviceBody sftpBody = DeviceManage.Instance.GetSFTPOne(device.Ip);
 
-             ResponseBody resBody = ResponseBody.newObject();
 
-             //将对象转为文件名数组
 
-             //string json = JsonConvert.SerializeObject(data);
 
-             JArray array = (JArray)JsonConvert.DeserializeObject(data.ToString());
 
-             List<UploadFileBody> list = array.ToObject<List<UploadFileBody>>();
 
-             foreach (UploadFileBody uploadBody in list)
 
-             {
 
-                 string fileName = uploadBody.fileName;
 
-                 DeviceSFTP helper = new DeviceSFTP(sftpBody);
 
-                 try
 
-                 {
 
-                     bool ifcon = helper.Connect();
 
-                     if (ifcon)
 
-                     {
 
-                         var cc = helper.Put(LocalNcPath + fileName, sftpBody.Path + fileName);
 
-                         helper.Disconnect();
 
-                     }
 
-                     else
 
-                     {
 
-                         resBody.Msg = "upload failed";
 
-                         resBody.Code = Constants.RET_FAILURE_CODE;
 
-                         return resBody;
 
-                     }
 
-                 }
 
-                 catch (Exception ex)
 
-                 {
 
-                     YG.Log.Instance.WriteLogAdd($"297-->{ex.Message}");
 
-                     resBody.Msg = ex.Message;
 
-                     resBody.Code = Constants.RET_FAILURE_CODE;
 
-                     return resBody;
 
-                 }
 
-             }
 
-             return resBody;
 
-         }
 
-         //选中机床中的NC程序
 
-         public bool SelectedNCProgram(DeviceList device, object data, CcsRequestBody ccsRequestBody)
 
-         {
 
-             string fileName = data.ObjectToString();
 
-             SFTPDeviceBody sftpBody = DeviceManage.Instance.GetSFTPOne(device.Ip);
 
-             DeviceOPCUat opc = (DeviceOPCUat)device;
 
-             bool flag = opc.OpcUa_Select(sftpBody.NcExtendPath, fileName);
 
-             return flag;
 
-         }
 
-         //删除机床中的NC程序
 
-         public ResponseBody DeleteNCProgram(DeviceList device, object data, CcsRequestBody ccsRequestBody)
 
-         {
 
-             ResponseBody resBody = ResponseBody.newObject();
 
-             SFTPDeviceBody sftpBody = DeviceManage.Instance.GetSFTPOne(device.Ip);
 
-             DeviceOPCUat opc = (DeviceOPCUat)device;
 
-             //将对象转为文件名数组
 
-             //string json = JsonConvert.SerializeObject(data);
 
-             JArray array = (JArray)JsonConvert.DeserializeObject(data.ToString());
 
-             List<UploadFileBody> list = array.ToObject<List<UploadFileBody>>();
 
-             foreach (UploadFileBody uploadBody in list)
 
-             {
 
-                 string fileName = uploadBody.fileName;
 
-                 DeviceSFTP helper = new DeviceSFTP(sftpBody);
 
-                 helper.DeleteFile(sftpBody, fileName);
 
-                 //string status = opc.OpcUa_DeleteFile(sftpBody.Path,fileName);
 
-             }
 
-             resBody.Msg = Constants.DEL_PROGRAME_SUCCESS_MSG;
 
-             resBody.Code = Constants.RET_SUCCESS_CODE;
 
-             return resBody;
 
-         }
 
-         private void callResponse(CcsRequestBody ccsRequestBody, string serverUrl, int code = -1, string msg = "")
 
-         {
 
-             if (code == -1)
 
-             {
 
-                 code = Constants.RET_SUCCESS_CODE;
 
-             }
 
-             if (string.IsNullOrWhiteSpace(msg))
 
-             {
 
-                 msg = Constants.OPERATE_SUCCESS_MSG;
 
-             }
 
-             //如果此操作成功,加入回调任务队列
 
-             ccsRequestBody.Data = code + "";
 
-             ccsRequestBody.Msg = msg;
 
-             CommonUtil.ResponseTaskList(ccsRequestBody, serverUrl);
 
-         }
 
-         //写入对应的值
 
-         public ResponseBody WriteValue(DeviceList device, CcsRequestBody ccsRequestBody, bool isCheck)
 
-         {
 
-             string parentKey = ccsRequestBody.BusinessType;
 
-             ResponseBody resBody = ResponseBody.newObject();
 
-             Node parentNode = CommonUtil.GetTargetNode(device.ServerUrl, parentKey);
 
-             //将读类型赋予设备,供s7协议使用
 
-             device.ReadType = parentNode.ReadType;
 
-             bool isAsk = parentNode.IsAsk;
 
-             try
 
-             {
 
-                 //校验条件是否满足
 
-                 resBody = CheckCondition(parentKey, device, isAsk);
 
-                 if (resBody.Code != 2)
 
-                 {
 
-                     resBody.Msg = Constants.CONDITUIN_CHECK_FAILURE_MSG;
 
-                     resBody.Code = Constants.RET_CONDITUIN_CHECK_FAILURE_CODE;
 
-                     return resBody;
 
-                 }
 
-                 if (device.Dtype.Equals(DeviceType.OPCUa))
 
-                 {
 
-                     DeviceOPCUat opcua = (DeviceOPCUat)device;
 
-                     bool flag = opcua.OpcUa_WriteValue(parentNode.Address, parentNode.Value);
 
-                     //如果此操作失败返回
 
-                     if (!flag)
 
-                     {
 
-                         YG.Log.Instance.WriteLogAdd($"------------------>>>>>>>>>>>>>>>>>>>>>>>机床执行程序出现错误");
 
-                         resBody.Data = Constants.RET_FAILURE_CODE + "";
 
-                         resBody.Msg = Constants.OPERATE_FAILURE_MSG;
 
-                         return resBody;
 
-                     }
 
-                 }
 
-                 else if (device.Dtype.Equals(DeviceType.PLC_S7))
 
-                 {
 
-                     DeviceS7 s7 = (DeviceS7)device;
 
-                     //当是智能取或放时 先调智能单元取和放的方法,再执行,如果是柔性产线 需在此处再加一个判断
 
-                     //取物品
 
-                     if (parentKey.ToUpper().Equals("FETCHMATERIAL") || parentKey.ToUpper().Equals("PUTMATERIAL"))
 
-                     {
 
-                         #region 取物品
 
-                         if (parentKey.ToUpper().Equals("FETCHMATERIAL") && ccsRequestBody.Data != null)
 
-                         {
 
-                             if (parentNode.Title.Contains("智能单元"))
 
-                             {
 
-                                 int v = ccsRequestBody.Data.ObjectToInt();
 
-                                 s7.DeviceSend("DB3.6", ccsRequestBody.Data.ObjectToString(), parentNode.ReadType);
 
-                             }
 
-                             else if (parentNode.Title.Contains("柔性线"))
 
-                             {
 
-                                 int v = ccsRequestBody.Data.ObjectToInt();
 
-                                 s7.DeviceSend("DB200.46", ccsRequestBody.Data.ObjectToString(), parentNode.ReadType);
 
-                             }
 
-                             else if (parentNode.Title.Contains("质量中心"))
 
-                             {
 
-                                 int v = ccsRequestBody.Data.ObjectToInt();
 
-                                 s7.DeviceSend("DB200.46", ccsRequestBody.Data.ObjectToString(), parentNode.ReadType);
 
-                             }
 
-                             Thread.Sleep(50);
 
-                         }
 
-                         #endregion
 
-                         #region 放物品
 
-                         //放物品
 
-                         if (parentKey.ToUpper().Equals("PUTMATERIAL") && ccsRequestBody.Data != null)
 
-                         {
 
-                             if (parentNode.Title.Contains("智能单元"))
 
-                             {
 
-                                 s7.DeviceSend("DB3.8", ccsRequestBody.Data.ObjectToString(), parentNode.ReadType);
 
-                             }
 
-                             else if (parentNode.Title.Contains("柔性线"))
 
-                             {
 
-                                 int v = ccsRequestBody.Data.ObjectToInt();
 
-                                 s7.DeviceSend("DB200.48", ccsRequestBody.Data.ObjectToString(), parentNode.ReadType);
 
-                             }
 
-                             else if (parentNode.Title.Contains("质量中心"))
 
-                             {
 
-                                 int v = ccsRequestBody.Data.ObjectToInt();
 
-                                 s7.DeviceSend("DB200.48", ccsRequestBody.Data.ObjectToString(), parentNode.ReadType);
 
-                             }
 
-                             Thread.Sleep(50);
 
-                         }
 
-                         #endregion
 
-                         System.Threading.Thread.Sleep(1100);
 
-                         s7.DeviceSend(parentNode.Address, parentNode.Value, parentNode.ReadType);
 
-                         #region 取,放下发动作之后,上报mes
 
-                         //resBody.Code = Constants.RET_SUCCESS_CODE;
 
-                         //resBody.Msg = Constants.OPERATE_SUCCESS_MSG;
 
-                         //如果此操作成功,加入回调任务队列
 
-                         //ccsRequestBody.Data = resBody.Code + "";
 
-                         //ccsRequestBody.Msg = resBody.Msg;
 
-                         // CommonUtil.RequestTaskList(ccsRequestBody);
 
-                         #endregion
 
-                     }
 
-                     #region 移动
 
-                     //移动
 
-                     if (parentKey.ToUpper().Equals("MOVEMATERIAL") && parentNode.Title.Contains("柔性线") && ccsRequestBody.Data != null)
 
-                     {
 
-                         int v = ccsRequestBody.Data.ObjectToInt();
 
-                         short pintindex = s7.DeviceRead<short>("DB200.40");
 
-                         var cc = DeviceConfig.Instance.PointDefaultList.Where(m => m.Train_Index.Equals(pintindex)).FirstOrDefault();
 
-                         //if (cc.Point.Where(m => m.Equals(ccsRequestBody.Data.ObjectToShort())).Count() == 0)
 
-                         //{
 
-                         s7.DeviceSend("DB200.48", ccsRequestBody.Data.ObjectToString(), parentNode.ReadType);
 
-                         System.Threading.Thread.Sleep(500);
 
-                         s7.DeviceSend(parentNode.Address, parentNode.Value, parentNode.ReadType);
 
-                         //}
 
-                         //response(ccsRequestBody, Constants.RET_SUCCESS_CODE, Constants.OPERATE_SUCCESS_MSG);
 
-                     }
 
-                     #endregion
 
-                     #region 清洗剂操作
 
-                     if (parentKey.ToUpper().Equals("CLEAN"))
 
-                     {
 
-                         //if (s7.DeviceRead<bool>("DB300.0.7"))
 
-                         // {
 
-                         // s7.DeviceSend("DB300.1.2", true);
 
-                         s7.DeviceSend("DB300.1.2", true, "2");
 
-                         System.Threading.Thread.Sleep(500);
 
-                         s7.DeviceSend("DB300.1.0", true, "2");
 
-                         //s7.DeviceSend("DB300.1.0", true);
 
-                         System.Threading.Thread.Sleep(1000);
 
-                         s7.DeviceSend("DB300.1.0", false, "2");
 
-                         System.Threading.Thread.Sleep(1000);
 
-                         //s7.DeviceSend("DB300.1.0", false);
 
-                         // response(ccsRequestBody, Constants.RET_SUCCESS_CODE, Constants.OPERATE_SUCCESS_MSG);
 
-                     }
 
-                     #endregion
 
-                     #region 三坐标处理
 
-                     if (parentKey.ToUpper().Equals("TESTWORK"))
 
-                     {
 
-                         TestWorkData testWorkData = Newtonsoft.Json.JsonConvert.DeserializeObject<TestWorkData>(ccsRequestBody.Data.ToString());
 
-                         if (testWorkData != null)
 
-                         {
 
-                             var te = testWorkData.WorkId.ReturnBtyesWtitString(40);
 
-                             device.DeviceSend("DB200.52", testWorkData.WorkId.ReturnBtyesWtitString(40));
 
-                             System.Threading.Thread.Sleep(1100);
 
-                             device.DeviceSend("DB200.92", testWorkData.WorkType.ReturnBtyesWtitString(20));
 
-                             System.Threading.Thread.Sleep(1000);
 
-                             short mc = 1;
 
-                             device.DeviceSend("DB200.34", mc);
 
-                             System.Threading.Thread.Sleep(1000);
 
-                             mc = 0;
 
-                             device.DeviceSend("DB200.34", mc);
 
-                         }
 
-                     }
 
-                     #endregion
 
-                     #region 打标
 
-                     if (parentKey.ToUpper().Equals("PRINT"))
 
-                     {
 
-                         try
 
-                         {
 
-                             DeviceList devicesocket = DeviceManage.Instance.deviceList.Where(m => m.Key.Equals("192.168.170.76:8074")).FirstOrDefault().Value;
 
-                             devicesocket.DeviceSend(ccsRequestBody.Data);
 
-                             short mc = 1;
 
-                             mc = 0;
 
-                             device.DeviceSend("DB200.24", mc);
 
-                             System.Threading.Thread.Sleep(1000);
 
-                             mc = 1;
 
-                             s7.DeviceSend("DB200.28", mc, "1");
 
-                             System.Threading.Thread.Sleep(1000);
 
-                             mc = 0;
 
-                             //s7.DeviceSend("DB200.28", mc);
 
-                             s7.DeviceSend("DB200.28", mc, "1");
 
-                         }
 
-                         catch (Exception ex)
 
-                         {
 
-                             YG.Log.Instance.WriteLogAdd($"498-->{ex.Message}");
 
-                             //response(ccsRequestBody, Constants.RET_CONDITUIN_CHECK_FAILURE_CODE, Constants.CONDITUIN_CHECK_FAILURE_MSG);
 
-                             YG.Log.Instance.WriteLogAdd($"{ex.Message}");
 
-                         }
 
-                     }
 
-                     #endregion
 
-                     #region RFID读写
 
-                     if (parentKey.ToUpper().Equals("RFIDREAD"))
 
-                     {
 
-                         try
 
-                         {
 
-                             //List<RfidDefaultList> testWorkData = Newtonsoft.Json.JsonConvert.DeserializeObject<List<RfidDefaultList>>(ccsRequestBody.Data.ToString());
 
-                             //var te = ccsRequestBody.Data.ToString().ReturnBtyesWtitString(256);
 
-                             ////device.DeviceSend("DB200.938", testWorkData.WorkId.ReturnBtyesWtitString(40));
 
-                             ////System.Threading.Thread.Sleep(1100);
 
-                             ////device.DeviceSend("DB200.92", testWorkData.WorkType.ReturnBtyesWtitString(20));
 
-                             //short mc = 1;
 
-                             //device.DeviceSend("DB200.112", mc);
 
-                             //System.Threading.Thread.Sleep(1000);
 
-                             //mc = 0;
 
-                             //device.DeviceSend("DB200.112", mc);
 
-                             //string rfidvalue = s7.DeviceRead("DB200.116.0", "5", 256);
 
-                             ccsRequestBody.IsCallBackFlag = 0;
 
-                             resBody.Data = DeviceRfid.Instance.DeviceRead($"{ccsRequestBody.Url}:{ccsRequestBody.Port}").Json_SerializeObject();
 
-                             YG.Log.Instance.WriteLogAdd($"RFIDREAD-->{resBody.Json_SerializeObject()}");
 
-                         }
 
-                         catch (Exception ex) { YG.Log.Instance.WriteLogAdd($"549--->{ex.Message}"); }
 
-                     }
 
-                     if (parentKey.ToUpper().Equals("RFIDWRITE"))
 
-                     {
 
-                         try
 
-                         {
 
-                             List<RfidDefaultList> testWorkData = Newtonsoft.Json.JsonConvert.DeserializeObject<List<RfidDefaultList>>(ccsRequestBody.Data.ToString());
 
-                             ////TestWorkData testWorkData = Newtonsoft.Json.JsonConvert.DeserializeObject<TestWorkData>(ccsRequestBody.Data.ToString());
 
-                             //device.DeviceSend("DB200.372.0", ccsRequestBody.Data.ToString().ReturnBtyesWtitString(256));
 
-                             //short mc = 1;
 
-                             //device.DeviceSend("DB200.114", mc);
 
-                             //System.Threading.Thread.Sleep(1000);
 
-                             //mc = 0;
 
-                             //device.DeviceSend("DB200.114", mc);
 
-                             //YG.Log.Instance.WriteLogAdd($"RFIDWRITE-->");
 
-                             ccsRequestBody.IsCallBackFlag = 0;
 
-                             resBody.Data = "RFID写入结果->" + DeviceRfid.Instance.DeviceSend(testWorkData, $"{ccsRequestBody.Url}:{ccsRequestBody.Port}").Json_SerializeObject();
 
-                             YG.Log.Instance.WriteLogAdd($"RFIDREAD-->{resBody.Json_SerializeObject()}");
 
-                         }
 
-                         catch (Exception ex) { YG.Log.Instance.WriteLogAdd($"567--->{ex.Message}"); }
 
-                     }
 
-                     #endregion
 
-                 }
 
-             }
 
-             catch (Exception ex)
 
-             {
 
-                 YG.Log.Instance.WriteLogAdd($"508-->{ex.Message}");
 
-                 resBody.Code = Constants.RET_FAILURE_CODE;
 
-                 resBody.Msg = ex.Message;
 
-                 return resBody;
 
-             }
 
-             resBody.Code = Constants.RET_SUCCESS_CODE;
 
-             resBody.Msg = Constants.OPERATE_SUCCESS_MSG;
 
-             return resBody;
 
-         }
 
-         public ResponseBody CheckCondition(string parentKey, DeviceList device, bool isAsk)
 
-         {
 
-             ResponseBody resBody = ResponseBody.newObject();
 
-             List<Node> list = CommonUtil.GetTargetList(device.ServerUrl, parentKey);
 
-             if (list.Count == 0)
 
-             {
 
-                 resBody.Code = Constants.RET_CONDITUIN_CHECK_SUCCESS_CODE;
 
-                 resBody.Msg = Constants.CONDITUIN_CHECK_SUCCESS_MSG;
 
-                 return resBody;
 
-             }
 
-             try
 
-             {
 
-                 if (device.Dtype.Equals(DeviceType.OPCUa))
 
-                 {
 
-                     DeviceOPCUat opcua = (DeviceOPCUat)device;
 
-                     List<string> nodeIdStrings = new List<string>();
 
-                     foreach (Node nd in list)
 
-                     {
 
-                         nodeIdStrings.Add(nd.Address);
 
-                     }
 
-                     List<string> retValueList = opcua.OpcUa_Read(nodeIdStrings);
 
-                     //比较目标值是否一致
 
-                     for (int i = 0; i < list.Count; i++)
 
-                     {
 
-                         Node cNode = list[i];
 
-                         if (!retValueList[i].Equals(cNode.TargetValue))
 
-                         {
 
-                             Node parentNode = CommonUtil.GetTargetNode(device.ServerUrl, parentKey);
 
-                             resBody.Code = Constants.RET_CONDITUIN_CHECK_FAILURE_CODE;
 
-                             resBody.Msg = cNode.Title + "状态不符合" + parentNode.Title + "条件。";
 
-                             break;
 
-                         }
 
-                     }
 
-                 }
 
-                 else if (device.Dtype.Equals(DeviceType.PLC_S7))
 
-                 {
 
-                     DeviceS7 s7 = (DeviceS7)device;
 
-                     foreach (Node nd in list)
 
-                     {
 
-                         string respvalue = "";
 
-                         if (nd == null || nd.Address.StringIsEmpty())
 
-                         {
 
-                             Log.Instance.WriteLogAdd($"593-->为空->{s7.DeviceName}");
 
-                         }
 
-                         respvalue = s7.DeviceRead(nd.Address.Trim(), nd.ReadType);
 
-                         int itemnumber = nd.TargetValue.StringToInt();
 
-                         if (itemnumber < 0)
 
-                         {
 
-                             if (respvalue.Equals(Math.Abs(itemnumber).ToString()))
 
-                             {
 
-                                 Node parentNode = CommonUtil.GetTargetNode(device.ServerUrl, parentKey);
 
-                                 resBody.Code = Constants.RET_CONDITUIN_CHECK_FAILURE_CODE;
 
-                                 resBody.Msg = nd.Title + "状态不符合" + parentNode.Title + "条件。";
 
-                                 break;
 
-                             }
 
-                         }
 
-                         else if (!respvalue.Equals(nd.TargetValue))
 
-                         {
 
-                             Node parentNode = CommonUtil.GetTargetNode(device.ServerUrl, parentKey);
 
-                             resBody.Code = Constants.RET_CONDITUIN_CHECK_FAILURE_CODE;
 
-                             resBody.Msg = nd.Title + "状态不符合" + parentNode.Title + "条件。";
 
-                             break;
 
-                         }
 
-                     }
 
-                 }
 
-             }
 
-             catch (Exception ex)
 
-             {
 
-                 YG.Log.Instance.WriteLogAdd($"582-->{ex.Message}");
 
-                 resBody.Code = Constants.RET_CONDITUIN_CHECK_FAILURE_CODE;
 
-                 resBody.Msg = ex.Message;
 
-                 return resBody;
 
-             }
 
-             if (resBody.Code == 1)
 
-             {
 
-                 resBody.Code = Constants.RET_CONDITUIN_CHECK_SUCCESS_CODE;
 
-                 resBody.Msg = Constants.CONDITUIN_CHECK_SUCCESS_MSG;
 
-             }
 
-             return resBody;
 
-         }
 
-         private string OperAsk(Node parentNode, ModbusClient server, int times)
 
-         {
 
-             string ret = RETVAL;
 
-             bool isContinue = true;
 
-             for (int n = 0; n < times; n++)
 
-             {
 
-                 if (parentNode != null)
 
-                 {
 
-                     string[] adresses = (parentNode.Address).Split(util.CommonUtil.SEPLIT_CHAR);
 
-                     string[] targetValues = (parentNode.TargetValue).Split(util.CommonUtil.SEPLIT_CHAR);
 
-                     List<string> nodeIdStrings = new List<string>();
 
-                     //foreach (string row in adresses)
 
-                     //{
 
-                     //    nodeIdStrings.Add(new NodeId(row, (ushort)2).ToString());
 
-                     //}
 
-                     //List<string> readValueList = server.ReadValues(nodeIdStrings);
 
-                     //for (int i = 0; i < readValueList.Count; i++)
 
-                     //{
 
-                     //    if (targetValues[i].ToLower().Equals(readValueList[i].ToLower()))
 
-                     //    {
 
-                     //        //ret = parentNode.Title + "当前已是操作状态,无需重复操作。";
 
-                     //        isContinue = false;
 
-                     //        break;
 
-                     //    }
 
-                     //}
 
-                 }
 
-                 Thread.Sleep(1000 * 5);
 
-                 if (!isContinue)
 
-                 {
 
-                     break;
 
-                 }
 
-             }
 
-             return ret;
 
-         }
 
-         //采集信息
 
-         public bool GetDeviceCollectData()
 
-         {
 
-             foreach (ConnectDeviceBody body in DeviceManage.Instance.GetConnectDeviceList())
 
-             {
 
-                 try
 
-                 {
 
-                     DeviceList device = DeviceManage.Instance.GetOne(body.ServerUrl);
 
-                     //read组的配置
 
-                     List<Node> readNodeList = CommonUtil.GetTargetList(device.ServerUrl, "read");
 
-                     CollectDataBody deviceRedisState = new CollectDataBody();
 
-                     //根据配置里边的read组配置, 把读到的值放到这个里边
 
-                     List<string> readNodeValueStrings = new List<string>();
 
-                     if (device.Dtype.Equals(DeviceType.OPCUa))
 
-                     {
 
-                         try
 
-                         {
 
-                             DeviceOPCUat opcua = (DeviceOPCUat)device;
 
-                             //read组配置的地址列表
 
-                             List<string> readNodeAddressStrings = new List<string>();
 
-                             foreach (Node nd in readNodeList)
 
-                             {
 
-                                 readNodeAddressStrings.Add(nd.Address);
 
-                             }
 
-                             Thread.Sleep(20);
 
-                             readNodeValueStrings = opcua.OpcUa_Read(readNodeAddressStrings);
 
-                         }
 
-                         catch (Exception exxx) { YG.Log.Instance.WriteLogAdd($"692-->{exxx.Message}"); }
 
-                     }
 
-                     else if (device.Dtype.Equals(DeviceType.PLC_S7))
 
-                     {
 
-                         DeviceS7 s7 = (DeviceS7)device;
 
-                         try
 
-                         {
 
-                             foreach (Node nd in readNodeList)
 
-                             {
 
-                                 if (nd == null || nd.Address.StringIsEmpty())
 
-                                 {
 
-                                     Log.Instance.WriteLogAdd($"709-->为空->{s7.DeviceName}");
 
-                                 }
 
-                                 readNodeValueStrings.Add(s7.DeviceRead(nd.Address, nd.ReadType));
 
-                                 Thread.Sleep(20);
 
-                             }
 
-                         }
 
-                         catch (Exception exxx) { YG.Log.Instance.WriteLogAdd($"706-->{exxx.Message}"); }
 
-                     }
 
-                     //将结果值赋给节点
 
-                     for (int i = 0; i < readNodeList.Count; i++)
 
-                     {
 
-                         try
 
-                         {
 
-                             if (readNodeValueStrings.Count > 0)
 
-                             {
 
-                                 Node readValNode = readNodeList[i];
 
-                                 readValNode.Value = readNodeValueStrings[i];
 
-                             }
 
-                         }
 
-                         catch (Exception exxx) { YG.Log.Instance.WriteLogAdd($"719-->{exxx.Message}"); }
 
-                     }
 
-                     //反射赋值         
 
-                     Type t = deviceRedisState.GetType();
 
-                     foreach (PropertyInfo pi in t.GetProperties())
 
-                     {
 
-                         try
 
-                         {
 
-                             string name = pi.Name;//获得属性的名字,后面就可以根据名字判断来进行些自己想要的操作
 
-                             if (pi.Name.Equals("AllowFetchMaterial"))
 
-                             {
 
-                             }
 
-                             foreach (Node nd in readNodeList)
 
-                             {
 
-                                 if (nd.Key == name)
 
-                                 {
 
-                                     if (nd.IsBinary)
 
-                                     {
 
-                                         //处理二进制值,赋给对象
 
-                                         pi.SetValue(deviceRedisState, CommonUtil.GetBinaryBit(Convert.ToInt32(nd.Value), nd.StartPos, nd.EndPos), null);
 
-                                     }
 
-                                     else
 
-                                     {//主程序取名称 
 
-                                         if (name == "MainProgNo" && !string.IsNullOrEmpty(nd.Value))
 
-                                         {
 
-                                             string[] mainProgNoArray = nd.Value.Split('/');
 
-                                             string mainProgNo = mainProgNoArray[mainProgNoArray.Length - 1];
 
-                                             mainProgNo = mainProgNo.StartsWith("_") ? mainProgNo.Substring(1, mainProgNo.Length - 1) : mainProgNo;
 
-                                             pi.SetValue(deviceRedisState, mainProgNo, null);
 
-                                         }
 
-                                         else if (name == "SpActSpeed" && !string.IsNullOrEmpty(nd.Value))
 
-                                         {
 
-                                             pi.SetValue(deviceRedisState, (Convert.ToInt32(Convert.ToDouble(nd.Value)) + ""), null);
 
-                                         }
 
-                                         else
 
-                                         {
 
-                                             pi.SetValue(deviceRedisState, nd.Value, null);//给对象赋值
 
-                                         }
 
-                                     }
 
-                                 }
 
-                             }
 
-                         }
 
-                         catch (Exception exx)
 
-                         {
 
-                             YG.Log.Instance.WriteLogAdd($"764-->{exx.Message}");
 
-                         }
 
-                     }
 
-                     try
 
-                     {
 
-                         deviceRedisState.NowDate = string.Format("{0:yyyy-MM-dd HH:mm:ss}", DateTime.Now);
 
-                         string jsonData = JsonConvert.SerializeObject(deviceRedisState);
 
-                         ServiceStackRedisHelper.SetValue(device.ServerUrl, jsonData.ToString());
 
-                     }
 
-                     catch (Exception exs)
 
-                     {
 
-                         YG.Log.Instance.WriteLogAdd($"916------>>{exs.Message}");
 
-                     }
 
-                     //回调请求 每隔5秒调一次
 
-                     int currentSencond = DateTime.Now.Second;
 
-                     // if (currentSencond % 3 == 0)
 
-                     {
 
-                         try
 
-                         {
 
-                             CommonUtil.CallBackRequest(device);
 
-                         }
 
-                         catch(Exception exs)
 
-                         {
 
-                             YG.Log.Instance.WriteLogAdd($"922------>>{exs.Message}");
 
-                         }
 
-                     }
 
-                 }
 
-                 catch (Exception ex)
 
-                 {
 
-                     YG.Log.Instance.WriteLogAdd($"776-->{ex.Message}");
 
-                     return false;
 
-                 }
 
-             }
 
-             return true;
 
-         }
 
-     }
 
-     public class Servlet
 
-     {
 
-         public virtual void onGet(System.Net.HttpListenerRequest request, System.Net.HttpListenerResponse response, string info) { }
 
-         public virtual void onPost(System.Net.HttpListenerRequest request, System.Net.HttpListenerResponse response) { }
 
-         public virtual void onCreate()
 
-         {
 
-         }
 
-     }
 
-     public class MyServlet : Servlet
 
-     {
 
-         public override void onCreate()
 
-         {
 
-             base.onCreate();
 
-         }
 
-         public override void onGet(HttpListenerRequest request, HttpListenerResponse response, string info)
 
-         {
 
-             byte[] buffer = Encoding.UTF8.GetBytes(info);
 
-             System.IO.Stream output = response.OutputStream;
 
-             output.Write(buffer, 0, buffer.Length);
 
-             output.Close();
 
-         }
 
-         public override void onPost(HttpListenerRequest request, HttpListenerResponse response)
 
-         {
 
-             Console.WriteLine("POST:" + request.Url);
 
-             byte[] res = Encoding.UTF8.GetBytes("OK");
 
-             response.OutputStream.Write(res, 0, res.Length);
 
-         }
 
-     }
 
- }
 
 
  |