码迷,mamicode.com
首页 > Windows程序 > 详细

WinCC OA-CTRL-使用CtrlHTTP对外开放数据接口

时间:2020-05-25 19:14:04      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:i++   src   遍历   local   ring   json   logs   类型   tap   

有的时候我们需要将OA 中的数据提供给上层业务,当然这种需求WinCC OA给了我们很多方法, 比如使用OPC UA Server ,也可以使用API 二次开发,

今天我们使用 OA内置的HttpServer 对外提供RESTful 风格的查询方式,使用这种方式应该是一般web开发工作人员最为熟悉的方法,

OK,废话不多说 ,接着撸代码

准备工作

1)首先我们新建一个数据类型restful

该数据类型下面有三个节点 其中 press temp 为浮点型,width为整形


技术图片

2) 创建多个数据点 并赋值

技术图片

小编在restful数据类型下创建了 data01 data02 data03 三个数据点

编码

1)新建restfulTest文件,并添加至启动列表

技术图片

注意control manager 的修改

技术图片

2编码restfunTest.ctl

#uses "CtrlHTTP"
main()
{
  httpServer(FALSE, 12000,0); // 初始化http server 端口12000
  /*注意通配符*的使用*/
  httpConnect("getRestful", "/restful/*"); //定义restful类型的接口 
}
string getRestful(dyn_string names, dyn_string values, string user, string ip, dyn_string headerNames, dyn_string headerValues, int idx)
{

string result;
string tag;
int rc;
dyn_string numbers;
string sURI = httpGetURI(idx);

//!!!!!重要
strreplace(sURI,"/restful/","");//替换"/restful/"为空

/ 拼接为"System1:data01." /
tag
="System1:"+sURI+".";
numbers
= dpNames(tag+"*");
//遍历datapoint 下数据点
for(int i =1;i<=numbers.count();i++)
{
anytype temp;
//获取datapoint 下数据点值
dpGet(numbers[i],temp);
result
+= numbers[i]+" = "+temp+"<br/>";//<br/> 为html的换行符
}

return result;
}

这里我们针对 restful 数据类型进行了接口的定义,请详细阅读代码

使用浏览器测试

技术图片


在浏览器中 输入http://localhost:12000/restful/data01 发现在浏览器中已经获得了想要的结果(上图示)

我们换一个数据类型 data02再来试一下

技术图片

好的,这样针对一个数据类型的简易接口就完成了,你学会了么?

后记

为了方便上层业务的调用 我们可以把取出的结果 拼接为json的格式

{
"data02":{
"press":87.12,
"temp":12.1
"width":45,
}
}

这样就便于跟IT 的小伙伴打交道了,


码上关注 更多精彩

技术图片

WinCC OA-CTRL-使用CtrlHTTP对外开放数据接口

标签:i++   src   遍历   local   ring   json   logs   类型   tap   

原文地址:https://www.cnblogs.com/indus-eric/p/12957920.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!