吉特日化MES&WMS系統--三色燈控制協議轉http

賀臣發表於2021-04-23

 

  關於硬體控制大部分都是使用CS客戶端程式,一般連線口都是用網口,串列埠,USB口等,應用通訊是不支援HTTp協議操作的,而目前一般做技術的人員都在於BS開發,使用HTTP 協議,所以在硬體互動上可能覺得很複雜。最近在實施牙膏車間地磅稱重過程中使用到了三色燈的控制,在開發控制的過程中將三色燈的控制轉換了一下協議:

 

  1.  首先使用CS端程式 開發了一個控制客戶端,在操作介面上可以控制燈光

  

 

 

  2. 我想通網頁瀏覽器或者手機端來控制燈光,需要將按鈕操作的動作轉換為HTTP 協議

 

  3. 在專案中新增 Microsoft.AspNet.WebApi.OwinSelfHost

  

 

  4.  新建一個Web API 的Controller ,具體程式碼如下:

吉特日化MES&WMS系統--三色燈控制協議轉http
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web.Http;

namespace Git.WMS.LightSDK.Server
{
    public partial class LightController: ApiController
    {
        /// <summary>
        /// 連線報警燈
        /// </summary>
        [HttpGet]
        public DataResult Con()
        {
            DataResult dataResult=LampServer.Instance().Init();

            return dataResult;
        }

        /// <summary>
        /// 關閉報警燈連線
        /// </summary>
        [HttpGet]
        public DataResult DisCon()
        {
            DataResult dataResult = LampServer.Instance().Close();
            return dataResult;
        }

        /// <summary>
        /// 開啟紅燈
        /// </summary>
        [HttpGet]
        public DataResult OpenRed()
        {
            DataResult dataResult = LampServer.Instance().OpenRed();
            return dataResult;
        }

        /// <summary>
        /// 開啟黃燈
        /// </summary>
        [HttpGet]
        public DataResult OpenYellow()
        {
            DataResult dataResult = LampServer.Instance().OpenYellow();
            return dataResult;
        }

        /// <summary>
        /// 開啟綠燈
        /// </summary>
        [HttpGet]
        public DataResult OpenGreen()
        {
            DataResult dataResult = LampServer.Instance().OpenGreen();
            return dataResult;
        }

        /// <summary>
        /// 關閉所有燈
        /// </summary>
        [HttpGet]
        public DataResult CloseAll()
        {
            DataResult dataResult = LampServer.Instance().CloseAll();
            return dataResult;
        }
    }
}
View Code

  

  5. 新增 Startup 配置指令,程式碼如下:

吉特日化MES&WMS系統--三色燈控制協議轉http
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
using Owin;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http.Formatting;
using System.Text;
using System.Threading.Tasks;
using System.Web.Http;

namespace Git.WMS.LightSDK.Server
{
    public class Startup
    {
        public void Configuration(IAppBuilder appBuilder)
        {
            HttpConfiguration config = new HttpConfiguration();
            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{action}"
            );
            
            config.Formatters.Clear();
            config.Formatters.Add(new JsonMediaTypeFormatter());
            config.Formatters.JsonFormatter.SerializerSettings =
            new JsonSerializerSettings
            {
                ContractResolver = new CamelCasePropertyNamesContractResolver()
            };

            appBuilder.UseWebApi(config);
        }
    }
}
View Code

 

  6. 在CS端新增一個啟動服務

吉特日化MES&WMS系統--三色燈控制協議轉http
/// <summary>
        /// 開啟API服務
        /// </summary>
        public void Start()
        {
            string baseAddress = ResourceManager.GetSettingEntity("API_URL").Value;
            Microsoft.Owin.Hosting.WebApp.Start<Startup>(url: baseAddress);
            Console.WriteLine("程式已啟動,按任意鍵退出");
            LampServer.Instance().Init();
            Console.ReadLine();
        }
View Code

 

 

   啟動服務之後就可以根據配置使用的地址來訪問了,訪問方式和WebAPI模式一樣,相當於使用CS程式託管了一個小型IIS服務,由於工作網路環境較差,無法上傳到GitHub,百度網盤分享一下程式碼

  連結:https://pan.baidu.com/s/1-6OlB8UppsTgHhVCMAIjPw
  提取碼:1w4d
  複製這段內容後開啟百度網盤手機App,操作更方便哦

  

  GitHub地址: https://github.com/hechenqingyuan/LightSDK.git

   

  通過URL請求響應如下

  

 

相關文章