關於硬體控制大部分都是使用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; } } }
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); } } }
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(); }
啟動服務之後就可以根據配置使用的地址來訪問了,訪問方式和WebAPI模式一樣,相當於使用CS程式託管了一個小型IIS服務,由於工作網路環境較差,無法上傳到GitHub,百度網盤分享一下程式碼
連結:https://pan.baidu.com/s/1-6OlB8UppsTgHhVCMAIjPw
提取碼:1w4d
複製這段內容後開啟百度網盤手機App,操作更方便哦
GitHub地址: https://github.com/hechenqingyuan/LightSDK.git
通過URL請求響應如下