吉特日化MES&WMS系統–三色燈控制協議轉http
關於硬件控制大部分都是使用CS客戶端程序,一般連接口都是用網口,串口,USB口等,應用通訊是不支持HTTp協議操作的,而目前一般做技術的人員都在於BS開發,使用HTTP 協議,所以在硬件交互上可能覺得很複雜。最近在實施牙膏車間地磅稱重過程中使用到了三色燈的控制,在開發控制的過程中將三色燈的控制轉換了一下協議:
1. 首先使用CS端程序 開發了一個控制客戶端,在操作界面上可以控制燈光
2. 我想通網頁瀏覽器或者手機端來控制燈光,需要將按鈕操作的動作轉換為HTTP 協議
3. 在項目中添加 Microsoft.AspNet.WebApi.OwinSelfHost
4. 新建一個Web API 的Controller ,具體代碼如下:


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 配置指令,代碼如下:


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端添加一個啟動服務


/// <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,百度網盤分享一下代碼
鏈接://pan.baidu.com/s/1-6OlB8UppsTgHhVCMAIjPw
提取碼:1w4d
複製這段內容後打開百度網盤手機App,操作更方便哦
GitHub地址: //github.com/hechenqingyuan/LightSDK.git