关于硬件控制大部分都是使用CS客户端程序,一般连接口都是用网口,串口,USB口等,应用通讯是不支持HTTp协议操作的,而目前一般做技术的人员都在于BS开发,使用HTTP 协议,所以在硬件交互上可能觉得很复杂。最近在实施牙膏车间地磅称重过程中使用到了三色灯的控制,在开发控制的过程中将三色灯的控制转换了一下协议:

  1.  首先使用CS端程序 开发了一个控制客户端,在操作界面上可以控制灯光

  

  2. 我想通网页浏览器或者手机端来控制灯光,需要将按钮操作的动作转换为HTTP 协议

  3. 在项目中添加 Microsoft.AspNet.WebApi.OwinSelfHost

  

  4.  新建一个Web API 的Controller ,具体代码如下:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Web.Http;
  7.  
  8. namespace Git.WMS.LightSDK.Server
  9. {
  10. public partial class LightController: ApiController
  11. {
  12. /// <summary>
  13. /// 连接报警灯
  14. /// </summary>
  15. [HttpGet]
  16. public DataResult Con()
  17. {
  18. DataResult dataResult=LampServer.Instance().Init();
  19.  
  20. return dataResult;
  21. }
  22.  
  23. /// <summary>
  24. /// 关闭报警灯连接
  25. /// </summary>
  26. [HttpGet]
  27. public DataResult DisCon()
  28. {
  29. DataResult dataResult = LampServer.Instance().Close();
  30. return dataResult;
  31. }
  32.  
  33. /// <summary>
  34. /// 打开红灯
  35. /// </summary>
  36. [HttpGet]
  37. public DataResult OpenRed()
  38. {
  39. DataResult dataResult = LampServer.Instance().OpenRed();
  40. return dataResult;
  41. }
  42.  
  43. /// <summary>
  44. /// 打开黄灯
  45. /// </summary>
  46. [HttpGet]
  47. public DataResult OpenYellow()
  48. {
  49. DataResult dataResult = LampServer.Instance().OpenYellow();
  50. return dataResult;
  51. }
  52.  
  53. /// <summary>
  54. /// 打开绿灯
  55. /// </summary>
  56. [HttpGet]
  57. public DataResult OpenGreen()
  58. {
  59. DataResult dataResult = LampServer.Instance().OpenGreen();
  60. return dataResult;
  61. }
  62.  
  63. /// <summary>
  64. /// 关闭所有灯
  65. /// </summary>
  66. [HttpGet]
  67. public DataResult CloseAll()
  68. {
  69. DataResult dataResult = LampServer.Instance().CloseAll();
  70. return dataResult;
  71. }
  72. }
  73. }

  

  5. 添加 Startup 配置指令,代码如下:

  1. using Newtonsoft.Json;
  2. using Newtonsoft.Json.Serialization;
  3. using Owin;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Net.Http.Formatting;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using System.Web.Http;
  11.  
  12. namespace Git.WMS.LightSDK.Server
  13. {
  14. public class Startup
  15. {
  16. public void Configuration(IAppBuilder appBuilder)
  17. {
  18. HttpConfiguration config = new HttpConfiguration();
  19. config.Routes.MapHttpRoute(
  20. name: "DefaultApi",
  21. routeTemplate: "api/{controller}/{action}"
  22. );
  23.  
  24. config.Formatters.Clear();
  25. config.Formatters.Add(new JsonMediaTypeFormatter());
  26. config.Formatters.JsonFormatter.SerializerSettings =
  27. new JsonSerializerSettings
  28. {
  29. ContractResolver = new CamelCasePropertyNamesContractResolver()
  30. };
  31.  
  32. appBuilder.UseWebApi(config);
  33. }
  34. }
  35. }

  6. 在CS端添加一个启动服务

  1. /// <summary>
  2. /// 开启API服务
  3. /// </summary>
  4. public void Start()
  5. {
  6. string baseAddress = ResourceManager.GetSettingEntity("API_URL").Value;
  7. Microsoft.Owin.Hosting.WebApp.Start<Startup>(url: baseAddress);
  8. Console.WriteLine("程序已启动,按任意键退出");
  9. LampServer.Instance().Init();
  10. Console.ReadLine();
  11. }

  启动服务之后就可以根据配置使用的地址来访问了,访问方式和WebAPI模式一样,相当于使用CS程序托管了一个小型IIS服务

吉特日化MES&WMS系统--三色灯控制协议转http的更多相关文章

  1. 吉特仓储管理系统-ERP或WMS系统中常见术语

    MPS---主生产计划(Master Production schedules) MTO---订货生产(Make-to-Order) BOM---物料清单或产品结构表(Bill of material ...

  2. 吉特日化MES-工业生产盲区

    工业生产的几大盲区 1  重硬件忽略软件 : 目前只要提到智能化,大家都是想到的是一大堆自动执行的设备,什么机器人,输送线,人脸识别摄像头等,在一成套的系统中可能硬件几百万上千万,软件可以是几万几千几 ...

  3. 定义制造业操作(定义 MES/MOM 系统)

    定义制造业操作(定义 MES/MOM 系统) 制造业操作包含众多工厂级活动,涉及设备(定义.使用.时间表和维护).材料(识别.属性.位置和状态).人员(资格.可用性和时间表),以及这些资源与包含其信息 ...

  4. 基于Vue实现后台系统权限控制

    原文地址:http://refined-x.com/2017/08/29/基于Vue实现后台系统权限控制/,转载请注明出处. 用Vue/React这类双向绑定框架做后台系统再适合不过,后台系统相比普通 ...

  5. 直流电机PWM调速系统中控制电压非线性研究_控制元件_工业自动化控制_文章

    直流电机PWM调速系统中控制电压非线性研究_控制元件_工业自动化控制_文章_e-works数字化企业网 http://articles.e-works.net.cn/Component/Article ...

  6. 【系统设计】WMS系统中 库存、盘点、移库、拆库功能的设计(库内管理)

    最近负责WMS系统 盘点 移库 两个功能模块的功能及数据库设计. 物流仓储系统的搭建,要基于仓库的实际情况,整理内部员工需求,再参考其他WMS系统,经过长时间的讨论和研究,最终转化为产品需求. 这里先 ...

  7. LACP链路聚合控制协议

    LACP链路聚合控制协议 来源: https://www.cnblogs.com/taosim/articles/4378691.html http://storage.chinabyte.com/6 ...

  8. RTSP/RTP 媒体传输和控制协议

    1 前言 本文档主要描述了 NewStream Vision 系统中前端视频服务器(DVR, 网络摄像机), 中心转发服务器以及客户端之间的多媒体通信以及控制协议. 本协议主要基于标准的 IETE 的 ...

  9. 运输层3——传输控制协议TCP概述

    目录 1. TCP最主要的特点 2. TCP的连接 3. socket在不同场景中的含义 写在前面:本文章是针对<计算机网络第七版>的学习笔记 运输层1--运输层协议概述 运输层2--用户 ...

随机推荐

  1. alpakka-kafka(2)-consumer

    alpakka-kafka-consumer的功能描述很简单:向kafka订阅某些topic然后把读到的消息传给akka-streams做业务处理.在kafka-consumer的实现细节上,为了达到 ...

  2. c# 打印面单

    private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) { ...

  3. HTTP/1.1报文详解

    本文为<三万长文50+趣图带你领悟web编程的内功心法>第三个章节. 3.HTTP/1.1报文详解 在RFC2616中心详细的描述了HTTP/1.1[1]的报文,感兴趣的朋友也可以前往阅读 ...

  4. cartographer 调参(1)-lua文件配置参考文档

    cartographer 调参(1)-lua文件配置参考文档 https://blog.csdn.net/SimileciWH/article/details/84861718 Lua configu ...

  5. QT实现输入框与下拉框提示并可模糊匹配

    功能:支持下拉框选择.手动输入更改和模糊匹配 组件:QLineEdit.QComboBox.QCompleter.QStringListModel 一.组件介绍 1.1 QLineEdit QLine ...

  6. Java RPC 框架 Solon 1.3.7 发布,增强Cloud接口能力范围

    Solon 是一个微型的Java RPC开发框架.项目从2018年启动以来,参考过大量前人作品:历时两年,4000多次的commit:内核保持0.1m的身材,超高的跑分,良好的使用体验.支持:RPC. ...

  7. Flask:Jinjia模板

    Jinja2是Python下一个被广泛应用的模版引擎,他的设计思想来源于Django的模板引擎,并扩展了其语法和一系列强大的功能. 一.变量 1.1 手动传入的变量: 基本类型:{{ var }} 字 ...

  8. Hi3559AV100 NNIE RFCN开发:V4L2->VDEC->VPSS->NNIE->VGS->VO系统整体动态调试实现

    下面随笔将给出Hi3559AV100 NNIE RFCN开发:V4L2->VDEC->VPSS->NNIE->VGS->VO系统整体动态调试实现,最终的效果是:USB摄像 ...

  9. Docker系列——InfluxDB+Grafana+Jmeter性能监控平台搭建(一)

    在做性能测试的时候,重点关注点是各项性能指标,用Jmeter工具,查看指标数据,就是借助于聚合报告,但查看时也并不方便.那如何能更直观的查看各项数据呢?可以通过InfluxDB+Grafana+Jme ...

  10. centos系统mysql忘记密码

    安装 mysql 之后,注意添加软连接 mysql 忘记密码操作, vim /etc/my.cnf 在 [mysqld] 的段中加上一句:skip-grant-tables 重启 mysql 服务, ...