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. Hyper-V 内存管理必须知道的
  2. java五种加密技术理解
  3. 阿里一面,说说你了解zookeeper的应用场景有哪些?
  4. 多线程进行n皇后计算
  5. GMA Round 1 向量计算
  6. 一个由“2020年1月7日 京东出现的重大 Bug 漏洞“引起的思考......
  7. 数据结构 队列学习总结
  8. 徒步穿越的技巧和要领
  9. 中国近代史-蒋廷黻-笔记-第一章-剿夷与抚夷-第一节-英国请中国订立邦交
  10. html2canvas苹果不显示图片,html2canvas页面截图图片不显示
  11. 谷歌浏览器获取摄像头
  12. USB core(一) - rh_queue_status与rh_call_control
  13. 特征提取 - 海森矩阵(Hessian Matrix)及一个用例(图像增强)
  14. 小米MIUI9关闭广告
  15. CSP-J 2022年8月第一轮模拟赛 1
  16. 中科院用不起的知网,一年主营业务收入11.6亿元,毛利率高过工商银行
  17. HTML+CSS大作业——旅游—我的家乡新密(15页)含论文 新密旅游网页设计制作 简单静态HTML网页作品 我的家乡网页作业成品 学生旅游网站模板
  18. 高效治理垃圾渗滤液将成为环保产业的重要支撑力量
  19. docker 容器 日志文件过大
  20. 老站长教你如何启用网站统计工具

热门文章

  1. 视频怎么转换html代码实现,音视频格式转换神器与html视频元素加字幕——零基础自学网页制作...
  2. windows如何卸载服务
  3. 网络管理软件免费linux,SugarNMSTool免费版
  4. lammps后处理:Python调用Ovito模块配置方法
  5. 带你认识Oracle索引类型(全面总结)
  6. 微软原版win10系统启动盘的制作
  7. 集成海康威视Sadp SDK实现修改设备网络参数
  8. CRC校验算法——C语言实现
  9. 自动化立体仓库AS/RS货架|分离式仓库货架与整体式仓库货架如何运用?
  10. wget 下载文件出错