IEC61850规约客户端软件开发实战(第二章)

第二章:功能界面设计、61850服务端连接

最终开发成果展示:查看最终成果

上一章内容回顾:开发环境搭建

软件及完整源代码获取:欢迎咨询

一、功能界面设计

1.界面设计

界面设计包含相关功能按钮(连接、读写、报告启停、总召唤、Goose订阅、发布,激活、退出),菜单栏(QTreeWidget)显示基iec61850数据模型本信息、数据栏(QTreeWidget)显示iec61850模型数据;下方是状态栏。

  • 顶部布局相关功能按钮
  • 左侧菜单栏使用QTreeWidget展示iec61850设备基本模型(Goose、报告、设置组、数据集、数据模型),菜单栏共二列,第一列显示服务端连接参数(IP和端口),第二列显示服务端连接状态和名称。
  • 右侧数据栏使用QTreeWidget,根据不用数据属性,动态切换不同显示样式。
  • 下方为状态栏(QLabel),显示相关状态信息。
    界面如下:
2. 界面美化

关于软件界面的样式、颜色设置可以使用qss进行美化或直接编辑样式表进行美化。

二、连接iec61850服务端

1.连接流程

创建服务端Ip和端口->创建连接句柄->启动连接->判断连接状态->连接成功或失败
创建服务端Ip和端口 创建连接句柄 启动连接 连接成功 连接失败

2.引入libiec61850开源库头文件
cpp 复制代码
#include <inc/iec61850_client.h>
3.定义连接句柄
cpp 复制代码
private:
    Ui::MainWindow *ui;
  	//服务端连接句柄
    IedConnection m_iedConnectHandle;
    QString m_ip;
    int m_port;
    int m_requestTimeout;
4.定义服务端初始化接口
cpp 复制代码
void MainWindow::initIEC61850()
{
	QString ip = m_ip;//服务端IP
    int port = m_port;//端口号
    QBrush brush(QColor(255,255,255));
    QTreeWidgetItem *curritem = ui->treeWidget->currentItem();
    if(m_iedConnectHandle)
        IedConnection_destroy(m_iedConnectHandle);
    IedClientError error;
    m_iedConnectHandle = IedConnection_create();//创建连接句柄
    IedConnection_connect(m_iedConnectHandle, &error,ip.toUtf8().constData(), port);//连接服务端
    if (error != IED_ERROR_OK) {
        resetInit();//连接失败,需重置连接参数
        IedConnection_destroy(m_iedConnectHandle);//释放连接句柄
        m_iedConnectHandle = nullptr;
        ui->dataTreeWidget->setCurrentItem(curritem);
        curritem->setText(0,QString("%1:%2").arg(ip).arg(port));
        click_closeButton();
        showMessage("连接失败");
        return;
    }
    showMessage("数据加载中,请等待...");//显示连接状态
    curritem->setText(0,QString("%1:%2 数据加载中...").arg(ip).arg(port));
    QString devName = curritem->text(1);
    if(devName.length()>2){
        devName = curritem->text(1).mid(3,curritem->text(1).length()-3);
        curritem->setText(1,QString("在线/%1").arg(devName));
    }
    else
        curritem->setText(1,QString("在线"));
    IedConnection_setRequestTimeout(m_iedConnectHandle,m_requestTimeout);//设置连接超时时间
}

三、测试连接服务端功能

新建连接、选择连接参数、打开连接按钮进行连接、查看连接结果。

连接成功后,菜单栏状态信息显示绿色在线字体,连接失败将显示离线状态。

四、本章总结

本章主要讲解61850客户端软件功能界面设计和服务端连接功能,关于开发IEC61850规约相关软件,首先需要对61850规约知识和原理有一定的了解,才能掌握开发流程。
下一期分享IEC61850规约模型数据加载过程。

相关推荐
踏过山河,踏过海4 小时前
在SSL证书是有效的前提下,依旧显示“资源不安全
网络协议·安全·ssl
零雲5 小时前
java面试:可以讲一讲sychronized和ReentrantLock的异同点吗
java·开发语言·面试
没有bug.的程序员5 小时前
SQL 执行计划解析:从 EXPLAIN 到性能优化的完整指南
java·数据库·sql·性能优化·explain·执行计划
微笑尅乐5 小时前
神奇的位运算——力扣136.只出现一次的数字
java·算法·leetcode·职场和发展
怀旧,5 小时前
【C++】23. C++11(上)
开发语言·c++
Chan165 小时前
【 设计模式 | 结构型模式 代理模式 】
java·spring boot·后端·设计模式·intellij-idea
柯南二号5 小时前
【AI】【Java后端】RAG 实战示例:SpringBoot + 向量检索 + LLM 问答系统
java·人工智能·spring boot
Mr.Pascal5 小时前
后端直接返回错误信息的Map 和 抛出异常(异常机制)优劣势对比
java·springboot
小卡皮巴拉6 小时前
【笔试强训】Day1
开发语言·数据结构·c++·算法
zcychong6 小时前
如何让A、B、C三个线程按严格顺序执行(附十一种解)?
java·面试