代码改变世界

吉特日化MES&WMS系统--三色灯控制协议转http

2021-04-23 16:11  贺臣  阅读(1254)  评论(3编辑  收藏  举报

 

  关于硬件控制大部分都是使用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,百度网盘分享一下代码

  链接:https://pan.baidu.com/s/1-6OlB8UppsTgHhVCMAIjPw
  提取码:1w4d
  复制这段内容后打开百度网盘手机App,操作更方便哦

  

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

   

  通过URL请求响应如下

  

 


作者:情缘
出处:http://www.cnblogs.com/qingyuan/
关于作者:从事仓库,生产软件方面的开发,在项目管理以及企业经营方面寻求发展之路
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
联系方式: 个人QQ  821865130 ; 仓储技术QQ群 88718955,142050808 ;
吉特仓储管理系统 开源地址: https://github.com/hechenqingyuan/gitwms