iec61850_client_example1的例子

  1. client_example1.c的文件最上边注释,/*
  • client_example1.c
  • This example is intended to be used with server_example_basic_io or server_example_goose.
    */
    在libiec61850\examples\server_example_basic_io里找到simpleIO_direct_control.cid这个文件,修改ip地址127.0.0.1。使用iedscout打开simpleIO_direct_control.cid文件,运行仿真服务器功能。

这时可以启动调试iec61850_client_example1程序。

int main(int argc, char** argv) {char* hostname;**int tcpPort = 102;**       //服务器监听端口,客户端连接服务端ip+端口if (argc > 1)hostname = argv[1];else**hostname = "localhost";**if (argc > 2)tcpPort = atoi(argv[2]);IedClientError error;//创建客户端连接对象**IedConnection con = IedConnection_create();**//连接服务器**IedConnection_connect(con, &error, hostname, tcpPort);**//error 是否有错误if (error == IED_ERROR_OK) {/* read an analog measurement value from server */     **//根据索引读取模拟量值simpleIOGenericIO/GGIO1.AnIn1.mag.f**MmsValue* value = IedConnection_readObject(con, &error, "simpleIOGenericIO/GGIO1.AnIn1.mag.f", IEC61850_FC_MX);if (value != NULL) {if (MmsValue_getType(value) == MMS_FLOAT) {float fval = MmsValue_toFloat(value);printf("read float value: %f\n", fval);}else if (MmsValue_getType(value) == MMS_DATA_ACCESS_ERROR) {printf("Failed to read value (error code: %i)\n", MmsValue_getDataAccessError(value));}MmsValue_delete(value);}/* write a variable to the server */**//写变量simpleIOGenericIO/GGIO1.NamPlt.vendor**value = MmsValue_newVisibleString("libiec61850.com");IedConnection_writeObject(con, &error, "simpleIOGenericIO/GGIO1.NamPlt.vendor", IEC61850_FC_DC, value);if (error != IED_ERROR_OK)printf("failed to write simpleIOGenericIO/GGIO1.NamPlt.vendor! (error code: %i)\n", error);MmsValue_delete(value);/* read data set */ClientDataSet clientDataSet = IedConnection_readDataSetValues(con, &error, "simpleIOGenericIO/LLN0.Events", NULL);**//读数据集里的数据****value = ClientDataSet_getValues(clientDataSet);****//数据集里元素个数****int size = ClientDataSet_getDataSetSize(clientDataSet);**//根据索引得到元素的值//4个元素 我添加的代码,根据索引获得值**int size = ClientDataSet_getDataSetSize(clientDataSet);MmsValue *tmp =  MmsValue_getElement(value, 0);MmsValue* tmp1 = MmsValue_getElement(value, 1);MmsValue* tmp2 = MmsValue_getElement(value, 2);MmsValue* tmp3 = MmsValue_getElement(value, 3);//bool类型if (MmsValue_getType(tmp) == MMS_BOOLEAN){bool ret =  MmsValue_getBoolean(tmp);}**if (clientDataSet == NULL) {printf("failed to read dataset\n");goto close_connection;}/* Read RCB values */ClientReportControlBlock rcb =IedConnection_getRCBValues(con, &error, "simpleIOGenericIO/LLN0.RP.EventsRCB01", NULL);if (rcb) {bool rptEna = ClientReportControlBlock_getRptEna(rcb);printf("RptEna = %i\n", rptEna);/* Install handler for reports */IedConnection_installReportHandler(con, "simpleIOGenericIO/LLN0.RP.EventsRCB01",ClientReportControlBlock_getRptId(rcb), reportCallbackFunction, NULL);/* Set trigger options and enable report */ClientReportControlBlock_setTrgOps(rcb, TRG_OPT_DATA_UPDATE | TRG_OPT_INTEGRITY | TRG_OPT_GI);ClientReportControlBlock_setRptEna(rcb, true);ClientReportControlBlock_setIntgPd(rcb, 5000);IedConnection_setRCBValues(con, &error, rcb, RCB_ELEMENT_RPT_ENA | RCB_ELEMENT_TRG_OPS | RCB_ELEMENT_INTG_PD, true);if (error != IED_ERROR_OK)printf("report activation failed (code: %i)\n", error);Thread_sleep(1000);/* trigger GI report */ClientReportControlBlock_setGI(rcb, true);IedConnection_setRCBValues(con, &error, rcb, RCB_ELEMENT_GI, true);if (error != IED_ERROR_OK)printf("Error triggering a GI report (code: %i)\n", error);Thread_sleep(60000);/* disable reporting */ClientReportControlBlock_setRptEna(rcb, false);IedConnection_setRCBValues(con, &error, rcb, RCB_ELEMENT_RPT_ENA, true);if (error != IED_ERROR_OK)printf("disable reporting failed (code: %i)\n", error);ClientDataSet_destroy(clientDataSet);ClientReportControlBlock_destroy(rcb);}close_connection:IedConnection_close(con);}else {printf("Failed to connect to %s:%i\n", hostname, tcpPort);}IedConnection_destroy(con);
}

libiec61850学习1相关推荐

  1. libIEC61850学习记录

    libIEC61850学习记录 一.问题 (1) 在vscode中看例程,总显示include路径不对 一.问题 (1) 在vscode中看例程,总显示include路径不对 看例程server_ex ...

  2. libiec61850学习2(动态获取模型)

    libiec61850\examples\server_example_basic_io\simpleIO_direct_control.cid文件,ip设置127.0.0.1 iedsout打开这个 ...

  3. IEC61850笔记--开源代码libIEC61850(一)

    IEC61850标准学习和调试,测试的记录文档,主要参考了IEC61850标准文档,<IEC61850应用入门(第二版)>,开源代码libIEC61850及libIEC61850说明文档. ...

  4. IEC61850笔记--开源代码libIEC61850(二)

    IEC61850标准学习和调试,测试的记录文档,主要参考了IEC61850标准文档,<IEC61850应用入门(第二版)>,开源代码libIEC61850及libIEC61850说明文档. ...

  5. java入门 慕路径,Java入门基础知识总结学习教程大全【必看经典】

    类型的表达式,是循环条件,表达式3是党执行了一遍循环之后,修改控制循环的变量值. ??? for语句的执行过程是这样的:首先计算表达式1,完成必要的初始化工作:然后判断表达式2的值,如果表达式的值为t ...

  6. Java EE学习心得

    –Java EE学习心得   1.    称为编程专家的秘诀是: 思考-----编程--------思考------编程--.. 编程不能一步到位,不能一上来就编,必须先思考如何写,怎样写?然后再编程 ...

  7. FastAI 2019课程学习笔记 lesson 2:自行获取数据并创建分类器

    文章目录 数据获取 google_images_download 的安装和使用 挂载google 个人硬盘到Google colab中 删除不能打开文件 创建ImageDataBunch 训练模型 解 ...

  8. FastAI 课程学习笔记 lesson 1:宠物图片分类

    文章目录 代码解析 神奇的"%" 导入fastAI 库 下载解压数据集 untar_data 获取帮助文档 help() ? ?? doc 设置路径 get_image_files ...

  9. 深度学习学习指南-工具篇

    colab Colab是由Google提供的云计算服务,通过它可以让开发者很方便的使用google的免费资源(CPU.GPU.TPU)来训练自己的模型. 学习经验总结 如何使用命令行? 通过!+cmd ...

  10. Redis学习之路(一)--下载安装redis

    redis学习之路--下载安装redis windows安装redis 1.下载redis 2.安装 3.查看是否安装成功 windows安装redis 1.下载redis 网址:https://gi ...

最新文章

  1. 一款DIY矢量网络分析仪:NanoVNA
  2. 国内能打自动驾驶出租车了!行驶平稳还免费,首个量产车型开放道路试运营...
  3. 转iOS性能优化:Instruments使用实战
  4. 多进程客户端-服务器模型
  5. How data type handler is got for AET extension field
  6. oracle数据库主键自增序列_Oracle数据库序列详解
  7. 搜索文献_如何有效地搜索及阅读文献
  8. securecrt 乱码_SecureCRT远程连接Linux,配置端点和字节码
  9. Python3 爬虫(一)-- 简单网页抓取
  10. (转)令人无法理解的死锁案例分析
  11. TCPDUMP 用法(转)
  12. Javascript之把网页加入收藏夹功能
  13. 南方cass计算表面积_CASS在工程中的应用“计算表面积”的方法
  14. 漂浮广告代码 php,JS带关闭按钮的网页漂浮广告代码
  15. Full Disk Encryption(FDE)全盘加密开关
  16. 正则表达式语法简介说明
  17. 人脸识别广告显示屏通过人像识别、面部识别应用
  18. Spark学习-入门介绍
  19. unity3d序列帧动画无法显示坑
  20. java在gc正常工作的情况下_Java GC的工作原理

热门文章

  1. 华为手机序列号前三位_华为手机序列号怎么查询?
  2. html添加哔哩哔哩视频,哔哩哔哩在线视频编辑器使用教程汇总
  3. 【第133期】 游戏策划:给@1的简历分析
  4. 分频测试软件,带有强大的分频控制软件_天逸 TY-D01_音频评测-中关村在线
  5. 【更新】iWebOffice2009全文批注 V10.8发布 | 附下载
  6. 工具------Java反编译工具XJad
  7. 物联公司网页设计制作 简单静态HTML网页作品 静态企业网页作业成品 学生网站模板
  8. SCM供应链管理系统的优点
  9. 基于JavaWeb的汽车销售管理系统
  10. react好租客项目Day11-发布房源模块(js输入框防抖图片上传)项目打包项目优化(按需加载路由代码分割)