有的时候我们需要将OA 中的数据提供给上层业务,当然这种需求WinCC OA给了我们很多方法, 比如使用OPC UA Server ,也可以使用API 二次开发,
今天我们使用 OA内置的HttpServer 对外提供RESTful 风格的查询方式,使用这种方式应该是一般web开发工作人员最为熟悉的方法,
OK,废话不多说 ,接着撸代码
该数据类型下面有三个节点 其中 press temp 为浮点型,width为整形
小编在restful数据类型下创建了 data01 data02 data03 三个数据点
注意control manager 的修改
#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对外开放数据接口
原文:https://www.cnblogs.com/indus-eric/p/12957920.html