123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316 |
-
- using FANUC;
- using Fanuc_HttpServer.fanuc;
- using Fanuc_HttpServer.hedidenain;
- using Fanuc_HttpServer.opcuaserver;
- using fanuc采集;
- using HttpServer.mazak;
- using HttpServer.mitsubishi;
- using Newtonsoft.Json;
- using RequestServer.HttpServer;
- using ResponseServer.HttpServer;
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Configuration;
- using System.Data;
- using System.Drawing;
- using System.IO;
- 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 FanucHttp_Request_Url = ConfigurationManager.AppSettings["FanucHttp_Request_Url"];
- 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;
- private MazakServer mazakServer = new MazakServer();
- 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已开启:" + FanucHttp_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(FanucHttp_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")
- {
- response.Close();
- }
- else if (request.HttpMethod == "POST")
- {
- try
- {
- Stream stream = context.Request.InputStream;
- StreamReader reader = new StreamReader(stream, Encoding.UTF8);
- string body = reader.ReadToEnd();
- //YG.Log.Instance.WriteLogAdd(">>>===收到POST数据 : >>>>===" + body);
- ResponseBody responseBody = new ResponseBody();
- RequestBody<ToolData> reqBody = JsonConvert.DeserializeObject<RequestBody<ToolData>>(body);
- if (reqBody.deviceType == DeviceTypeEnum.Fanuc.ToString())
- {
- responseBody = FanucServer.requestHttpServer(reqBody);
- AddList(DateTime.Now.ToString(), "POST", request.Url.ToString(), responseBody.msg);
- }
- else if (reqBody.deviceType == DeviceTypeEnum.Opcua.ToString())
- {
- reqBody.userName = "OpcUaClient";
- reqBody.password = "OPCUA123";
- responseBody = new OpcUaServer().requestHttpServer(reqBody);
- AddList(DateTime.Now.ToString(), "POST", request.Url.ToString(), responseBody.msg);
- }
- else if (reqBody.deviceType == DeviceTypeEnum.Heidenhain.ToString())
- {
- responseBody = new HeidenhainServer().requestHttpServer(reqBody);
- AddList(DateTime.Now.ToString(), "POST", request.Url.ToString(), responseBody.msg);
- }
- else if (reqBody.deviceType == DeviceTypeEnum.Mitsubishi.ToString())
- {
- responseBody = new MitsubishiServer().requestHttpServer(reqBody);
- AddList(DateTime.Now.ToString(), "POST", request.Url.ToString(), responseBody.msg);
- }
- else if (reqBody.deviceType == DeviceTypeEnum.Mazaka.ToString())
- {
- responseBody = mazakServer.requestHttpServer(reqBody);
- AddList(DateTime.Now.ToString(), "POST", request.Url.ToString(), responseBody.msg);
- }
- response.ContentType = "application/json;charset=UTF-8";
- response.ContentEncoding = Encoding.UTF8;
- response.AppendHeader("Content-Type", "application/json;charset=UTF-8");
- string retJsonData = JsonConvert.SerializeObject(responseBody);
- using (StreamWriter writer = new StreamWriter(response.OutputStream, Encoding.UTF8))
- {
- YG.Log.Instance.WriteLogAdd($"响应结果--->>{JsonConvert.SerializeObject(JsonConvert.SerializeObject(responseBody))}--->>{body}\r\n");
- writer.Write(JsonConvert.SerializeObject(responseBody));
- writer.Close();
- response.Close();
- }
- }
- catch (Exception opcex)
- {
- YG.Log.Instance.WriteLogAdd($"响应异常--->>" + opcex.Message);
- AddList(DateTime.Now.ToString(), "POST", request.Url.ToString(), opcex.Message);
- ResponseBody responseBody = new ResponseBody();
- responseBody.result = false;
- response.Close();
- }
- }
- }
- catch (Exception ex)
- {
- YG.Log.Instance.WriteLogAdd(">>>===服务异常 : >>>>===" + ex.Message);
- ResponseBody responseBody = new ResponseBody();
- responseBody.result = false;
- response.Close();
- }
- }
- 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);
- }
- }
- }
- }
|