123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586 |
-
- using FANUC;
- using fanuc采集;
- using Newtonsoft.Json;
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Net;
- using System.Net.NetworkInformation;
- using System.Text;
- using System.Threading;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- using static fanuc采集.ConDevice;
- namespace HttpServer
- {
- public partial class Form1 : Form
- {
- string Http_Request_Url = "http://127.0.0.1:5100/fanuc/";
- bool _contine = true;//用于线程循环
- private AutoResetEvent autoConnectEvent = new AutoResetEvent(false);//此处需要调用System.Threading;用于触发等待的线程已发生的事件(连接)
- public delegate void RecvAndSendHandler(HttpListenerContext s);//此处需要调用System.Net用于请求和响应HttpListener类
- public event RecvAndSendHandler RecvAndSend;
- AsyncCallback callback;
- HttpListenerContext context = null;
- public Form1()
- {
- InitializeComponent();
- }
- private void Form1_Load(object sender, EventArgs e)
- {
- this.RecvAndSend += new RecvAndSendHandler(HttpListen_RecvAndSend);
- #region 添加监听的信息线程添加到线程池
- WaitCallback wc = new WaitCallback(http_Listen);
- ThreadPool.QueueUserWorkItem(wc);
- label1.Text = "HttpServer已开启:" + Http_Request_Url;
- #endregion
- }
- /// <summary>
- /// 监听的线程
- /// </summary>
- /// <param name="ob"></param>
- private void http_Listen(object ob)
- {
- callback = new AsyncCallback(acceptCallback);
- HttpListener httpListenner;
- httpListenner = new HttpListener();
- httpListenner.AuthenticationSchemes = AuthenticationSchemes.Anonymous;
- httpListenner.Prefixes.Add(Http_Request_Url);
- httpListenner.Start();
-
- while (_contine)
- {
- try
- {
- httpListenner.BeginGetContext(callback, httpListenner);
- autoConnectEvent.WaitOne();
- }
- catch (Exception ex)
- {
- YG.Log.Instance.WriteLogAdd(">>>===服务异常 : >>>>===" + ex.Message);
- }
- Thread.Sleep(10);
- }
- }
- /// <summary>
- /// 回调函数
- /// </summary>
- /// <param name="ar"></param>
- private void acceptCallback(IAsyncResult ar)
- {
- try
- {
- context = ((HttpListener)ar.AsyncState).EndGetContext(ar);
- }
- catch (Exception)
- {
- autoConnectEvent.Set();
- }
- if (context != null)
- {
- RecvAndSend(context);//触发我们一开始声明的事件
- autoConnectEvent.Set();
- }
- }
- /// <summary>
- /// 接听到消息的方法
- /// </summary>
- /// <param name="cont"></param>
- private void HttpListen_RecvAndSend(HttpListenerContext cont)
- {
- HttpListenerRequest request = cont.Request;
- HttpListenerResponse response = context.Response;
- Servlet servlet = new MyServlet();
- servlet.onCreate();
- try {
- if (request.HttpMethod == "GET")
- {
- {
- if (!request.Url.ToString().Contains("favicon"))
- {
- string ip = request.QueryString["ip"];
- string port = request.QueryString["port"];
- string fun = request.QueryString["fun"];
- int ret = 0;
- ConDevice CIF = new ConDevice();
- switch (fun)
- {
- #region
- case "All":
- ConDevice2 CIF2 = new ConDevice2(ip, port);
- DeviceInfo info = new DeviceInfo();
- if (CIF2.h > 0)
- {
- info.MainProg = CIF2.MainProg();
- info.CurProg = CIF2.MainProg();
- info.Status = CIF2.Status();
- info.EMG = CIF2.EMG();
- info.ActFeed = CIF2.ActFeed();
- info.ActSpindle = CIF2.ActSpindle();
- info.SpindleLoad = CIF2.SpindleLoad();
- info.spindleMagnification = CIF2.spindleMagnification();
- info.ServoLoadX = CIF2.ServoLoadX();
- info.ServoLoadY = CIF2.ServoLoadY();
- info.ServoLoadZ = CIF2.ServoLoadZ();
- info.PowerOnTime = CIF2.PowerOnTime();
- info.AccumulateCuttingTime = CIF2.AccumulateCuttingTime();
- info.CuttingTimePerCycle = CIF2.CuttingTimePerCycle();
- info.WorkTime = CIF2.WorkTime();
- info.Part_Count = CIF2.Part_Count();
- string isalarm = "";
- //info.AlmMsg = CIF2.AlmMsg(out isalarm);
- info.AlmMsg = CIF2.operationAlarm();
- info.IsAlarm = isalarm;
- info.ToolNo = CIF2.ToolNo();
- info.ToolLife = CIF2.ToolLife();
- //info.ToolLife = CIF2.ToolLife(ip, port);
- string jsonalldata = JsonConvert.SerializeObject(info);
- CIF2.freehand();
- AddList(DateTime.Now.ToString(), "GET", request.Url.ToString(), jsonalldata);
- servlet.onGet(request, response, jsonalldata);
- }
- else
- {
- AddList(DateTime.Now.ToString(), "GET", request.Url.ToString(), CIF2.h.ToString());
- servlet.onGet(request, response, CIF2.h.ToString());
- }
- break;
- case "UploadFile":
- try
- {
- string prgname = request.QueryString["prgname"];
- YG.Log.Instance.WriteLogAdd(">>>===上传文件名 : >>>>===" + prgname);
- ret = CIF.UploadNcProg(ip, port, prgname);
- if (ret == Fanuc.EW_OK)
- {
- AddList(DateTime.Now.ToString(), "GET", request.Url.ToString(), "OK");
- servlet.onGet(request, response, "0");
- }
- else
- {
- AddList(DateTime.Now.ToString(), "GET", request.Url.ToString(), ret.ToString());
- servlet.onGet(request, response, ret.ToString());
- }
- }
- catch (Exception uploadex)
- {
- servlet.onGet(request, response, uploadex.Message);
- }
- break;
- case "DeleteNCProgram":
- try
- {
- string prgname = request.QueryString["prgname"];
- ret = CIF.DeleteNcProg(ip, port, prgname);
- if (ret == Fanuc.EW_OK)
- {
- AddList(DateTime.Now.ToString(), "GET", request.Url.ToString(), "OK");
- servlet.onGet(request, response, "0");
- }
- else
- {
- AddList(DateTime.Now.ToString(), "GET", request.Url.ToString(), ret.ToString());
- servlet.onGet(request, response, ret.ToString());
- }
- }
- catch (Exception uploadex)
- {
- servlet.onGet(request, response, uploadex.Message);
- }
- break;
- case "SelectNcProgram":
- try
- {
- string prgname = request.QueryString["prgname"];
- YG.Log.Instance.WriteLogAdd(">>>===选择程序文件名 : >>>>===" + prgname);
- ret = CIF.SelectedNcProg(ip, port, prgname);
- if (ret == Fanuc.EW_OK)
- {
- AddList(DateTime.Now.ToString(), "GET", request.Url.ToString(), "OK");
- servlet.onGet(request, response, "0");
- }
- else
- {
- AddList(DateTime.Now.ToString(), "GET", request.Url.ToString(), ret.ToString());
- servlet.onGet(request, response, ret.ToString());
- }
- }
- catch (Exception uploadex)
- {
- servlet.onGet(request, response, uploadex.Message);
- }
- break;
- case "StartNCProgram":
- try
- {
- string prgname = request.QueryString["prgname"];
- ret = CIF.ReadPmcMarco(ip, port, prgname);
- if (ret == Fanuc.EW_OK)
- {
- AddList(DateTime.Now.ToString(), "GET", request.Url.ToString(), "OK");
- servlet.onGet(request, response, "0");
- }
- else
- {
- AddList(DateTime.Now.ToString(), "GET", request.Url.ToString(), ret.ToString());
- servlet.onGet(request, response, ret.ToString());
- }
- }
- catch (Exception uploadex)
- {
- servlet.onGet(request, response, uploadex.Message);
- }
- break;
- // 读写NCDATA
- case "ReadNcdataMarco":
- string ncDateaddress = request.QueryString["address"];
- int ReadncdataMarco = CIF.ReadMacroRange(ip, port, ncDateaddress);
- AddList(DateTime.Now.ToString(), "GET", request.Url.ToString(), "{\"ReadncdataMarco\": \"" + ReadncdataMarco + "\"}");
- servlet.onGet(request, response, "{\"ReadncdataMarco\": \"" + ReadncdataMarco + "\"}");
- break;
- // 读写G54工件坐标系
- case "ReadWriteZofs":
- int ReadWriteZofs = CIF.ReadWriteZofs(ip, port);
- AddList(DateTime.Now.ToString(), "GET", request.Url.ToString(), "{\"ReadWriteZofs\": \"" + ReadWriteZofs + "\"}");
- servlet.onGet(request, response, "{\"ReadWriteZofs\": \"" + ReadWriteZofs + "\"}");
- break;
- case "Connect":///连接测试
- try
- {
- Ping pingSender = new Ping();
- PingReply reply = pingSender.Send(ip);
- if (reply.Status!= IPStatus.Success)
- {
- ret = -16;
- }
-
- //retConnect = Fanuc.cnc_allclibhndl3(ip, Convert.ToUInt16(port), 2, out Fanuc.h);
- Thread.Sleep(100);
- }
- catch (Exception ex)
- {
- servlet.onGet(request, response, ex.Message);
- }
- if (ret == Fanuc.EW_OK)
- {
- AddList(DateTime.Now.ToString(), "GET", request.Url.ToString(), "OK");
- servlet.onGet(request, response, "0");
- }
- else
- {
- AddList(DateTime.Now.ToString(), "GET", request.Url.ToString(), ret.ToString());
- servlet.onGet(request, response, ret.ToString());
- }
- break;
- case "MainProg":
- string MainProg = CIF.MainProg(ip, port);
- AddList(DateTime.Now.ToString(), "GET", request.Url.ToString(), "{\"MainProg\": \"" + MainProg + "\"}");
- servlet.onGet(request, response, "{\"MainProg\": \"" + MainProg + "\"}");
- break;
- case "CurProg":
- string CurProg = CIF.MainProg(ip, port);
- AddList(DateTime.Now.ToString(), "GET", request.Url.ToString(), "{\"CurProg\": \"" + CurProg + "\"}");
- servlet.onGet(request, response, "{\"CurProg\": \"" + CurProg + "\"}");
- break;
- case "Status":
- string Status = CIF.Status(ip, port);
- AddList(DateTime.Now.ToString(), "GET", request.Url.ToString(), "{\"Status\": \"" + Status + "\"}");
- servlet.onGet(request, response, "{\"Status\": \"" + Status + "\"}");
- break;
- case "Mode":
- string Mode = CIF.Mode(ip, port);
- AddList(DateTime.Now.ToString(), "GET", request.Url.ToString(), "{\"Mode\": \"" + Mode + "\"}");
- servlet.onGet(request, response, "{\"Mode\": \"" + Mode + "\"}");
- break;
- case "EMG":
- string EMG = CIF.EMG(ip, port);
- AddList(DateTime.Now.ToString(), "GET", request.Url.ToString(), "{\"EMG\": \"" + EMG + "\"}");
- servlet.onGet(request, response, "{\"EMG\": \"" + EMG + "\"}");
- break;
- case "ActFeed":
- string ActFeed = CIF.ActFeed(ip, port);
- AddList(DateTime.Now.ToString(), "GET", request.Url.ToString(), "{\"ActFeed\": \"" + ActFeed + "\"}");
- servlet.onGet(request, response, "{\"ActFeed\": \"" + ActFeed + "\"}");
- break;
- case "ActSpindle":
- string ActSpindle = CIF.ActSpindle(ip, port);
- AddList(DateTime.Now.ToString(), "GET", request.Url.ToString(), "{\"ActSpindle\": \"" + ActSpindle + "\"}");
- servlet.onGet(request, response, "{\"ActSpindle\": \"" + ActSpindle + "\"}");
- break;
- case "ServoLoadX":
- string ServoLoadX = CIF.ServoLoadX(ip, port);
- AddList(DateTime.Now.ToString(), "GET", request.Url.ToString(), "{\"ServoLoadX\": \"" + ServoLoadX + "\"}");
- servlet.onGet(request, response, "{\"ServoLoadX\": \"" + ServoLoadX + "\"}");
- break;
- case "ServoLoadY":
- string ServoLoadY = CIF.ServoLoadY(ip, port);
- AddList(DateTime.Now.ToString(), "GET", request.Url.ToString(), "{\"ServoLoadY\": \"" + ServoLoadY + "\"}");
- servlet.onGet(request, response, "{\"ServoLoadY\": \"" + ServoLoadY + "\"}");
- break;
- case "ServoLoadZ":
- string ServoLoadZ = CIF.ServoLoadZ(ip, port);
- AddList(DateTime.Now.ToString(), "GET", request.Url.ToString(), "{\"ServoLoadZ\": \"" + ServoLoadZ + "\"}");
- servlet.onGet(request, response, "{\"ServoLoadZ\": \"" + ServoLoadZ + "\"}");
- break;
- case "PowerOnTime":
- string PowerOnTime = CIF.PowerOnTime(ip, port);
- AddList(DateTime.Now.ToString(), "GET", request.Url.ToString(), "{\"PowerOnTime\": \"" + PowerOnTime + "\"}");
- servlet.onGet(request, response, "{\"PowerOnTime\": \"" + PowerOnTime + "\"}");
- break;
- case "AccumulateCuttingTime":
- string AccumulateCuttingTime = CIF.AccumulateCuttingTime(ip, port);
- AddList(DateTime.Now.ToString(), "GET", request.Url.ToString(), "{\"AccumulateCuttingTime\": \"" + AccumulateCuttingTime + "\"}");
- servlet.onGet(request, response, "{\"AccumulateCuttingTime\": \"" + AccumulateCuttingTime + "\"}");
- break;
- case "CuttingTimePerCycle":
- string CuttingTimePerCycle = CIF.CuttingTimePerCycle(ip, port);
- AddList(DateTime.Now.ToString(), "GET", request.Url.ToString(), "{\"CuttingTimePerCycle\": \"" + CuttingTimePerCycle + "\"}");
- servlet.onGet(request, response, "{\"CuttingTimePerCycle\": \"" + CuttingTimePerCycle + "\"}");
- break;
- case "WorkTime":
- string WorkTime = CIF.WorkTime(ip, port);
- AddList(DateTime.Now.ToString(), "GET", request.Url.ToString(), "{\"WorkTime\": \"" + WorkTime + "\"}");
- servlet.onGet(request, response, "{\"WorkTime\": \"" + WorkTime + "\"}");
- break;
- case "Part_Count":
- string Part_Count = CIF.Part_Count(ip, port);
- AddList(DateTime.Now.ToString(), "GET", request.Url.ToString(), "{\"Part_Count\": \"" + Part_Count + "\"}");
- servlet.onGet(request, response, "{\"Part_Count\": \"" + Part_Count + "\"}");
- break;
- case "ToolNo":
- string ToolNo = CIF.ToolNo(ip, port);
- AddList(DateTime.Now.ToString(), "GET", request.Url.ToString(), "{\"ToolNo\": \"" + ToolNo + "\"}");
- servlet.onGet(request, response, "{\"ToolNo\": \"" + ToolNo + "\"}");
- break;
- case "ToolList":
- List<Tool> tools = CIF.ToolLife(ip, port);
- AddList(DateTime.Now.ToString(), "GET", request.Url.ToString(), "{\"ToolLife\": \"" + tools + "\"}");
- servlet.onGet(request, response, JsonConvert.SerializeObject(tools));
- break;
- case "AlmInfo":
- try {
- List<ConDevice.AlmInfo> allAlmList = new List<AlmInfo>();
- ConDevice2 con2 = new ConDevice2(ip, port);
- //实时报警
- List<ConDevice.AlmInfo> alms = con2.operationAlarm();
- //信息履历
- List<ConDevice.AlmInfo> almLL = con2.rdalmhistry5();
- if (alms != null && alms.Count() > 0)
- {
- allAlmList.AddRange(alms);
- }
- if (almLL != null && almLL.Count() > 0)
- {
- allAlmList.AddRange(almLL);
- }
- con2.freehand();
- string jsonData = JsonConvert.SerializeObject(allAlmList);
- AddList(DateTime.Now.ToString(), "GET", request.Url.ToString(), "{\"AlmInfo\": \"" + allAlmList.Count() + "\"}");
- servlet.onGet(request, response, jsonData);
- }
- catch(Exception ex)
- {
- servlet.onGet(request, response, ex.Message);
- }
-
- break;
- case "IsAlarm":
- string state1 = "";
- List<ConDevice.AlmInfo> s1 = CIF.AlmMsg(ip, port, out state1);
- AddList(DateTime.Now.ToString(), "GET", request.Url.ToString(), "{\"IsAlarm\": \"" + state1 + "\"}");
- servlet.onGet(request, response, "{\"IsAlarm\": \"" + state1 + "\"}");
- break;
- case "NcList":
- List<ConDevice.NcInfo> ncinfo = CIF.NcList(ip, port);
- string ncinfojson = JsonConvert.SerializeObject(ncinfo);
- AddList(DateTime.Now.ToString(), "GET", request.Url.ToString(), "{\"NcList\": \"" + ncinfojson + "\"}");
- servlet.onGet(request, response, "{\"NcList\": \"" + ncinfojson + "\"}");
- break;
- #endregion
- default: servlet.onGet(request, response, "无效的请求"); break;
- }
- }
- }
- response.Close();
- }
- else if (request.HttpMethod == "POST")
- {
- }
- }catch(Exception ex)
- {
- YG.Log.Instance.WriteLogAdd(">>>===服务异常 : >>>>===" + ex.Message);
- }
- }
-
- public class DeviceInfo
- {
- public string MainProg { get; set; }
- public string CurProg
- { get; set; }
- public string Status
- { get; set; }
- public string Mode
- { get; set; }
- public string EMG
- { get; set; }
- public string ActFeed
- { get; set; }
- public string ActSpindle
- { get; set; }
- public string spindleMagnification
- { get; set; }
- public string SpindleLoad
- { get; set; }
- public string ServoLoadX
- { get; set; }
- public string ServoLoadY
- { get; set; }
- public string ServoLoadZ
- { get; set; }
- public string PowerOnTime
- { get; set; }
- public string AccumulateCuttingTime
- { get; set; }
- public string CuttingTimePerCycle
- { get; set; }
- public string WorkTime
- { get; set; }
- public string Part_Count
- { get; set; }
- public string IsAlarm
- { get; set; }
- public List<ConDevice.AlmInfo> AlmMsg
- { get; set; }
- public string ToolNo
- { get; set; }
- public string ToolLife
- { get; set; }
- }
- 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 void AddList(string dtime, string type, string url, string res)
- {
- this.Invoke(new Action(delegate ()
- {
- listView1.BeginUpdate(); //数据更新,UI暂时挂起,直到EndUpdate绘制控件,可以有效避免闪烁并大大提高加载速度
- ListViewItem lvi = new ListViewItem();
- lvi.Text = dtime;
- lvi.SubItems.Add(type);
- lvi.SubItems.Add(url);
- lvi.SubItems.Add(res);
- this.listView1.Items.Insert(0, lvi);
- if(this.listView1.Items.Count > 10)
- {
- this.listView1.Items.Clear();
- }
- this.listView1.EndUpdate(); //结束数据处理,UI界面一次性绘制。}
- }));
- }
- public class MyServlet : Servlet
- {
- public override void onCreate()
- {
- //base.onCreate();
- }
- public override void onGet(HttpListenerRequest request, HttpListenerResponse response, string info)
- {
- Console.WriteLine("GET:" + request.Url);
- byte[] buffer = Encoding.UTF8.GetBytes(info);
- //string sss = request.QueryString["ty"];
- System.IO.Stream output = response.OutputStream;
- output.Write(buffer, 0, buffer.Length);
- // You must close the output stream.
- output.Close();
- //listener.Stop();
- }
- 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);
- }
- }
- }
- }
|