1. 文件浏览窗口现在使用 JSON 文件所在目录作为初始路径 2. 修复拖拽 JSON 文件打开工程功能 修改内容: - mainwindow.cpp: addSourceFile/addIncludeDir/addLibrary 添加初始目录 - mainwindow.cpp: dropEvent 完善所有 UI 组件的加载
155 lines
5.0 KiB
C
155 lines
5.0 KiB
C
/**
|
||
* @file switch_example.c
|
||
* @brief 开关控制使用示例
|
||
* @author 虾哥
|
||
* @date 2026-04-09
|
||
*
|
||
* 本文件演示如何使用 TRANS_CONTROL 结构体
|
||
* 包含初始化、合闸、分闸、故障复位等操作示例
|
||
*/
|
||
|
||
#include "switch_def.h"
|
||
#include <stdio.h>
|
||
|
||
/**
|
||
* @brief 主函数示例
|
||
*
|
||
* 演示完整的开关控制流程
|
||
*
|
||
* @return int 程序执行结果
|
||
*/
|
||
int main(void)
|
||
{
|
||
// ================================
|
||
// 1. 初始化变压器控制结构
|
||
// ================================
|
||
TransControl_Init(&g_trans_control);
|
||
printf("变压器控制结构初始化完成\r\n");
|
||
|
||
// ================================
|
||
// 2. 1-QF1 合闸操作
|
||
// ================================
|
||
printf("\r\n=== 1-QF1 合闸 ===\r\n");
|
||
Switch_Close(&g_trans_control, &g_trans_control.qf1_1);
|
||
Switch_PrintInfo("1-QF1", &g_trans_control.qf1_1);
|
||
|
||
// ================================
|
||
// 3. 1-QF2 合闸操作
|
||
// ================================
|
||
printf("\r\n=== 1-QF2 合闸 ===\r\n");
|
||
Switch_Close(&g_trans_control, &g_trans_control.qf1_2);
|
||
Switch_PrintInfo("1-QF2", &g_trans_control.qf1_2);
|
||
|
||
// ================================
|
||
// 4. 2-QF1 合闸操作
|
||
// ================================
|
||
printf("\r\n=== 2-QF1 合闸 ===\r\n");
|
||
Switch_Close(&g_trans_control, &g_trans_control.qf2_1);
|
||
Switch_PrintInfo("2-QF1", &g_trans_control.qf2_1);
|
||
|
||
// ================================
|
||
// 5. 3-QF1 分闸操作
|
||
// ================================
|
||
printf("\r\n=== 3-QF1 分闸 ===\r\n");
|
||
Switch_Open(&g_trans_control, &g_trans_control.qf3_1);
|
||
Switch_PrintInfo("3-QF1", &g_trans_control.qf3_1);
|
||
|
||
// ================================
|
||
// 6. 1-QF14 故障复位操作
|
||
// ================================
|
||
printf("\r\n=== 1-QF14 故障复位 ===\r\n");
|
||
Switch_Reset(&g_trans_control, &g_trans_control.qf1_14);
|
||
Switch_PrintInfo("1-QF14", &g_trans_control.qf1_14);
|
||
|
||
// ================================
|
||
// 7. 批量操作示例:合上 1 侧所有开关
|
||
// ================================
|
||
printf("\r\n=== 批量合上 1 侧所有开关 ===\r\n");
|
||
Switch_Close(&g_trans_control, &g_trans_control.qf1_1);
|
||
Switch_Close(&g_trans_control, &g_trans_control.qf1_2);
|
||
Switch_Close(&g_trans_control, &g_trans_control.qf1_3);
|
||
Switch_Close(&g_trans_control, &g_trans_control.qf1_4);
|
||
Switch_Close(&g_trans_control, &g_trans_control.qf1_5);
|
||
Switch_Close(&g_trans_control, &g_trans_control.qf1_6);
|
||
Switch_Close(&g_trans_control, &g_trans_control.qf1_7);
|
||
Switch_Close(&g_trans_control, &g_trans_control.qf1_8);
|
||
Switch_Close(&g_trans_control, &g_trans_control.qf1_9);
|
||
Switch_Close(&g_trans_control, &g_trans_control.qf1_10);
|
||
Switch_Close(&g_trans_control, &g_trans_control.qf1_11);
|
||
Switch_Close(&g_trans_control, &g_trans_control.qf1_12);
|
||
Switch_Close(&g_trans_control, &g_trans_control.qf1_14);
|
||
Switch_Close(&g_trans_control, &g_trans_control.qf1_15);
|
||
Switch_Close(&g_trans_control, &g_trans_control.qf1_16);
|
||
Switch_Close(&g_trans_control, &g_trans_control.qf1_20);
|
||
printf("1 侧所有开关已合闸\r\n");
|
||
|
||
// ================================
|
||
// 8. 直接访问结构体成员示例
|
||
// ================================
|
||
printf("\r\n=== 直接访问结构体成员 ===\r\n");
|
||
|
||
// 直接设置合闸命令
|
||
g_trans_control.qf2_20.close_cmd = 1;
|
||
printf("2-QF20 合闸命令已设置\r\n");
|
||
|
||
// 直接读取状态
|
||
uint8_t status = g_trans_control.qf2_20.status;
|
||
printf("2-QF20 当前状态:%d\r\n", status);
|
||
|
||
// 直接设置故障状态
|
||
g_trans_control.qf3_8.fault_status = 1;
|
||
printf("3-QF8 故障状态已设置\r\n");
|
||
|
||
// ================================
|
||
// 9. 状态检查示例
|
||
// ================================
|
||
printf("\r\n=== 状态检查 ===\r\n");
|
||
|
||
if (Switch_GetStatus(&g_trans_control.qf1_1) == 1)
|
||
{
|
||
printf("1-QF1 在合位\r\n");
|
||
}
|
||
else
|
||
{
|
||
printf("1-QF1 在分位\r\n");
|
||
}
|
||
|
||
if (Switch_GetFaultStatus(&g_trans_control.qf3_8) == 1)
|
||
{
|
||
printf("3-QF8 有故障\r\n");
|
||
}
|
||
else
|
||
{
|
||
printf("3-QF8 正常\r\n");
|
||
}
|
||
|
||
// ================================
|
||
// 10. 清除命令示例
|
||
// ================================
|
||
printf("\r\n=== 清除命令 ===\r\n");
|
||
Switch_ClearCommands(&g_trans_control.qf1_1);
|
||
printf("1-QF1 所有命令已清除\r\n");
|
||
Switch_PrintInfo("1-QF1", &g_trans_control.qf1_1);
|
||
|
||
printf("\r\n=== 示例程序执行完成 ===\r\n");
|
||
|
||
return 0;
|
||
}
|
||
|
||
/**
|
||
* @brief 中断服务程序示例
|
||
*
|
||
* 模拟硬件中断处理开关状态
|
||
* 在实际应用中,这会是真正的中断处理函数
|
||
*/
|
||
void HWINT_IRQHandler(void)
|
||
{
|
||
// 检查 1-QF1 是否故障
|
||
if (g_trans_control.qf1_1.fault_status == 1)
|
||
{
|
||
// 自动分闸
|
||
Switch_Open(&g_trans_control, &g_trans_control.qf1_1);
|
||
printf("中断:1-QF1 故障,已自动分闸\r\n");
|
||
}
|
||
}
|