本博客参考意义

之前做项目需要对接MES管理系统,对于视觉或者电控算法工程师而言,和工业系统的对接是十分必要的。一般而言,现在的工业MES系统是Java工程师使用SQL开发的并具备可视化功能,但是常使用C++或者C#开发软件的我们该如何对接呢?答案是:接口。(关于接口这个名词我真的不想吐槽了,曾经我和Java工程师聊了一下午,发现俩人驴唇不对马嘴,有机会我会专门写篇搞笑技术博客吐槽)Java工程师提供一个接口给我,并且通过JSON格式传递信息。在这里接口指的是局域网下面一个网址,只需要打开这个网址,更改里面的字符,包含你的状态码便可以实现与MES的对接了。当然,MES的对接方式还有webservice方式等。

CURL库打开接口

C++提供了CURL库访问一个网址,使用CURL库只需要把文件加入到相关项目文件中,包含头文件 即可。这里提供了一个CURL库的安装包:
C++Curl

CURL库相关函数说明

//初始化libcurl
curl_global_init();

//打印当前curl库的版本
char* curl_version();

//初始化一个CURL的指针,最后还要用curl_easy_cleanup清理
CURL* curl_easy_init();

//一般curl_easy_init()代表一个会话的开始
//它会返回一个CURL*对象,所以要清理,例如:
CURL* curl=curl_easy_init();
curl_easy_cleanup(curl);

//最重要的函数:
CURLcode curl_easy_setopt(CURL* handle,CURLoption optionparameter); 

/*几乎所有的curl程序都调用这个函数,curl库调用此函数
会有不同的行为(函数重载)对这个函数内的部分参数介绍
 1.CURLOPT_URL,设置访问URL
curl_easy_setopt(curl,CURLOPT_URL,"这里写网址");
  2.CURLOPT_POSTFIELDS,以post方式发送数据
curl_easy_setopt(curl,CURLOPT_POSTFIELDS,"name=设备启动");
  3.查看打开网页后返回的数据
curl_easy_setopt(curl,CURLOPT_WRITEDATA,&out);*/

CURLcode curl_easy_perform(CURL* handle);
//这个函数在curl_easy_setopt后调用,perform就像一个舞台,让设置的option运行起来;
//例如:
CURLcode res=curl_easy_perform(curl);
/*这里状态码res的具体含义有:
1.CURLE_OK
一切都好
2.CURLE_UNSUPPORTED_PROTOCOL
不支持的协议,由URL的头部指定
3.CURLE_COULDNT_CONNECT
不能直接连接到主机或代理
4.CURLE
访问被拒绝
5.CURLE_HTTP_RETURNED_ERROR
http返回错误
6.CURLE_READ_ERROR
读本地文件错误*/

使用CURL访问网址的例子

例如,访问CSDN网址的主要代码是:

string out;
char* szpag="";
curl_easy_setopt(curl,CURLOPT_URL,sepag);
//发送数据和检测有效数据返回,就会自动调用回调函数
curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,WriteDate);
//查看网页打开后显示的内容
curl_easy_setopt(curl,CURLOPT_WRITEDATA,&out);