当前位置: 首页 > wzjs >正文

百度快照网站俄罗斯搜索引擎浏览器

百度快照网站,俄罗斯搜索引擎浏览器,wordpress查看所有文章,焦作网站建设公司之前项目中使用到libiec61850库,都是服务端开发。这次新的需求要接收服务端的遥测数据,这就涉及到客户端开发了。 客户端开发没搞过啊,挑战不少,但是人不就是通过战胜困难才成长的嘛。通过查看libiec61850的客户端API发现&#xf…
之前项目中使用到libiec61850库,都是服务端开发。这次新的需求要接收服务端的遥测数据,这就涉及到客户端开发了。 客户端开发没搞过啊,挑战不少,但是人不就是通过战胜困难才成长的嘛。

通过查看libiec61850的客户端API发现,它支持两种模式,一种同步阻塞模式,另一种是异步回调模式。由于我没有打算采用多线程,那就选异步回调模式吧。

首先 ,创建链接,并connect,安装链接回调函数。

    IedClientError error;IedConnection con = IedConnection_create();IedConnection_installStateChangedHandler(con, connectionCB, this);IedConnection_connectAsync(con, &error, ip.c_str(), port);

接着,在链接回调函数中,判断如果连接成功的话,就获取rcb属性。因为客户端一个很重要的功能就是接收服务端的rcb(报告控制块),然后从rcb中解析出服务端更新了哪个字段。

IedClientError error;IedConnection_getServerDirectoryAsync(connection, &error, NULL, NULL, getServerDirectoryHandler, connection);std::string rcbRef = g_pMmsMgr->getLdName(connection) + "/LLN0.RP.urcbMeasure01";IedConnection_getRCBValuesAsync(connection, &error, rcbRef.c_str(), NULL, getRCBValuesCB, connection);

getServerDirectoryHandler这个回调函数,实现的是获取逻辑设备名称,这个在注册获取rcb属性回调函数时会用到。

void CMMSManager::getRCBValuesCB(uint32_t invokeId, void* parameter, IedClientError err, ClientReportControlBlock rcb)
{if (err == IED_ERROR_OK){IedConnection connection = (IedConnection)parameter;ClientReportControlBlock_setResv(rcb, true);ClientReportControlBlock_setTrgOps(rcb, TRG_OPT_QUALITY_CHANGED | TRG_OPT_DATA_CHANGED | TRG_OPT_GI);std::string dataSetRef = g_pMmsMgr->getLdName(connection) + "/LLN0$dsMeasure";ClientReportControlBlock_setDataSetReference(rcb, dataSetRef.c_str());ClientReportControlBlock_setRptEna(rcb, true);std::string rcbRef = g_pMmsMgr->getLdName(connection) + "/LLN0.RP.urcbMeasure01";IedConnection_installReportHandler(connection, rcbRef.c_str(),ClientReportControlBlock_getRptId(rcb), reportCB, parameter);/* Write RCB parameters and enable report */IedConnection_setRCBValuesAsync(connection, &err, rcb, RCB_ELEMENT_RESV | RCB_ELEMENT_DATSET | RCB_ELEMENT_TRG_OPS| RCB_ELEMENT_RPT_ENA | RCB_ELEMENT_GI, true, genericServiceCB, parameter);}
}

最开始时,我的客户端无论如何都收不到服务断的报告控制块,就是这个getRCBValuesCB回调函数里的逻辑没写对。

碰到困难时,一定不要怕,多看libiec61850中关于client的例子,再加上不断尝试,这样基本的功能框架就实现了。

http://www.dtcms.com/wzjs/85444.html

相关文章:

  • 广东深圳网站建设微信商城开发长沙自动seo
  • 站酷网页版哈尔滨seo优化软件
  • 网站制作答辩ppt怎么做外贸推广是做什么的
  • linux 网站目录权限设置sem竞价推广怎么做
  • 淘宝客网站是怎么做的百度一下知道首页
  • 英文外贸网站设计app营销策略
  • 墨刀网站开发原型图教程网址推广
  • wordpress更换网站域名网站seo优化培训
  • 中国企业500强排名一览表石家庄自动seo
  • 哪些网站做推广好b2b平台网站
  • 国内用什么做网站品牌广告语经典100条
  • 上海外贸营销网站建设网站广州疫情最新消息今天封城了
  • 企业网站优化的方式打开百度app
  • 做公司网站源代码怎么写站长平台工具
  • 制作网站计划书网页游戏推广平台
  • 做seo推广公司网站2022年新闻热点事件
  • 温州网站托管东莞seo推广机构帖子
  • WordPress做的网站源代码如何做网站 新手 个人 教程
  • 网站建设基础心得nba在线直播免费观看直播
  • 网站可以做外部链接吗网站seo方案模板
  • 网站开发测试工具让手机变流畅的软件下载
  • 湘西网站建设花垣真正免费的网站建站平台
  • 工信部网站icp备案号软文网站平台
  • 网站公安局备案 所需要的材料网站发布与推广怎么写
  • 为网站做外链的方式正规推广平台有哪些
  • 网站公安备案查询营销培训课程内容
  • 做的成功的地方网站百度做推广一般要多少钱
  • 网站建设 的介绍上海关键词优化报价
  • 网站群建设的优点北京昨晚出什么大事
  • 中国铁路建设工程招标网站seo的英文全称是什么