using EZSockets; using RequestServer.HttpServer; using ResponseServer.HttpServer; using System; using System.Collections.Generic; using System.Linq; using System.Net.NetworkInformation; using System.Text; using System.Threading; using System.Threading.Tasks; namespace HttpServer.mitsubishi { class MitsubishiServer { private static string ON_LINE_STATE = "在线"; public static Dictionary deviceList { get; set; } = new Dictionary(); public static ResponseBody requestHttpServer(RequestBody requestBody) { string ip = requestBody.serverUrl; string port = requestBody.port; string fun = requestBody.type; ResponseBody responseBody = new ResponseBody(); MitCom mitCom = null; //先ping Ping pingSender = new Ping(); PingReply reply = pingSender.Send(requestBody.serverUrl); if (reply.Status != IPStatus.Success) { responseBody.result = false; responseBody.msg = "调用失败"; } else { if (deviceList == null || (deviceList.Where(m => m.Key == requestBody.serverUrl).Count() == 0)) { try { mitCom = new MitCom(requestBody.serverUrl); mitCom.GetSimConnect("M700M", "1", "10", requestBody.serverUrl); //deviceList.Add(requestBody.serverUrl, mitCom); responseBody.deviceState = ON_LINE_STATE; } catch (Exception e) { YG.Log.Instance.WriteLogAdd($"三菱连接结果-ex-->> " + e.Message); } Thread.Sleep(100); } else { mitCom = deviceList.Where(m => m.Key == requestBody.serverUrl).FirstOrDefault().Value; } if (mitCom != null) { try { responseBody.deviceState = ON_LINE_STATE; if (fun == ActionTypeEnum.Collect.ToString()) { int pdata; string loadstr; double pdspeed, pdspeedFM, pdspeedFS, pdspeedFE, pdspeedFE1; mitCom.GetSpindleInfo(2, 1, out pdata, out loadstr);//主轴转速 responseBody.actSpindle = pdata.ToString(); mitCom.GetSpindleInfo(3, 1, out pdata, out loadstr);//主轴负载 //mitCom.GetSpindleInfo(4, 1, out pdata, out loadstr);//转速 responseBody.spindleMagnification = pdata.ToString(); mitCom.GetFeedSpeed(0, out pdspeed, "GetFeedSpeedFA"); //获取指令进给速度 mitCom.GetFeedSpeed(3, out pdspeedFE, "GetFeedSpeedFE");//攻丝(FE); mitCom.GetFeedSpeed(4, out pdspeedFE1, "GetFeedSpeedFE1");//攻丝(FE); responseBody.actFeed = pdspeedFE.ToString(); responseBody.feedRateOvr= (Convert.ToInt32(pdspeedFE) / pdspeed).ToString(); string programNumber; mitCom.GetProgramNumber(out programNumber); responseBody.mainProg = programNumber; //string pvValue; //mitCom.GetParaValue(30, 8002, 1, 1, out pvValue); int runTime; mitCom.GetRunTime(out runTime); mitCom.SimClose(); responseBody.powerOnTime = (runTime/60).ToString(); } } catch (Exception e) { YG.Log.Instance.WriteLogAdd($"三菱连接结果-ex-->> " + e.Message); deviceList.Remove(requestBody.serverUrl); } } } return responseBody; } } }