序
有的時候我們需要將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 發現在瀏覽器中已經獲得了想要的結果(上圖示)
我們換一個datapoint data02再來試一下
好的,這樣針對一個數據類型的簡易接口就完成了,你學會了么?
后記
為了方便上層業務的調用 我們可以把取出的結果 拼接為json的格式
{
"data02":{
"press":87.12,
"temp":12.1
"width":45,
}
}
這樣就便於跟IT 的小伙伴打交道了,