吉特日化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;
}
}
}
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服务
吉特日化MES&WMS系统--三色灯控制协议转http的更多相关文章
- 吉特仓储管理系统-ERP或WMS系统中常见术语
MPS---主生产计划(Master Production schedules) MTO---订货生产(Make-to-Order) BOM---物料清单或产品结构表(Bill of material ...
- 吉特日化MES-工业生产盲区
工业生产的几大盲区 1 重硬件忽略软件 : 目前只要提到智能化,大家都是想到的是一大堆自动执行的设备,什么机器人,输送线,人脸识别摄像头等,在一成套的系统中可能硬件几百万上千万,软件可以是几万几千几 ...
- 定义制造业操作(定义 MES/MOM 系统)
定义制造业操作(定义 MES/MOM 系统) 制造业操作包含众多工厂级活动,涉及设备(定义.使用.时间表和维护).材料(识别.属性.位置和状态).人员(资格.可用性和时间表),以及这些资源与包含其信息 ...
- 基于Vue实现后台系统权限控制
原文地址:http://refined-x.com/2017/08/29/基于Vue实现后台系统权限控制/,转载请注明出处. 用Vue/React这类双向绑定框架做后台系统再适合不过,后台系统相比普通 ...
- 直流电机PWM调速系统中控制电压非线性研究_控制元件_工业自动化控制_文章
直流电机PWM调速系统中控制电压非线性研究_控制元件_工业自动化控制_文章_e-works数字化企业网 http://articles.e-works.net.cn/Component/Article ...
- 【系统设计】WMS系统中 库存、盘点、移库、拆库功能的设计(库内管理)
最近负责WMS系统 盘点 移库 两个功能模块的功能及数据库设计. 物流仓储系统的搭建,要基于仓库的实际情况,整理内部员工需求,再参考其他WMS系统,经过长时间的讨论和研究,最终转化为产品需求. 这里先 ...
- LACP链路聚合控制协议
LACP链路聚合控制协议 来源: https://www.cnblogs.com/taosim/articles/4378691.html http://storage.chinabyte.com/6 ...
- RTSP/RTP 媒体传输和控制协议
1 前言 本文档主要描述了 NewStream Vision 系统中前端视频服务器(DVR, 网络摄像机), 中心转发服务器以及客户端之间的多媒体通信以及控制协议. 本协议主要基于标准的 IETE 的 ...
- 运输层3——传输控制协议TCP概述
目录 1. TCP最主要的特点 2. TCP的连接 3. socket在不同场景中的含义 写在前面:本文章是针对<计算机网络第七版>的学习笔记 运输层1--运输层协议概述 运输层2--用户 ...
随机推荐
- Linux 查看磁盘是否为SSD
第一步,找到磁盘 ll /dev/sd* ll /dev/vd* 第二步,查对应磁盘类型 cat /sys/block/sda/queue/rotational 结果: 返回0:SSD盘 返回1: ...
- java与freemarker遍历map
一.java遍历MAP /** * 1.把key放到一个集合里,遍历key值同时根据key得到值 (推荐) */ Set set =map.keySet(); Iterator it=set.iter ...
- Django Static与Media
关于Django中Static和Media的设置问题(尤其是css和js静态文件加载的问题),网上有很多回答,但是发现有相当一部分回答并不能解决问题.有的可能是Django版本问题,有的是把media ...
- MySQL:基本操作与常用函数
基本操作 这里的基本操作为添加.修改.删除数据表中的记录. INSERT语句 -- 通用INSERT: INSERT INTO 表名 (字段1, 字段2, ...) VALUES (值1, 值2, . ...
- Cloudam云端携手高校探索云计算在生命科学领域的应用
随着云计算服务和实践的成熟,越来越多的行业对于云计算的需求也日益增加.不同行业的需求与云计算融合,就需要更大的算力支撑.这也意味着,云计算的需求市场日渐扩大,Cloudam云端自主研发的云E算力平台应 ...
- 【转载】Android应用AsyncTask处理机制详解及源码分析
[工匠若水 http://blog.csdn.net/yanbober 转载烦请注明出处,尊重分享成果] 1 背景 Android异步处理机制一直都是Android的一个核心,也是应用工程师面试的一个 ...
- POJ-2406(KMP+字符串压缩)
Power String POJ-2406 字符串压缩模板题,但是是求有多少个这样最短的子串可以组成s. #include<iostream> #include<cstring> ...
- POJ-2031(最小生成树+kruskal)
Building a Space Station POJ-2031 注意,这里的输出需要是%f型而不是%lf型的,否则wa. #include<iostream> #include< ...
- [UWP] 模仿哔哩哔哩的一键三连
1. 一键三连 什么是一键三连? 哔哩哔哩弹幕网中用户可以通过长按点赞键同时完成点赞.投币.收藏对UP主表示支持,后UP主多用"一键三连"向视频浏览者请求对其作品同时进行点赞.投币 ...
- redis过期key监听事件
目录 redis安装 docker拉取 启动 redis 配置 命令监听 问题 程序监听 具体监听类 效果 总结 redis常用语缓存操作,但是redis功能不仅仅于此.今天我们来看看redis的ke ...