add:增加文档和上位机
This commit is contained in:
Binary file not shown.
Binary file not shown.
@@ -6,9 +6,7 @@ packDir: .pack/Keil/STM32H7xx_DFP.4.1.0
|
|||||||
srcDirs: []
|
srcDirs: []
|
||||||
virtualFolder:
|
virtualFolder:
|
||||||
name: <virtual_root>
|
name: <virtual_root>
|
||||||
files:
|
files: []
|
||||||
- path: ../README.md
|
|
||||||
- path: ../../Doc/云快充平台协议V1.6.pdf
|
|
||||||
folders:
|
folders:
|
||||||
- name: Application
|
- name: Application
|
||||||
files: []
|
files: []
|
||||||
@@ -116,14 +114,14 @@ virtualFolder:
|
|||||||
- path: ../User/Protocol/Ykc/server_to_charger.h
|
- path: ../User/Protocol/Ykc/server_to_charger.h
|
||||||
- path: ../User/Protocol/Ykc/ykc_router.c
|
- path: ../User/Protocol/Ykc/ykc_router.c
|
||||||
folders: []
|
folders: []
|
||||||
- name: Point
|
|
||||||
files:
|
|
||||||
- path: ../User/Protocol/Point/point_protocol.c
|
|
||||||
folders: []
|
|
||||||
- name: Host Computer
|
- name: Host Computer
|
||||||
files:
|
files:
|
||||||
- path: ../User/Protocol/Host Computer/host_computer_protocol.c
|
- path: ../User/Protocol/Host Computer/host_computer_protocol.c
|
||||||
folders: []
|
folders: []
|
||||||
|
- name: Point
|
||||||
|
files:
|
||||||
|
- path: ../User/Protocol/Point/point_protocol.c
|
||||||
|
folders: []
|
||||||
- name: Drivers
|
- name: Drivers
|
||||||
files: []
|
files: []
|
||||||
folders:
|
folders:
|
||||||
|
|||||||
@@ -1,2 +0,0 @@
|
|||||||
### 生产代码设置
|
|
||||||
- /User/Global/g_decpile -> void init_chargers(void) 需要修改预设 ,从电桩全局结构体拿
|
|
||||||
@@ -92,11 +92,11 @@ void drv_air724_set_server(const char *ip, uint16_t port)
|
|||||||
void drv_air724_connect_channel(uint8_t channel)
|
void drv_air724_connect_channel(uint8_t channel)
|
||||||
{
|
{
|
||||||
if (channel < 1 || channel > AIR724_SOCKET_MAX) {
|
if (channel < 1 || channel > AIR724_SOCKET_MAX) {
|
||||||
printf("4G: 通道 %d 无效 \r\n", channel);
|
printf("[ 4G ] 通道 %d 无效 \r\n", channel);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
drv_air724_send_cmd(0x03, 0x01, &channel, 1);
|
drv_air724_send_cmd(0x03, 0x01, &channel, 1);
|
||||||
printf("4G: 通道 %d 连接请求已发送 \r\n", channel);
|
printf("[ 4G ] 通道 %d 连接请求已发送 \r\n", channel);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -108,11 +108,11 @@ void drv_air724_connect_channel(uint8_t channel)
|
|||||||
void drv_air724_disconnect_channel(uint8_t channel)
|
void drv_air724_disconnect_channel(uint8_t channel)
|
||||||
{
|
{
|
||||||
if (channel < 1 || channel > AIR724_SOCKET_MAX) {
|
if (channel < 1 || channel > AIR724_SOCKET_MAX) {
|
||||||
printf("4G: 通道 %d 无效\r\n", channel);
|
printf("[ 4G ] 通道 %d 无效\r\n", channel);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
drv_air724_send_cmd(0x03, 0x02, &channel, 1);
|
drv_air724_send_cmd(0x03, 0x02, &channel, 1);
|
||||||
printf("4G: 通道 %d 断开请求已发送\r\n", channel);
|
printf("[ 4G ] 通道 %d 断开请求已发送\r\n", channel);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -186,15 +186,15 @@ void drv_air724_parse_response(const uint8_t *frame, uint16_t len)
|
|||||||
switch (sub_cmd) {
|
switch (sub_cmd) {
|
||||||
case 0x01:
|
case 0x01:
|
||||||
g_air724_info.socket_connected[socket_id - 1] = 1;
|
g_air724_info.socket_connected[socket_id - 1] = 1;
|
||||||
printf("4G: 通道 %d 连接成功\r\n", socket_id);
|
printf("[ 4G ] 通道 %d 连接成功\r\n", socket_id);
|
||||||
break;
|
break;
|
||||||
case 0x02:
|
case 0x02:
|
||||||
g_air724_info.socket_connected[socket_id - 1] = 0;
|
g_air724_info.socket_connected[socket_id - 1] = 0;
|
||||||
printf("4G: 通道 %d 已断开\r\n", socket_id);
|
printf("[ 4G ] 通道 %d 已断开\r\n", socket_id);
|
||||||
break;
|
break;
|
||||||
case 0x03:
|
case 0x03:
|
||||||
g_air724_info.socket_connected[socket_id - 1] = 0;
|
g_air724_info.socket_connected[socket_id - 1] = 0;
|
||||||
printf("4G: 通道 %d 连接失败\r\n", socket_id);
|
printf("[ 4G ] 通道 %d 连接失败\r\n", socket_id);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -210,17 +210,17 @@ void drv_air724_parse_response(const uint8_t *frame, uint16_t len)
|
|||||||
case 0x01:
|
case 0x01:
|
||||||
memcpy(g_air724_info.iccid, &frame[5], data_len < 23 ? data_len : 23);
|
memcpy(g_air724_info.iccid, &frame[5], data_len < 23 ? data_len : 23);
|
||||||
g_air724_info.iccid[data_len < 23 ? data_len : 23] = '\0';
|
g_air724_info.iccid[data_len < 23 ? data_len : 23] = '\0';
|
||||||
printf("4G: ICCID=%s\r\n", g_air724_info.iccid);
|
printf("[ 4G ] ICCID=%s\r\n", g_air724_info.iccid);
|
||||||
break;
|
break;
|
||||||
case 0x02:
|
case 0x02:
|
||||||
memcpy(g_air724_info.imsi, &frame[5], data_len < 15 ? data_len : 15);
|
memcpy(g_air724_info.imsi, &frame[5], data_len < 15 ? data_len : 15);
|
||||||
g_air724_info.imsi[data_len < 15 ? data_len : 15] = '\0';
|
g_air724_info.imsi[data_len < 15 ? data_len : 15] = '\0';
|
||||||
printf("4G: IMSI=%s\r\n", g_air724_info.imsi);
|
printf("[ 4G ] IMSI=%s\r\n", g_air724_info.imsi);
|
||||||
break;
|
break;
|
||||||
case 0x03:
|
case 0x03:
|
||||||
memcpy(g_air724_info.imei, &frame[5], data_len < 15 ? data_len : 15);
|
memcpy(g_air724_info.imei, &frame[5], data_len < 15 ? data_len : 15);
|
||||||
g_air724_info.imei[data_len < 15 ? data_len : 15] = '\0';
|
g_air724_info.imei[data_len < 15 ? data_len : 15] = '\0';
|
||||||
printf("4G: IMEI=%s\r\n", g_air724_info.imei);
|
printf("[ 4G ] IMEI=%s\r\n", g_air724_info.imei);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -231,7 +231,7 @@ void drv_air724_parse_response(const uint8_t *frame, uint16_t len)
|
|||||||
if (len >= 7) {
|
if (len >= 7) {
|
||||||
g_air724_info.csq = frame[4];
|
g_air724_info.csq = frame[4];
|
||||||
g_air724_info.ber = frame[5];
|
g_air724_info.ber = frame[5];
|
||||||
printf("4G: CSQ=%d, BER=%d\r\n", g_air724_info.csq, g_air724_info.ber);
|
printf("[ 4G ] CSQ=%d, BER=%d\r\n", g_air724_info.csq, g_air724_info.ber);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -241,7 +241,7 @@ void drv_air724_parse_response(const uint8_t *frame, uint16_t len)
|
|||||||
for (uint8_t i = 0; i < count; i++) {
|
for (uint8_t i = 0; i < count; i++) {
|
||||||
g_air724_info.socket_connected[i] = frame[4 + i];
|
g_air724_info.socket_connected[i] = frame[4 + i];
|
||||||
}
|
}
|
||||||
printf("4G: 链路[");
|
printf("[ 4G ] 链路[");
|
||||||
for (uint8_t i = 0; i < AIR724_SOCKET_MAX; i++) {
|
for (uint8_t i = 0; i < AIR724_SOCKET_MAX; i++) {
|
||||||
printf("%d", g_air724_info.socket_connected[i]);
|
printf("%d", g_air724_info.socket_connected[i]);
|
||||||
}
|
}
|
||||||
@@ -252,7 +252,7 @@ void drv_air724_parse_response(const uint8_t *frame, uint16_t len)
|
|||||||
/* ── 0x87: 服务器配置结果 ── */
|
/* ── 0x87: 服务器配置结果 ── */
|
||||||
case 0x87:
|
case 0x87:
|
||||||
if (len >= 6) {
|
if (len >= 6) {
|
||||||
printf("4G: 服务器配置%s\r\n", frame[4] == 0 ? "成功" : "失败");
|
printf("[ 4G ] 服务器配置%s\r\n", frame[4] == 0 ? "成功" : "失败");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -134,7 +134,7 @@ void host_computer_on_get_status(uint8_t id, cJSON *json_pack)
|
|||||||
udp_send_to_server(str, strlen(str));
|
udp_send_to_server(str, strlen(str));
|
||||||
free(str);
|
free(str);
|
||||||
cJSON_Delete(root);
|
cJSON_Delete(root);
|
||||||
printf("get_status 回复已发送 \r\n");
|
printf("[ 上位机 ] get_status 回复已发送 \r\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -146,7 +146,7 @@ void host_computer_on_get_status(uint8_t id, cJSON *json_pack)
|
|||||||
void host_computer_on_reboot(uint8_t id, cJSON *json)
|
void host_computer_on_reboot(uint8_t id, cJSON *json)
|
||||||
{
|
{
|
||||||
(void) id;
|
(void) id;
|
||||||
printf("host_computer_on_reboot\r\n");
|
printf("[ 上位机 ] host_computer_on_reboot\r\n");
|
||||||
__ASM volatile("cpsid i");
|
__ASM volatile("cpsid i");
|
||||||
HAL_NVIC_SystemReset();
|
HAL_NVIC_SystemReset();
|
||||||
}
|
}
|
||||||
@@ -285,11 +285,11 @@ void host_computer_report_data(uint8_t stake_index, uint8_t gun_id)
|
|||||||
{
|
{
|
||||||
udp_send_to_server(str, strlen(str));
|
udp_send_to_server(str, strlen(str));
|
||||||
free(str);
|
free(str);
|
||||||
printf("南向:主动上报桩 %d 枪 %d 主动上报数据成功 \r\n", stake_index, gun_id);
|
printf("[ 上位机 ] 南向:主动上报桩 %d 枪 %d 主动上报数据成功 \r\n", stake_index, gun_id);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
printf("Failed to print JSON for report_data\r\n");
|
printf("[ 上位机 ] Failed to print JSON for report_data\r\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
cJSON_Delete(root);
|
cJSON_Delete(root);
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ void charger_to_server_0X01(uint8_t stake_index)
|
|||||||
data.net_conn_type = g_charger_manager.charger_piles[stake_index - 1].login_info.net_conn_type;
|
data.net_conn_type = g_charger_manager.charger_piles[stake_index - 1].login_info.net_conn_type;
|
||||||
data.tele_factory = g_charger_manager.charger_piles[stake_index - 1].login_info.tele_factory;
|
data.tele_factory = g_charger_manager.charger_piles[stake_index - 1].login_info.tele_factory;
|
||||||
memcpy(data.sim, g_charger_manager.charger_piles[stake_index - 1].login_info.sim, 10);
|
memcpy(data.sim, g_charger_manager.charger_piles[stake_index - 1].login_info.sim, 10);
|
||||||
printf("北向:对电桩 %d 发送登录认证\r\n", stake_index);
|
printf("[ 北向 ] 对电桩 %d 发送登录认证\r\n", stake_index);
|
||||||
pack_and_send_server_data(FRAME_TYPE_0X01, (uint8_t *)&data, sizeof(PACK_DATA_0X01), stake_index);
|
pack_and_send_server_data(FRAME_TYPE_0X01, (uint8_t *)&data, sizeof(PACK_DATA_0X01), stake_index);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -47,7 +47,7 @@ void charger_to_server_0X03(uint8_t stake_index, uint8_t gun_index)
|
|||||||
load_charger_serial(stake_index, data.charger_serial); // 加载充电桩序列号
|
load_charger_serial(stake_index, data.charger_serial); // 加载充电桩序列号
|
||||||
data.gun_index = ((gun_index / 10) << 4) | (gun_index % 10);
|
data.gun_index = ((gun_index / 10) << 4) | (gun_index % 10);
|
||||||
data.gun_status = g_charger_manager.charger_piles[stake_index - 1].guns[gun_index - 1].heartbeat_status_data.gun_status;
|
data.gun_status = g_charger_manager.charger_piles[stake_index - 1].guns[gun_index - 1].heartbeat_status_data.gun_status;
|
||||||
printf("北向:对电桩 %d 发送心跳请求,枪号:%d,状态:%d\r\n", stake_index, gun_index, data.gun_status);
|
printf("[ 北向 ] 对电桩 %d 发送心跳请求,枪号:%d,状态:%d\r\n", stake_index, gun_index, data.gun_status);
|
||||||
pack_and_send_server_data(FRAME_TYPE_0X03, (uint8_t *)&data, sizeof(PACK_DATA_0X03), stake_index);
|
pack_and_send_server_data(FRAME_TYPE_0X03, (uint8_t *)&data, sizeof(PACK_DATA_0X03), stake_index);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -63,7 +63,7 @@ void charger_to_server_0X05(uint16_t num, uint8_t stake_index)
|
|||||||
|
|
||||||
load_charger_serial(stake_index, data.charger_serial); // 加载充电桩序列号
|
load_charger_serial(stake_index, data.charger_serial); // 加载充电桩序列号
|
||||||
data.fee_model_no = num;
|
data.fee_model_no = num;
|
||||||
printf("北向:对电桩 %d 计费模型验证请求,模型号:%d\r\n", stake_index, num);
|
printf("[ 北向 ] 对电桩 %d 计费模型验证请求,模型号:%d\r\n", stake_index, num);
|
||||||
pack_and_send_server_data(FRAME_TYPE_0X05, (uint8_t *)&data, sizeof(PACK_DATA_0X05), stake_index);
|
pack_and_send_server_data(FRAME_TYPE_0X05, (uint8_t *)&data, sizeof(PACK_DATA_0X05), stake_index);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -76,7 +76,7 @@ void charger_to_server_0X09(uint8_t stake_index)
|
|||||||
{
|
{
|
||||||
PACK_DATA_0X09 data = {0};
|
PACK_DATA_0X09 data = {0};
|
||||||
load_charger_serial(stake_index, data.charger_serial); // 加载充电桩序列号
|
load_charger_serial(stake_index, data.charger_serial); // 加载充电桩序列号
|
||||||
printf("北向:对电桩 %d 计费模型请求\r\n", stake_index);
|
printf("[ 北向 ] 对电桩 %d 计费模型请求\r\n", stake_index);
|
||||||
pack_and_send_server_data(FRAME_TYPE_0X09, (uint8_t *)&data, sizeof(PACK_DATA_0X09), stake_index);
|
pack_and_send_server_data(FRAME_TYPE_0X09, (uint8_t *)&data, sizeof(PACK_DATA_0X09), stake_index);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -123,7 +123,7 @@ void charger_to_server_0X19(uint8_t stake_index, uint8_t gun_index)
|
|||||||
load_charger_serial(stake_index, data.charger_serial);
|
load_charger_serial(stake_index, data.charger_serial);
|
||||||
load_trade_serial(stake_index, gun_index, data.trade_serial);
|
load_trade_serial(stake_index, gun_index, data.trade_serial);
|
||||||
data.gun_index = ((gun_index / 10) << 4) | (gun_index % 10);
|
data.gun_index = ((gun_index / 10) << 4) | (gun_index % 10);
|
||||||
printf("北向:对电桩 %d 枪 %d 的充电结束上报 \r\n", stake_index, gun_index);
|
printf("[ 北向 ] 对电桩 %d 枪 %d 的充电结束上报 \r\n", stake_index, gun_index);
|
||||||
pack_and_send_server_data(FRAME_TYPE_0X19, (uint8_t *)&data, sizeof(PACK_DATA_0X19), stake_index);
|
pack_and_send_server_data(FRAME_TYPE_0X19, (uint8_t *)&data, sizeof(PACK_DATA_0X19), stake_index);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -164,7 +164,7 @@ void charger_to_server_0X35(uint8_t stake_index, uint8_t gun_index, uint8_t resu
|
|||||||
data.result = result;
|
data.result = result;
|
||||||
data.err_code = err_code;
|
data.err_code = err_code;
|
||||||
|
|
||||||
printf("北向:对电桩 %d 的平台停机回复,结果:%d,错误码:%d\r\n", stake_index, result, err_code);
|
printf("[ 北向 ] 对电桩 %d 的平台停机回复,结果:%d,错误码:%d\r\n", stake_index, result, err_code);
|
||||||
pack_and_send_server_data(FRAME_TYPE_0X35, (uint8_t *)&data, sizeof(PACK_DATA_0X35), stake_index);
|
pack_and_send_server_data(FRAME_TYPE_0X35, (uint8_t *)&data, sizeof(PACK_DATA_0X35), stake_index);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -219,7 +219,7 @@ void charger_to_server_0X3B(uint8_t stake_index, uint8_t gun_index)
|
|||||||
memcpy(data.phy_cardid, gun->fee_data.phy_cardid, 8); // 物理卡号
|
memcpy(data.phy_cardid, gun->fee_data.phy_cardid, 8); // 物理卡号
|
||||||
|
|
||||||
printf("========================================\r\n");
|
printf("========================================\r\n");
|
||||||
printf("北向:对电桩 %d 枪 %d 上传交易记录(0x3B),电量:%.2f,金额:%.2f\r\n",
|
printf("[ 北向 ] 对电桩 %d 枪 %d 上传交易记录(0x3B),电量:%.2f,金额:%.2f\r\n",
|
||||||
stake_index, gun_index, data.total_energy / 10000.0f, data.consumption / 10000.0f);
|
stake_index, gun_index, data.total_energy / 10000.0f, data.consumption / 10000.0f);
|
||||||
printf("\r\n========================================\r\n");
|
printf("\r\n========================================\r\n");
|
||||||
pack_and_send_server_data(FRAME_TYPE_0X3B, (uint8_t *)&data, sizeof(PACK_DATA_0X3B), stake_index);
|
pack_and_send_server_data(FRAME_TYPE_0X3B, (uint8_t *)&data, sizeof(PACK_DATA_0X3B), stake_index);
|
||||||
@@ -237,6 +237,6 @@ void charger_to_server_0x57(uint8_t stake_index)
|
|||||||
load_charger_serial(stake_index, data.charger_serial);
|
load_charger_serial(stake_index, data.charger_serial);
|
||||||
data.result = 0x01;
|
data.result = 0x01;
|
||||||
|
|
||||||
printf("北向:对电桩 %d 的计费模型主动更新回复\r\n", stake_index);
|
printf("[ 北向 ] 对电桩 %d 的计费模型主动更新回复\r\n", stake_index);
|
||||||
pack_and_send_server_data(FRAME_TYPE_0X57, (uint8_t *)&data, sizeof(PACK_DATA_0X57), stake_index);
|
pack_and_send_server_data(FRAME_TYPE_0X57, (uint8_t *)&data, sizeof(PACK_DATA_0X57), stake_index);
|
||||||
}
|
}
|
||||||
@@ -27,7 +27,7 @@ void on_cmd_frame_type_0X02(uint8_t stake_index, SERVER_PACK *pack)
|
|||||||
{
|
{
|
||||||
g_charger_manager.charger_piles[stake_index - 1].is_online = 1;
|
g_charger_manager.charger_piles[stake_index - 1].is_online = 1;
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
printf("北向:桩ID %d 登陆成功!\r\n", stake_index);
|
printf("[ 北向 ] 桩ID %d 登陆成功!\r\n", stake_index);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -43,7 +43,7 @@ void on_cmd_frame_type_0X04(uint8_t stake_index, SERVER_PACK *pack)
|
|||||||
PACK_DATA_0X04 data;
|
PACK_DATA_0X04 data;
|
||||||
memcpy(&data, pack->data, sizeof(PACK_DATA_0X04));
|
memcpy(&data, pack->data, sizeof(PACK_DATA_0X04));
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
printf("北向:桩ID %d 收到心跳应答!\r\n", stake_index);
|
printf("[ 北向 ] 桩ID %d 收到心跳应答!\r\n", stake_index);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -59,7 +59,7 @@ void on_cmd_frame_type_0X06(uint8_t stake_index, SERVER_PACK *pack)
|
|||||||
if (is_my_charger_serial(stake_index, data.charger_serial))
|
if (is_my_charger_serial(stake_index, data.charger_serial))
|
||||||
{
|
{
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
printf("北向:接收到计费模型验证应答,模型ID:%d, 验证结果:%d\r\n", data.fee_model_no, data.result);
|
printf("[ 北向 ] 接收到计费模型验证应答,模型ID:%d, 验证结果:%d\r\n", data.fee_model_no, data.result);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -81,7 +81,7 @@ void on_cmd_frame_type_0X0A(uint8_t stake_index, SERVER_PACK *pack)
|
|||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
|
|
||||||
printf("北向:接收到计费模型应答,模型ID:%d\r\n", g_charger_manager.fee_model_global.fee_model_no);
|
printf("[ 北向 ] 接收到计费模型应答,模型ID:%d\r\n", g_charger_manager.fee_model_global.fee_model_no);
|
||||||
printf("尖电费率:%d 服务费:%d\r\n", g_charger_manager.fee_model_global.shark_fee_ratio, g_charger_manager.fee_model_global.shark_service_ratio);
|
printf("尖电费率:%d 服务费:%d\r\n", g_charger_manager.fee_model_global.shark_fee_ratio, g_charger_manager.fee_model_global.shark_service_ratio);
|
||||||
printf("峰电费率:%d 服务费:%d\r\n", g_charger_manager.fee_model_global.peak_fee_ratio, g_charger_manager.fee_model_global.peak_service_ratio);
|
printf("峰电费率:%d 服务费:%d\r\n", g_charger_manager.fee_model_global.peak_fee_ratio, g_charger_manager.fee_model_global.peak_service_ratio);
|
||||||
printf("平电费率:%d 服务费:%d\r\n", g_charger_manager.fee_model_global.flat_fee_ratio, g_charger_manager.fee_model_global.flat_service_ratio);
|
printf("平电费率:%d 服务费:%d\r\n", g_charger_manager.fee_model_global.flat_fee_ratio, g_charger_manager.fee_model_global.flat_service_ratio);
|
||||||
@@ -167,7 +167,7 @@ void on_cmd_frame_type_0X58(uint8_t stake_index, SERVER_PACK *pack)
|
|||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
|
|
||||||
printf("北向:接收到计费模型应答,模型ID:%d\r\n", g_charger_manager.fee_model_global.fee_model_no);
|
printf("[ 北向 ] 接收到计费模型应答,模型ID:%d\r\n", g_charger_manager.fee_model_global.fee_model_no);
|
||||||
printf("尖电费率:%d 服务费:%d\r\n", g_charger_manager.fee_model_global.shark_fee_ratio, g_charger_manager.fee_model_global.shark_service_ratio);
|
printf("尖电费率:%d 服务费:%d\r\n", g_charger_manager.fee_model_global.shark_fee_ratio, g_charger_manager.fee_model_global.shark_service_ratio);
|
||||||
printf("峰电费率:%d 服务费:%d\r\n", g_charger_manager.fee_model_global.peak_fee_ratio, g_charger_manager.fee_model_global.peak_service_ratio);
|
printf("峰电费率:%d 服务费:%d\r\n", g_charger_manager.fee_model_global.peak_fee_ratio, g_charger_manager.fee_model_global.peak_service_ratio);
|
||||||
printf("平电费率:%d 服务费:%d\r\n", g_charger_manager.fee_model_global.flat_fee_ratio, g_charger_manager.fee_model_global.flat_service_ratio);
|
printf("平电费率:%d 服务费:%d\r\n", g_charger_manager.fee_model_global.flat_fee_ratio, g_charger_manager.fee_model_global.flat_service_ratio);
|
||||||
@@ -275,7 +275,7 @@ void on_cmd_frame_type_0X36(uint8_t stake_index, SERVER_PACK *pack)
|
|||||||
uint8_t result = TRUE; // 默认停止结果成功
|
uint8_t result = TRUE; // 默认停止结果成功
|
||||||
uint8_t err_code = 0; // 默认错误码为0
|
uint8_t err_code = 0; // 默认错误码为0
|
||||||
memcpy(&data, pack->data, sizeof(PACK_DATA_0X36));
|
memcpy(&data, pack->data, sizeof(PACK_DATA_0X36));
|
||||||
printf("北向:平台控制停止充电,桩ID:%d, 枪ID:%d\r\n", stake_index, data.gun_index);
|
printf("[ 北向 ] 平台控制停止充电,桩ID:%d, 枪ID:%d\r\n", stake_index, data.gun_index);
|
||||||
|
|
||||||
if (!is_my_charger_serial(stake_index, data.charger_serial))
|
if (!is_my_charger_serial(stake_index, data.charger_serial))
|
||||||
{
|
{
|
||||||
@@ -305,7 +305,7 @@ void on_cmd_frame_type_0X40(uint8_t stake_index, SERVER_PACK *pack)
|
|||||||
memcpy(&data, pack->data, sizeof(PACK_DATA_0X40));
|
memcpy(&data, pack->data, sizeof(PACK_DATA_0X40));
|
||||||
if (data.result == 0)
|
if (data.result == 0)
|
||||||
{
|
{
|
||||||
printf("北向:平台接收到交易记录,桩ID:%d, 交易记录:%s\r\n", stake_index, data.trade_serial);
|
printf("[ 北向 ] 平台接收到交易记录,桩ID:%d, 交易记录:%s\r\n", stake_index, data.trade_serial);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
671
Doc/README.md
Normal file
671
Doc/README.md
Normal file
@@ -0,0 +1,671 @@
|
|||||||
|
# BR_YKC 充电桩网关
|
||||||
|
|
||||||
|
基于 STM32H743 + AIR724 4G模块 的充电桩网关方案,对接**云快充**平台,支持通过**4G TCP**和**以太网UDP**双通道通信。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 目录
|
||||||
|
|
||||||
|
- [硬件架构](#硬件架构)
|
||||||
|
- [软件架构](#软件架构)
|
||||||
|
- [目录结构](#目录结构)
|
||||||
|
- [通信拓扑](#通信拓扑)
|
||||||
|
- [三层状态机](#三层状态机)
|
||||||
|
- [通信协议](#通信协议)
|
||||||
|
- [南向协议(网关 ↔ 桩)](#南向协议网关--桩)
|
||||||
|
- [上位机协议(网关 ↔ 上位机APP)](#上位机协议网关--上位机app)
|
||||||
|
- [北向协议(网关 ↔ 云快充)](#北向协议网关--云快充)
|
||||||
|
- [4G链路协议(STM32 ↔ AIR724)](#4g链路协议stm32--air724)
|
||||||
|
- [上位机 C# 客户端](#上位机-c-客户端)
|
||||||
|
- [项目结构](#项目结构)
|
||||||
|
- [页面功能](#页面功能)
|
||||||
|
- [通信机制](#通信机制)
|
||||||
|
- [数据存储](#数据存储)
|
||||||
|
- [配置参数](#配置参数)
|
||||||
|
- [配置指南](#配置指南)
|
||||||
|
- [修改桩编码(序列号)](#修改桩编码序列号)
|
||||||
|
- [修改桩数量](#修改桩数量)
|
||||||
|
- [修改每桩枪数](#修改每桩枪数)
|
||||||
|
- [配置云快充服务器地址](#配置云快充服务器地址)
|
||||||
|
- [Flash组件使用说明](#flash组件使用说明)
|
||||||
|
- [框架层 drv_flash](#框架层-drv_flash)
|
||||||
|
- [应用层 flash_config](#应用层-flash_config)
|
||||||
|
- [使用示例](#使用示例)
|
||||||
|
- [任务列表](#任务列表)
|
||||||
|
- [日志格式](#日志格式)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 硬件架构
|
||||||
|
|
||||||
|
```
|
||||||
|
┌──────────────────────────────────────────────┐
|
||||||
|
│ STM32H743 │
|
||||||
|
│ │
|
||||||
|
│ UART1 ─── 4G模块(AIR724) ──→ 云快充平台 (TCP)│
|
||||||
|
│ UART3 ─── RS485 │
|
||||||
|
│ ETH ──── LAN (UDP, 桩1~6 + 上位机) │
|
||||||
|
│ UART6 ─── 调试串口(printf) │
|
||||||
|
└──────────────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
| 外设 | 用途 |
|
||||||
|
|------|------|
|
||||||
|
| UART1 (115200) | 与AIR724 4G模块通信 |
|
||||||
|
| UART3 | RS485接口 |
|
||||||
|
| ETH (LWIP) | 以太网,桩1~6 UDP通信 + 上位机 |
|
||||||
|
| UART6 | printf调试输出 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 软件架构
|
||||||
|
|
||||||
|
```
|
||||||
|
Os/ 任务/队列/信号量/定时器管理
|
||||||
|
├─ os_task.c 5个任务的创建
|
||||||
|
├─ os_queue.c 3个消息队列
|
||||||
|
├─ os_timer.c 软件定时器
|
||||||
|
└─ os_semaphore.c 信号量/互斥量
|
||||||
|
|
||||||
|
App/ 应用层任务
|
||||||
|
├─ task_air724 4G下行数据解析任务
|
||||||
|
├─ task_udp UDP收发 + 解析任务
|
||||||
|
├─ task_ykc 云快充核心状态机任务
|
||||||
|
└─ task_sys 系统任务(心跳指示、喂狗)
|
||||||
|
|
||||||
|
Driver/ 驱动层
|
||||||
|
├─ drv_air724 AIR724命令收发 + 响应解析
|
||||||
|
├─ drv_usart 串口收发(含互斥锁)
|
||||||
|
├─ drv_flash 通用Flash读写框架
|
||||||
|
└─ flash_config 应用层Flash配置
|
||||||
|
|
||||||
|
Network/ 网络层
|
||||||
|
├─ udp_manager UDP报文发送
|
||||||
|
└─ udp_router UDP路由分发
|
||||||
|
|
||||||
|
Protocol/ 协议层
|
||||||
|
├─ Point/ 南向(充电桩JSON)
|
||||||
|
├─ Host Computer/ 上位机JSON通信
|
||||||
|
└─ Ykc/ 北向(云快充字节协议)
|
||||||
|
├─ charger_to_server 上行帧
|
||||||
|
├─ server_to_charger 下行帧
|
||||||
|
├─ server_common 公共(组包/解包/CRC)
|
||||||
|
└─ ykc_router 帧类型路由分发
|
||||||
|
|
||||||
|
Global/ 全局数据
|
||||||
|
├─ g_dcpile 桩/枪 结构体 + 管理器
|
||||||
|
├─ g_init 全局初始化
|
||||||
|
├─ g_runtime 运行时统计
|
||||||
|
└─ board_config 板级配置(IP/端口)
|
||||||
|
|
||||||
|
4G/ 4G模块Lua固件
|
||||||
|
├─ core/main.lua 入口:初始化+串口+网络
|
||||||
|
├─ core/cmd.lua 命令解析+分发
|
||||||
|
└─ core/linksocket.lua 多路TCP socket管理
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 通信拓扑
|
||||||
|
|
||||||
|
```
|
||||||
|
云快充服务器(TCP)
|
||||||
|
↑
|
||||||
|
│ 4G
|
||||||
|
AIR724模块
|
||||||
|
↑ UART1
|
||||||
|
┌─────────┴──────────┐
|
||||||
|
│ STM32H743 网关 │
|
||||||
|
│ (协议转换器) │
|
||||||
|
└─────────┬──────────┘
|
||||||
|
UDP │ 以太网
|
||||||
|
┌─────────────┼─────────────┐
|
||||||
|
│ │ │
|
||||||
|
桩1~6 上位机 RS485设备
|
||||||
|
(10.12.19.101~106) (107) (触摸屏等)
|
||||||
|
```
|
||||||
|
|
||||||
|
**数据路径:**
|
||||||
|
|
||||||
|
- **云快充 → 桩**:云快充TCP → 4G → UART1 → STM32解析 → 填充数据到桩结构体
|
||||||
|
- **桩上报 → 云快充**:桩 → UDP → STM32 → 打包Ykc帧 → UART1 → 4G → TCP → 云快充
|
||||||
|
- **上位机查询**:上位机 → UDP → STM32 → 查询桩数据 → 回复
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 三层状态机
|
||||||
|
|
||||||
|
[task_ykc.c](file:///d:/公司项目/BR_YKC/Core/User/App/task_ykc.c) 实现了 **桩层 + 枪层** 两层非阻塞时间片状态机:
|
||||||
|
|
||||||
|
### 桩层初始化(桩0~2通用,只做一次)
|
||||||
|
|
||||||
|
```
|
||||||
|
step 0 ── 等待桩UDP上电 → 连接4G通道(i+1)
|
||||||
|
↓ (socket_connected[i] == true)
|
||||||
|
step 1 ── 发送云快充登录(0x01)
|
||||||
|
↓ (is_online == true)
|
||||||
|
step 2 ── 发送计费模型验证(0x05) + 请求(0x09)
|
||||||
|
↓ (get_model == true)
|
||||||
|
step 3 ── 进入枪层运行态
|
||||||
|
```
|
||||||
|
|
||||||
|
### 枪层运行(每把枪独立)
|
||||||
|
|
||||||
|
```
|
||||||
|
gun_step 0 ── 每5秒上传实时数据(0x13) + 主动上报到上位机
|
||||||
|
如有账单(is_get_bill==true),上传交易记录(0x3B)
|
||||||
|
```
|
||||||
|
|
||||||
|
### 非阻塞机制
|
||||||
|
|
||||||
|
所有 `osDelay()` 已被替换为**时间戳轮询**:
|
||||||
|
|
||||||
|
```c
|
||||||
|
now = HAL_GetTick();
|
||||||
|
if (now < pile->step_tick) // 时间没到,立即跳过,不阻塞
|
||||||
|
continue;
|
||||||
|
|
||||||
|
// 执行动作
|
||||||
|
pile->step_tick = now + 5000; // 设定5秒后的下次超时
|
||||||
|
```
|
||||||
|
|
||||||
|
6个桩每轮循环只需微秒级完成,互不阻塞。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 通信协议
|
||||||
|
|
||||||
|
### 南向协议(网关 ↔ 桩)
|
||||||
|
|
||||||
|
- **传输**:以太网 UDP
|
||||||
|
- **端口**:Server=6001, Stake=6001, App=6002
|
||||||
|
- **桩IP**:10.12.19.101 ~ 106
|
||||||
|
- **格式**:JSON
|
||||||
|
|
||||||
|
**路由表** [udp_router.c](file:///d:/公司项目/BR_YKC/Core/User/Network/udp_router.c):
|
||||||
|
|
||||||
|
| cmd | 桩ID来源 | 处理函数 | 说明 |
|
||||||
|
|-----|---------|----------|------|
|
||||||
|
| `online` | 桩1~6 | `point_callback_power_on` | 上电,设置 is_udp_online |
|
||||||
|
| `heartbeat` | 桩1~6 | `point_callback_heartbeat` | 心跳 |
|
||||||
|
| `start charging` | 桩1~6 | `point_callback_start_charging` | 开始充电反馈 |
|
||||||
|
| `end charging` | 桩1~6 | `point_callback_end_charging` | 停止充电反馈 |
|
||||||
|
| `realtime data` | 桩1~6 | `point_callback_realtime_data` | 实时数据 |
|
||||||
|
| `settlement bill` | 桩1~6 | `point_callback_settlement_bill` | 结算账单 |
|
||||||
|
| `proactive end charging` | 桩1~6 | `point_callback_proactive_end_charging` | 桩主动停止 |
|
||||||
|
| `charge process real` | 桩1~6 | `point_callback_charge_process` | BMS需求 |
|
||||||
|
| `bms info real` | 桩1~6 | `point_callback_bms_info` | BMS信息 |
|
||||||
|
|
||||||
|
**桩未上电拦截**:除 `online` 外,所有桩指令都会检查 `is_udp_online`,未上电的桩指令将被静默丢弃。
|
||||||
|
|
||||||
|
### 上位机协议(网关 ↔ 上位机APP)
|
||||||
|
|
||||||
|
- **传输**:以太网 UDP(同一通道)
|
||||||
|
- **端口**:Server=6001, App=6002
|
||||||
|
- **上位机ID**:7
|
||||||
|
- **格式**:JSON,含 `request_id` + `success`
|
||||||
|
|
||||||
|
**指令表** [host_computer_protocol.h](file:///d:/公司项目/BR_YKC/Core/User/Protocol/Host%20Computer/host_computer_protocol.h):
|
||||||
|
|
||||||
|
| cmd | 功能 | 处理函数 | 回复字段 |
|
||||||
|
|-----|------|----------|----------|
|
||||||
|
| `server_login` | 登录 | `host_computer_on_login` | success |
|
||||||
|
| `server_get_status` | 获取所有桩状态 | `host_computer_on_get_status` | piles[].serial/is_online/guns[].status |
|
||||||
|
| `server_reboot` | 重启网关 | `host_computer_on_reboot` | 无(立即重启) |
|
||||||
|
| `gateway_get_info` | 查询网关信息 | `host_computer_on_get_gw_info` | device_id, software_ver, hardware_ver, uptime |
|
||||||
|
| `gateway_get_4g_status` | 查询4G状态 | `host_computer_on_get_4g_status` | iccid, net_status, signal, isp |
|
||||||
|
| `gateway_get_cloud_config` | 查询云配置 | `host_computer_on_get_cloud_config` | host, port |
|
||||||
|
| `gateway_set_cloud_config` | 设置云配置 | `host_computer_on_set_cloud_config` | host, port(触发重连) |
|
||||||
|
| `gateway_get_net_config` | 查询网络配置 | `host_computer_on_get_net_config` | ip, mask, gateway, dns |
|
||||||
|
| `gateway_set_net_config` | 设置网络配置 | `host_computer_on_set_net_config` | success(重启生效) |
|
||||||
|
| `server_get_pile_info` | 查询单个桩信息 | `host_computer_on_get_pile_info` | serial, type, gun_num, protocol_ver, software_ver, sim |
|
||||||
|
|
||||||
|
### 北向协议(网关 ↔ 云快充)
|
||||||
|
|
||||||
|
- **传输**:4G TCP
|
||||||
|
- **数据格式**:字节流,含CRC16校验
|
||||||
|
- **封装**:`55 AA 01 socketId len [ykc_frame] AA 55`
|
||||||
|
|
||||||
|
#### YKC帧格式
|
||||||
|
|
||||||
|
```
|
||||||
|
┌────────┬──────┬────────┬─────────┬────────┬──────────┬──────┐
|
||||||
|
│ 0x68 │ len │ serial │encrypt │type │ data │ crc │
|
||||||
|
│ (起始) │(1字节)│ (2字节)│ (1字节) │(1字节) │ (n字节) │2字节│
|
||||||
|
└────────┴──────┴────────┴─────────┴────────┴──────────┴──────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 帧类型(上行 → 云快充)
|
||||||
|
|
||||||
|
| type | 函数 | 说明 |
|
||||||
|
|------|------|------|
|
||||||
|
| 0x01 | `charger_to_server_0X01` | 登录认证 |
|
||||||
|
| 0x03 | `charger_to_server_0X03` | 心跳 |
|
||||||
|
| 0x05 | `charger_to_server_0X05` | 计费模型验证 |
|
||||||
|
| 0x09 | `charger_to_server_0X09` | 计费模型请求 |
|
||||||
|
| 0x13 | `charger_to_server_0X13` | 实时监测数据 |
|
||||||
|
| 0x19 | `charger_to_server_0X19` | 充电结束 |
|
||||||
|
| 0x33 | `charger_to_server_0X33` | 远程启动回复 |
|
||||||
|
| 0x35 | `charger_to_server_0X35` | 远程停机回复 |
|
||||||
|
| 0x3B | `charger_to_server_0X3B` | 交易记录 |
|
||||||
|
| 0x57 | `charger_to_server_0x57` | 计费模型应答 |
|
||||||
|
|
||||||
|
#### 帧类型(下行 ← 云快充)
|
||||||
|
|
||||||
|
| type | 处理函数 | 说明 |
|
||||||
|
|------|----------|------|
|
||||||
|
| 0x02 | `on_cmd_frame_type_0X02` | 登录认证应答 |
|
||||||
|
| 0x04 | `on_cmd_frame_type_0X04` | 心跳应答 |
|
||||||
|
| 0x06 | `on_cmd_frame_type_0X06` | 计费模型验证应答 |
|
||||||
|
| 0x0A | `on_cmd_frame_type_0X0A` | 获取计费模型 |
|
||||||
|
| 0x58 | `on_cmd_frame_type_0X58` | 计费模型设置 |
|
||||||
|
| 0x34 | `on_cmd_frame_type_0X34` | 平台启动充电 |
|
||||||
|
| 0x36 | `on_cmd_frame_type_0X36` | 平台控制停止充电 |
|
||||||
|
| 0x40 | `on_cmd_frame_type_0X40` | 交易记录确认 |
|
||||||
|
|
||||||
|
### 4G链路协议(STM32 ↔ AIR724)
|
||||||
|
|
||||||
|
AIR724模块内部运行Lua脚本 [cmd.lua](file:///d:/公司项目/BR_YKC/4G/code/core/cmd.lua) + [linksocket.lua](file:///d:/公司项目/BR_YKC/4G/code/core/linksocket.lua):
|
||||||
|
|
||||||
|
```
|
||||||
|
55 AA mainCmd subCmd [payload] AA 55
|
||||||
|
```
|
||||||
|
|
||||||
|
| mainCmd | subCmd | 功能 |
|
||||||
|
|---------|--------|------|
|
||||||
|
| 0x01 | socketId | 数据发送到指定Socket |
|
||||||
|
| 0x02 | - | 系统重启 |
|
||||||
|
| 0x03 | 0x01/0x02 | 连接/断开Socket |
|
||||||
|
| 0x04 | 0x00 | 设置服务器地址 |
|
||||||
|
| 0x05 | 0x01~0x03 | 查询ICCID/IMSI/IMEI |
|
||||||
|
| 0x06 | 0x00 | 查询信号强度 |
|
||||||
|
| 0x07 | 0x00 | 查询链路状态 |
|
||||||
|
|
||||||
|
**上行响应(4G → STM32)**:
|
||||||
|
|
||||||
|
| mainCmd | subCmd | 含义 |
|
||||||
|
|---------|--------|------|
|
||||||
|
| 0x83 | 0x01 | TCP已连接 |
|
||||||
|
| 0x83 | 0x02 | TCP已断开 |
|
||||||
|
| 0x83 | 0x03 | TCP连接失败 |
|
||||||
|
| 0x84 | 0x01~0x03 | SIM信息(ICCID/IMSI/IMEI) |
|
||||||
|
| 0x85 | - | 信号强度 |
|
||||||
|
| 0x86 | - | 链路状态 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 上位机 C# 客户端
|
||||||
|
|
||||||
|
C# 上位机客户端项目位于 `C:\Users\Administrator\PycharmProjects\PythonProject\C#\YKC`,基于 **.NET Framework 4.7.2** + **WPF** 框架开发,通过 **UDP** 与网关通信。
|
||||||
|
|
||||||
|
### 项目结构
|
||||||
|
|
||||||
|
```
|
||||||
|
YKC/
|
||||||
|
├── App.xaml(.cs) 程序入口
|
||||||
|
├── MainWindow.xaml(.cs) 主窗口(导航框架)
|
||||||
|
├── LoginWindow.xaml(.cs) 登录窗口
|
||||||
|
├── Config.cs 配置参数 + 指令字典
|
||||||
|
├── UdpClient.cs UDP通信客户端(同步/异步)
|
||||||
|
├── PilesDataStore.cs 充电桩历史数据存储(含图表数据)
|
||||||
|
│
|
||||||
|
├── Pages/
|
||||||
|
│ ├── DashboardPage.xaml(.cs) 总览页面
|
||||||
|
│ ├── RealtimePage.xaml(.cs) 实时监控(含OxyPlot图表)
|
||||||
|
│ ├── ChargerPage.xaml(.cs) 充电桩管理
|
||||||
|
│ └── GatewayPage.xaml(.cs) 网关管理
|
||||||
|
│
|
||||||
|
├── bin/Debug/
|
||||||
|
│ ├── OxyPlot.dll 波形图库
|
||||||
|
│ ├── OxyPlot.Wpf.dll
|
||||||
|
│ ├── OxyPlot.Wpf.Shared.dll
|
||||||
|
│ └── Newtonsoft.Json.dll JSON库
|
||||||
|
│
|
||||||
|
└── Properties/ 项目属性
|
||||||
|
```
|
||||||
|
|
||||||
|
### 页面功能
|
||||||
|
|
||||||
|
#### 1. 登录页面 (LoginWindow)
|
||||||
|
|
||||||
|
- 用户名/密码认证
|
||||||
|
- 发送 `server_login` → 网关返回 `success: true/false`
|
||||||
|
- 默认账号:`admin` / `123456`
|
||||||
|
|
||||||
|
#### 2. 总览页面 (DashboardPage)
|
||||||
|
|
||||||
|
- **连接状态**:显示网关在线/离线
|
||||||
|
- **在线/充电统计**:在线桩数、充电中枪数
|
||||||
|
- **表格列表**:每桩的序列号、在线状态、每枪状态
|
||||||
|
- 每 **5秒** 自动轮询 `server_get_status`
|
||||||
|
|
||||||
|
| 枪状态 | 含义 |
|
||||||
|
|--------|------|
|
||||||
|
| 0 | 离线 |
|
||||||
|
| 1 | 故障 |
|
||||||
|
| 2 | 空闲 |
|
||||||
|
| 3 | 充电中 |
|
||||||
|
|
||||||
|
#### 3. 实时监控页面 (RealtimePage)
|
||||||
|
|
||||||
|
- 选择桩号(1~N) + 枪号(1~N)
|
||||||
|
- 实时显示:电流(A)、电压(V)、功率(kW)、电量(kWh)、总金额、SOC、累计时间、剩余时间
|
||||||
|
- **OxyPlot 实时曲线**:
|
||||||
|
- 电流/电压/功率 折线图(含时间轴,最多300个点)
|
||||||
|
- 电费/服务费/总金额 柱状图
|
||||||
|
- 每 **2秒** 自动轮询 `report_data` 主动上报数据(来自PilesDataStore历史记录)
|
||||||
|
|
||||||
|
#### 4. 充电桩管理页面 (ChargerPage)
|
||||||
|
|
||||||
|
**查询桩信息**:
|
||||||
|
- 按桩索引查询
|
||||||
|
- 回复显示:序列号、类型(直流/交流)、枪数、协议版本、软件版本、SIM
|
||||||
|
|
||||||
|
**设置桩ID**:
|
||||||
|
- 输入桩索引 + 14位HEX序列号
|
||||||
|
|
||||||
|
**重启网关**:
|
||||||
|
- 发送 `server_reboot`(确认弹窗)
|
||||||
|
|
||||||
|
#### 5. 网关管理页面 (GatewayPage)
|
||||||
|
|
||||||
|
**网关信息卡片**:
|
||||||
|
- 设备ID、软件版本、硬件版本、运行时长
|
||||||
|
- 调用 `gateway_get_info`
|
||||||
|
|
||||||
|
**4G状态卡片**:
|
||||||
|
- ICCID、网络状态、信号强度(dBm)、运营商
|
||||||
|
- 调用 `gateway_get_4g_status`
|
||||||
|
|
||||||
|
**云平台配置卡片**:
|
||||||
|
- 查询(`gateway_get_cloud_config`) / 保存(`gateway_set_cloud_config`)
|
||||||
|
- 保存时验证:IP格式或域名格式,端口 1~65535
|
||||||
|
|
||||||
|
**网络配置卡片**:
|
||||||
|
- IP/掩码/网关/DNS 查询 + 设置
|
||||||
|
- 调用 `gateway_get_net_config` / `gateway_set_net_config`
|
||||||
|
- 支持IP地址格式校验
|
||||||
|
|
||||||
|
### 通信机制
|
||||||
|
|
||||||
|
UDP通信封装在 [UdpClient.cs](file:///C:/Users/Administrator/PycharmProjects/PythonProject/C%23/YKC/UdpClient.cs):
|
||||||
|
|
||||||
|
**消息格式**:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"id": 7, // 固定ID=7(上位机)
|
||||||
|
"cmd": "server_login",
|
||||||
|
"request_id": "server_login_1700000000000",
|
||||||
|
...其他参数...
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**回复格式**:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"request_id": "server_login_...",
|
||||||
|
"success": true,
|
||||||
|
...其他数据...
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**两种发送模式**:
|
||||||
|
|
||||||
|
| 方法 | 说明 |
|
||||||
|
|------|------|
|
||||||
|
| `Send(payload, callback)` | 异步发送,通过回调接收回复 |
|
||||||
|
| `SendSync(payload, timeoutSec?)` | 同步发送,阻塞等待回复或超时(默认4秒) |
|
||||||
|
|
||||||
|
**超时机制**:异步请求启动定时器,超时后自动回调 `{ success: false, error: "timeout" }`
|
||||||
|
|
||||||
|
**主动上报接收**:`OnActiveReport` 事件监听 `cmd == "report_data"` / `"pile_metrics"` / `"real_time_data"`,由 `PilesDataStore` 订阅存储。
|
||||||
|
|
||||||
|
**监听端口**:`Config.LocalPort = 6002`,目标网关 `Config.TargetIp:Config.TargetPort`(默认 `10.12.19.100:6001`)
|
||||||
|
|
||||||
|
### 数据存储
|
||||||
|
|
||||||
|
[PilesDataStore.cs](file:///C:/Users/Administrator/PycharmProjects/PythonProject/C%23/YKC/PilesDataStore.cs) 单例模式管理:
|
||||||
|
|
||||||
|
- **实时数据**:`GetLatest(pile, gun)` → 最新一条 `JObject`
|
||||||
|
- **图表数据**:`GetChartData(pile, gun)` → `GunData` 对象,内含最多300个历史点的电流/电压/功率/电量/金额等序列
|
||||||
|
- **历史清理**:超过300个点自动移除旧数据
|
||||||
|
|
||||||
|
### 配置参数
|
||||||
|
|
||||||
|
[Config.cs](file:///C:/Users/Administrator/PycharmProjects/PythonProject/C%23/YKC/Config.cs):
|
||||||
|
|
||||||
|
```csharp
|
||||||
|
TargetIp = "10.12.19.100"; // 网关IP
|
||||||
|
TargetPort = 6001; // 网关UDP端口
|
||||||
|
LocalPort = 6002; // 本机监听端口
|
||||||
|
UdpTimeout = 3; // 超时时间(秒)
|
||||||
|
```
|
||||||
|
|
||||||
|
**指令字典**(与网关 `udp_router.c` 路由表对应):
|
||||||
|
|
||||||
|
| 常量 | cmd | 对应网关处理函数 |
|
||||||
|
|------|-----|------------------|
|
||||||
|
| `LOGIN` | `server_login` | `host_computer_on_login` |
|
||||||
|
| `GET_STATUS` | `server_get_status` | `host_computer_on_get_status` |
|
||||||
|
| `REBOOT` | `server_reboot` | `host_computer_on_reboot` |
|
||||||
|
| `GET_PILE_INFO` | `server_get_pile_info` | `host_computer_on_get_pile_info` |
|
||||||
|
| `GET_GW_INFO` | `gateway_get_info` | `host_computer_on_get_gw_info` |
|
||||||
|
| `GET_4G_STATUS` | `gateway_get_4g_status` | `host_computer_on_get_4g_status` |
|
||||||
|
| `GET_CLOUD_CONFIG` | `gateway_get_cloud_config` | `host_computer_on_get_cloud_config` |
|
||||||
|
| `SET_CLOUD_CONFIG` | `gateway_set_cloud_config` | `host_computer_on_set_cloud_config` |
|
||||||
|
| `GET_NET_CONFIG` | `gateway_get_net_config` | `host_computer_on_get_net_config` |
|
||||||
|
| `SET_NET_CONFIG` | `gateway_set_net_config` | `host_computer_on_set_net_config` |
|
||||||
|
| `SET_PILE_ID` | `server_set_pile_id` | 待开发 |
|
||||||
|
| `REPORT_DATA` | `report_data` | 主动上报(南向) |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 配置指南
|
||||||
|
|
||||||
|
### 修改桩编码(序列号)
|
||||||
|
|
||||||
|
修改 [g_dcpile.c](file:///d:/公司项目/BR_YKC/Core/User/Global/g_dcpile.c) 中的 `piles_serial` 数组,每个桩编码为7字节十六进制:
|
||||||
|
|
||||||
|
```c
|
||||||
|
/*充电桩序列号*/
|
||||||
|
const uint8_t piles_serial[6][7] = {
|
||||||
|
{0x32, 0x01, 0x06, 0x01, 0x16, 0x92, 0x45}, // 桩1
|
||||||
|
{0x32, 0x01, 0x06, 0x01, 0x16, 0x92, 0x44}, // 桩2
|
||||||
|
{0x32, 0x01, 0x06, 0x01, 0x16, 0x92, 0x43}, // 桩3
|
||||||
|
{0x32, 0x01, 0x06, 0x01, 0x16, 0x92, 0x42}, // 桩4
|
||||||
|
{0x32, 0x01, 0x06, 0x01, 0x11, 0x15, 0x58}, // 桩5
|
||||||
|
{0x32, 0x01, 0x06, 0x01, 0x11, 0x15, 0x54}, // 桩6
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
> `init_chargers()` 中通过 `memcpy(ctx->charger_serial, piles_serial[i], CHARGER_SERIAL_LENGTH)` 加载。
|
||||||
|
|
||||||
|
序列号转换为字符串显示时表现为14位HEX码,例如 `32010601169244`。
|
||||||
|
|
||||||
|
### 修改桩数量
|
||||||
|
|
||||||
|
**两步:**
|
||||||
|
|
||||||
|
**①** 修改 [g_dcpile.h](file:///d:/公司项目/BR_YKC/Core/User/Global/g_dcpile.h) 中的宏:
|
||||||
|
|
||||||
|
```c
|
||||||
|
#define MAX_CHARGER_COUNT 2 // ← 改为实际桩数量
|
||||||
|
```
|
||||||
|
|
||||||
|
**②** 确保 [g_dcpile.c](file:///d:/公司项目/BR_YKC/Core/User/Global/g_dcpile.c) 中的 `piles_serial` 数组有对应数量的序列号。
|
||||||
|
|
||||||
|
同时需要修改 [udp_router.c](file:///d:/公司项目/BR_YKC/Core/User/Network/udp_router.c) 中 `ROUTE_TABLE` 的路由数量(如果新增桩路由),以及 [task_ykc.c](file:///d:/公司项目/BR_YKC/Core/User/App/task_ykc.c) 中状态机的循环 `for (int i = 0; i < g_charger_manager.charger_count; i++)` 已自动适配。
|
||||||
|
|
||||||
|
> 桩1~6的UDP IP地址在 [udp_manager.c](file:///d:/公司项目/BR_YKC/Core/User/Network/udp_manager.c) 中硬编码:
|
||||||
|
> ```c
|
||||||
|
> static ip4_addr_t s_point_ip[6] = {
|
||||||
|
> IPADDR4_INIT_BYTES(10, 12, 19, 101), /* 桩1 */
|
||||||
|
> IPADDR4_INIT_BYTES(10, 12, 19, 102), /* 桩2 */
|
||||||
|
> ...
|
||||||
|
> };
|
||||||
|
> ```
|
||||||
|
> 如果桩数量变化,需要同步更新此数组。
|
||||||
|
|
||||||
|
### 修改每桩枪数
|
||||||
|
|
||||||
|
修改 [g_dcpile.h](file:///d:/公司项目/BR_YKC/Core/User/Global/g_dcpile.h):
|
||||||
|
|
||||||
|
```c
|
||||||
|
#define MAX_GUN_PER_CHARGER 2 // ← 改为实际枪数
|
||||||
|
```
|
||||||
|
|
||||||
|
状态机中的枪循环已自动适配:
|
||||||
|
```c
|
||||||
|
for (int g = 0; g < MAX_GUN_PER_CHARGER; g++)
|
||||||
|
```
|
||||||
|
|
||||||
|
### 配置云快充服务器地址
|
||||||
|
|
||||||
|
默认在 [linksocket.lua](file:///d:/公司项目/BR_YKC/4G/code/core/linksocket.lua) 中:
|
||||||
|
|
||||||
|
```lua
|
||||||
|
local server_config = {
|
||||||
|
ip = "129.211.170.245",
|
||||||
|
port = 9002
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
可通过上位机指令 `gateway_set_cloud_config` 动态修改 `s_cloud_host` / `s_cloud_port`,修改后调用 `drv_air724_set_server` 触发AIR724重新连接。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Flash组件使用说明
|
||||||
|
|
||||||
|
Flash存储组件分为**两层**:
|
||||||
|
|
||||||
|
### 框架层 drv_flash
|
||||||
|
|
||||||
|
[drv_flash.h](file:///d:/公司项目/BR_YKC/Core/User/Driver/drv_flash.h) / [drv_flash.c](file:///d:/公司项目/BR_YKC/Core/User/Driver/drv_flash.c)
|
||||||
|
|
||||||
|
提供通用Flash读写管理,支持按帧类型存取、覆写模式、多帧管理。
|
||||||
|
|
||||||
|
#### 帧格式
|
||||||
|
|
||||||
|
```
|
||||||
|
┌──────┬──────┬──────┬──────┬──────────┬──────┐
|
||||||
|
│ HEAD │ size_low │size_high│type│ DATA │ TAIL │
|
||||||
|
│(0xA5)│ (2字节 小端) │(1字节)│(n字节) │(0x5A)│
|
||||||
|
└──────┴──────┴──────┴──────┴──────────┴──────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 核心API
|
||||||
|
|
||||||
|
| 函数 | 说明 |
|
||||||
|
|------|------|
|
||||||
|
| `flash_manage_init(flash_manage_t *fm)` | 初始化:遍历Flash重建可读帧表 |
|
||||||
|
| `flash_manage_read(fm, *pbuf, frame_type)` | 读取指定类型的帧数据 |
|
||||||
|
| `flash_manage_write(fm, *pbuf, size, frame_type)` | 写入指定类型的帧数据 |
|
||||||
|
|
||||||
|
#### flash_manage_t 配置
|
||||||
|
|
||||||
|
```c
|
||||||
|
typedef struct {
|
||||||
|
uint8_t align_num; // 地址对齐数(STM32H7一般为32)
|
||||||
|
flash_write_read_mode_t flash_write_mode; // 写模式
|
||||||
|
flash_write_read_mode_t flash_read_mode; // 读模式
|
||||||
|
uint32_t flash_start_address; // 管理起始地址(按扇区对齐)
|
||||||
|
uint32_t manage_sector_num; // 管理的扇区数
|
||||||
|
uint32_t sector_size; // 扇区大小(H743=128KB)
|
||||||
|
void (*read_flash)(...); // 读函数指针
|
||||||
|
void (*write_flash)(...); // 写函数指针
|
||||||
|
uint8_t (*erase_sector)(...); // 擦除函数指针
|
||||||
|
} flash_manage_t;
|
||||||
|
```
|
||||||
|
|
||||||
|
### 应用层 flash_config
|
||||||
|
|
||||||
|
[flash_config.h](file:///d:/公司项目/BR_YKC/Core/User/Driver/flash_config.h) / [flash_config.c](file:///d:/公司项目/BR_YKC/Core/User/Driver/flash_config.c)
|
||||||
|
|
||||||
|
基于框架层的封装,提供开箱即用的API:
|
||||||
|
|
||||||
|
```c
|
||||||
|
// 单例,地址=0x08180000,1个Sector(128KB),32字节对齐
|
||||||
|
void stm_flash_init(void);
|
||||||
|
|
||||||
|
// 读取,传入缓冲区 + 帧类型,成功返回1
|
||||||
|
int8_t stm_flash_read(uint8_t *pbuf, uint8_t frame_type);
|
||||||
|
|
||||||
|
// 写入,传入数据 + 大小 + 帧类型,成功返回1
|
||||||
|
int8_t stm_flash_write(uint8_t *pbuf, uint16_t size, uint8_t frame_type);
|
||||||
|
```
|
||||||
|
|
||||||
|
> **注意**:STM32H743 Bank2 的 Sector 擦除规则:
|
||||||
|
> - 起始地址 `0x08100000`,每Sector = 128KB
|
||||||
|
> - 写入必须 **32字节对齐**,不满32字节补 `0xFF`
|
||||||
|
> - `flash_config.c` 使用 `0x08180000`(Bank2的第4个Sector)
|
||||||
|
|
||||||
|
### 使用示例
|
||||||
|
|
||||||
|
```c
|
||||||
|
#include "flash_config.h"
|
||||||
|
|
||||||
|
// 初始化(在main中调用一次)
|
||||||
|
stm_flash_init();
|
||||||
|
|
||||||
|
// 写入配置数据
|
||||||
|
uint8_t config_data[] = {0x01, 0x02, 0x03, 0x04};
|
||||||
|
stm_flash_write(config_data, sizeof(config_data), 0x01); // 帧类型1
|
||||||
|
|
||||||
|
// 读取配置数据
|
||||||
|
uint8_t read_buf[64] = {0};
|
||||||
|
if (stm_flash_read(read_buf, 0x01) == 1) {
|
||||||
|
// 读取成功,read_buf中为数据
|
||||||
|
} else {
|
||||||
|
// 无数据
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**写模式**:
|
||||||
|
|
||||||
|
| 模式 | 值 | 说明 |
|
||||||
|
|------|----|------|
|
||||||
|
| `FLASH_NO_OVERWRITING_MODE` | 0x00 | 只追加,不覆盖旧帧 |
|
||||||
|
| `FLASH_OVERWRITING_MODE` | 0x01 | 将旧帧头置为无效,写新帧(默认) |
|
||||||
|
|
||||||
|
**读模式**:
|
||||||
|
|
||||||
|
| 模式 | 值 | 说明 |
|
||||||
|
|------|----|------|
|
||||||
|
| `FLASH_NO_CLEAR_MODE` | 0x02 | 读取后不清除(默认) |
|
||||||
|
| `FLASH_CLEAR_MODE` | 0x03 | 读取后将帧标记为无效 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 任务列表
|
||||||
|
|
||||||
|
| 任务 | 函数 | 栈大小 | 优先级 | 说明 |
|
||||||
|
|------|------|--------|--------|------|
|
||||||
|
| SysTask | `sys_task_function` | 128 | Low | 指示灯、蜂鸣器、喂狗 |
|
||||||
|
| Air724RecvTask | `air724_recv_task_function` | 1024 | AboveNormal | 解析4G下行数据 |
|
||||||
|
| UDPRecvTask | `udp_recv_task_function` | 1536 | High | UDP接收入队 |
|
||||||
|
| UDPParseTask | `udp_parse_task_function` | 2048 | AboveNormal | UDP数据解析+路由分发 |
|
||||||
|
| YkcTask | `ykc_task_function` | 1024 | AboveNormal | 云快充状态机+数据上报 |
|
||||||
|
|
||||||
|
### 消息队列
|
||||||
|
|
||||||
|
| 队列 | 长度 | 消息大小 | 用途 |
|
||||||
|
|------|------|----------|------|
|
||||||
|
| Air724_Message_Queue | 20 | 512 | 4G接收数据 |
|
||||||
|
| RS485_Message_Queue | 5 | 256 | RS485接收数据 |
|
||||||
|
| UDP_Message_Queue | 20 | sizeof(UdpMsg_t) | UDP接收数据 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 日志格式
|
||||||
|
|
||||||
|
```
|
||||||
|
[YKC Router] frame=0x02 │ stake=1 │ 登录认证应答 ← 4G下行路由
|
||||||
|
[ UDP 接收路由 ] 指令: realtime data │ 桩ID: 1 │ 实时数据 ← 南向UDP
|
||||||
|
[ UDP 路由拦截 ] 桩ID: 2 未上电,忽略指令: heartbeat ← 上电过滤
|
||||||
|
[ 北向 ] 对电桩 1 发送登录认证 ← 4G上行
|
||||||
|
[ 北向 ] 对电桩 1 枪 1 上传交易记录(0x3B),电量:0.00,金额:0.00 ← 4G上行
|
||||||
|
[ 4G ] 通道 1 连接成功 ← 4G链路通知
|
||||||
|
[ 上位机 ] get_status 回复已发送 ← 上位机回复
|
||||||
|
```
|
||||||
974
Doc/桩和网关通讯协议.md
Normal file
974
Doc/桩和网关通讯协议.md
Normal file
@@ -0,0 +1,974 @@
|
|||||||
|
# 充电桩与网关 UDP JSON 通讯协议
|
||||||
|
|
||||||
|
## 概述
|
||||||
|
|
||||||
|
充电桩与网关之间通过 **以太网 UDP** 通信,使用 **JSON** 格式进行数据交换。
|
||||||
|
|
||||||
|
| 项目 | 说明 |
|
||||||
|
|------|------|
|
||||||
|
| 传输层 | UDP |
|
||||||
|
| 网关端口 | 6001 |
|
||||||
|
| 桩IP范围 | 10.12.19.101 ~ 106 |
|
||||||
|
| 数据格式 | JSON |
|
||||||
|
| 编码 | UTF-8 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 通讯流程
|
||||||
|
|
||||||
|
```
|
||||||
|
充电桩上电
|
||||||
|
↓
|
||||||
|
发送 online(上电) ──────→ 网关回复 charger_id
|
||||||
|
↓
|
||||||
|
正常运行时,每 5~10 秒
|
||||||
|
发送 heartbeat(心跳) ──→ 网关回复
|
||||||
|
↓
|
||||||
|
┌─── 网关下发 start charging(启动充电)
|
||||||
|
│
|
||||||
|
充电桩周期上报实时数据 ←──── 网关可下发 end charging(停止充电)
|
||||||
|
(realtime data / charge process real / bms info real)
|
||||||
|
│
|
||||||
|
└─── 充电结束 → 上报 settlement bill(结算账单)
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 指令列表
|
||||||
|
|
||||||
|
| # | 标题 | cmd | 方向 | 触发方式 |
|
||||||
|
|---|------|-----|------|----------|
|
||||||
|
| 1 | 桩上电 | `online` | 桩 → 网关 → 桩 | 上电即发 |
|
||||||
|
| 2 | 心跳 | `heartbeat` | 桩 → 网关 → 桩 | 5~10秒周期 |
|
||||||
|
| 3 | 启动充电 | `start charging` | 网关 → 桩 → 网关 | 网关主动下发 |
|
||||||
|
| 4 | 停止充电 | `end charging` | 网关 → 桩 → 网关 | 网关主动下发 |
|
||||||
|
| 5 | 主动停止充电 | `proactive end charging` | 桩 → 网关 → 桩 | 桩主动上报 |
|
||||||
|
| 6 | 实时数据上报 | `realtime data` | 桩 → 网关 → 桩 | 周期上送 |
|
||||||
|
| 7 | BMS信息上报 | `bms info` | 桩 → 网关 → 桩 | 桩主动上报 |
|
||||||
|
| 8 | 充电参数配置 | `charge config` | 桩 → 网关 → 桩 | 桩主动上报 |
|
||||||
|
| 9 | 充电错误报文 | `charge error` | 桩 → 网关 → 桩 | 桩主动上报 |
|
||||||
|
| 10 | BMS中止充电 | `bms stop` | 桩 → 网关 → 桩 | 桩主动上报 |
|
||||||
|
| 11 | 充电机中止充电 | `charger stop` | 桩 → 网关 → 桩 | 桩主动上报 |
|
||||||
|
| 12 | 充电过程BMS需求与输出 | `charge process real` | 桩 → 网关 → 桩 | 15秒周期 |
|
||||||
|
| 13 | 充电过程BMS信息 | `bms info real` | 桩 → 网关 → 桩 | 15秒周期 |
|
||||||
|
| 14 | 结算账单上传 | `settlement bill` | 桩 → 网关 → 桩 | 桩主动上报 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 通用字段说明
|
||||||
|
|
||||||
|
所有 JSON 消息均包含以下固定字段:
|
||||||
|
|
||||||
|
| 字段 | 类型 | 说明 |
|
||||||
|
|------|------|------|
|
||||||
|
| `id` | Number | 桩编码 (1~6) |
|
||||||
|
| `cmd` | String | 指令标识,见指令列表 |
|
||||||
|
| `type` | String | `"request"` 请求帧 / `"response"` 回复帧 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. 桩上电
|
||||||
|
|
||||||
|
> **方向**:充电桩 → 网关 → 充电桩
|
||||||
|
|
||||||
|
充电桩上电后立即发送,网关回复桩的唯一ID。
|
||||||
|
|
||||||
|
**Request (充电桩 → 网关):**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"cmd": "online",
|
||||||
|
"type": "request"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
| 字段 | 类型 | 必填 | 说明 |
|
||||||
|
|------|------|------|------|
|
||||||
|
| id | Number | 是 | 桩编码 |
|
||||||
|
| cmd | String | 是 | "online" |
|
||||||
|
| type | String | 是 | "request" |
|
||||||
|
|
||||||
|
**Response (网关 → 充电桩):**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"cmd": "online",
|
||||||
|
"charger_id": "32010203040506",
|
||||||
|
"type": "response"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
| 字段 | 类型 | 必填 | 说明 |
|
||||||
|
|------|------|------|------|
|
||||||
|
| id | Number | 是 | 桩编码 |
|
||||||
|
| cmd | String | 是 | "online" |
|
||||||
|
| charger_id | String | 是 | 桩唯一ID |
|
||||||
|
| type | String | 是 | "response" |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. 心跳
|
||||||
|
|
||||||
|
> **方向**:充电桩 → 网关 → 充电桩
|
||||||
|
> **周期**:5~10 秒
|
||||||
|
|
||||||
|
桩定期上报各枪实时状态。
|
||||||
|
|
||||||
|
**Request (充电桩 → 网关):**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"cmd": "heartbeat",
|
||||||
|
"gun": [
|
||||||
|
{ "id": 1, "state": 0 },
|
||||||
|
{ "id": 2, "state": 0 }
|
||||||
|
],
|
||||||
|
"type": "request"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
| 字段 | 类型 | 必填 | 说明 |
|
||||||
|
|------|------|------|------|
|
||||||
|
| id | Number | 是 | 桩编码 (1~6) |
|
||||||
|
| cmd | String | 是 | "heartbeat" |
|
||||||
|
| gun | Array | 是 | 枪口列表 |
|
||||||
|
| gun[].id | Number | 是 | 枪编号 (1~N) |
|
||||||
|
| gun[].state | Number | 是 | 枪状态:0 离线;1 故障;2 空闲;3 充电 |
|
||||||
|
| type | String | 是 | "request" |
|
||||||
|
|
||||||
|
**Response (网关 → 充电桩):**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"cmd": "heartbeat",
|
||||||
|
"gun_id": 1,
|
||||||
|
"type": "response"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
| 字段 | 类型 | 必填 | 说明 |
|
||||||
|
|------|------|------|------|
|
||||||
|
| id | Number | 是 | 桩编码 (1~6) |
|
||||||
|
| cmd | String | 是 | "heartbeat" |
|
||||||
|
| gun_id | Number | 是 | 枪编号 (1~N) |
|
||||||
|
| type | String | 是 | "response" |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. 启动充电
|
||||||
|
|
||||||
|
> **方向**:网关 → 充电桩 → 网关
|
||||||
|
|
||||||
|
网关向充电桩下发启动充电指令,同步下发**计费模型**。
|
||||||
|
|
||||||
|
**Request (网关 → 充电桩):**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"cmd": "start charging",
|
||||||
|
"transaction_id": "32010200000000111511161555350260",
|
||||||
|
"gun_id": 1,
|
||||||
|
"fee": [
|
||||||
|
[1, 0, 6, 0.3, 0.5],
|
||||||
|
[2, 6, 10, 0.8, 0.8],
|
||||||
|
[3, 10, 15, 1.2, 0.8],
|
||||||
|
[4, 15, 24, 0.6, 0.6]
|
||||||
|
],
|
||||||
|
"limit_amount": 0,
|
||||||
|
"type": "request"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
| 字段 | 类型 | 必填 | 说明 |
|
||||||
|
|------|------|------|------|
|
||||||
|
| id | Number | 是 | 桩编码 (1~6) |
|
||||||
|
| cmd | String | 是 | "start charging" |
|
||||||
|
| transaction_id | String | 是 | 订单编码 32位 |
|
||||||
|
| gun_id | Number | 是 | 枪编码 (1~N) |
|
||||||
|
| fee | Array | 是 | 计费模型数组,每行:[计费段, 开始时间, 结束时间, 电费, 服务费] |
|
||||||
|
| limit_amount | Float | 是 | 停止金额(元)。0 为不限制 |
|
||||||
|
| type | String | 是 | "request" |
|
||||||
|
|
||||||
|
**fee 数组格式:**
|
||||||
|
|
||||||
|
每行固定5个元素:
|
||||||
|
```
|
||||||
|
[计费段, 开始时间(小时), 结束时间(小时), 电费单价, 服务费单价]
|
||||||
|
```
|
||||||
|
|
||||||
|
| 计费段 | 含义 |
|
||||||
|
|--------|------|
|
||||||
|
| 1 | 尖 |
|
||||||
|
| 2 | 峰 |
|
||||||
|
| 3 | 平 |
|
||||||
|
| 4 | 谷 |
|
||||||
|
|
||||||
|
**Response (充电桩 → 网关):**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"cmd": "start charging",
|
||||||
|
"transaction_id": "32010200000000111511161555350260",
|
||||||
|
"gun_id": 1,
|
||||||
|
"result": 0,
|
||||||
|
"error_code": 0,
|
||||||
|
"type": "response"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
| 字段 | 类型 | 必填 | 说明 |
|
||||||
|
|------|------|------|------|
|
||||||
|
| id | Number | 是 | 桩编码 (1~6) |
|
||||||
|
| cmd | String | 是 | "start charging" |
|
||||||
|
| transaction_id | String | 是 | 订单编码 32位 |
|
||||||
|
| gun_id | Number | 是 | 枪编码 (1~N) |
|
||||||
|
| result | Number | 是 | 启动结果:0=失败;1=成功 |
|
||||||
|
| error_code | Number | 是 | 错误码:0=无;1=设备编号不匹配;2=枪已在充电;3=设备故障;4=设备离线;5=未插枪 |
|
||||||
|
| type | String | 是 | "response" |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. 停止充电
|
||||||
|
|
||||||
|
> **方向**:网关 → 充电桩 → 网关
|
||||||
|
|
||||||
|
**Request (网关 → 充电桩):**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"cmd": "end charging",
|
||||||
|
"transaction_id": "32010200000000111511161555350260",
|
||||||
|
"gun_id": 1,
|
||||||
|
"type": "request"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
| 字段 | 类型 | 必填 | 说明 |
|
||||||
|
|------|------|------|------|
|
||||||
|
| id | Number | 是 | 桩编码 (1~6) |
|
||||||
|
| cmd | String | 是 | "end charging" |
|
||||||
|
| transaction_id | String | 是 | 订单编码 32位 |
|
||||||
|
| gun_id | Number | 是 | 枪编码 (1~N) |
|
||||||
|
| type | String | 是 | "request" |
|
||||||
|
|
||||||
|
**Response (充电桩 → 网关):**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"cmd": "end charging",
|
||||||
|
"transaction_id": "32010200000000111511161555350260",
|
||||||
|
"gun_id": 1,
|
||||||
|
"result": 0,
|
||||||
|
"error_code": 0,
|
||||||
|
"type": "response"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
| 字段 | 类型 | 必填 | 说明 |
|
||||||
|
|------|------|------|------|
|
||||||
|
| id | Number | 是 | 桩编码 (1~6) |
|
||||||
|
| cmd | String | 是 | "end charging" |
|
||||||
|
| transaction_id | String | 是 | 订单编码 32位 |
|
||||||
|
| gun_id | Number | 是 | 枪编码 (1~N) |
|
||||||
|
| result | Number | 是 | 停止结果:0 失败;1 成功 |
|
||||||
|
| error_code | Number | 是 | 错误码:0 无;1 枪未在充电;2 其他故障 |
|
||||||
|
| type | String | 是 | "response" |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. 主动停止充电
|
||||||
|
|
||||||
|
> **方向**:充电桩 → 网关 → 充电桩
|
||||||
|
|
||||||
|
充电桩主动上报停止充电(如用户刷卡停止、车辆BMS中止等)。
|
||||||
|
|
||||||
|
**Request (充电桩 → 网关):**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"cmd": "proactive end charging",
|
||||||
|
"transaction_id": "32010200000000111511161555350260",
|
||||||
|
"gun_id": 1,
|
||||||
|
"type": "request"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
| 字段 | 类型 | 必填 | 说明 |
|
||||||
|
|------|------|------|------|
|
||||||
|
| id | Number | 是 | 桩编码 (1~6) |
|
||||||
|
| cmd | String | 是 | "proactive end charging" |
|
||||||
|
| transaction_id | String | 是 | 订单编码 32位 |
|
||||||
|
| gun_id | Number | 是 | 枪编码 (1~N) |
|
||||||
|
| type | String | 是 | "request" |
|
||||||
|
|
||||||
|
**Response (网关 → 充电桩):**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"cmd": "proactive end charging",
|
||||||
|
"transaction_id": "32010200000000111511161555350260",
|
||||||
|
"gun_id": 1,
|
||||||
|
"type": "response"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
| 字段 | 类型 | 必填 | 说明 |
|
||||||
|
|------|------|------|------|
|
||||||
|
| id | Number | 是 | 桩编码 (1~6) |
|
||||||
|
| cmd | String | 是 | "end charging" |
|
||||||
|
| transaction_id | String | 是 | 订单编码 32位 |
|
||||||
|
| gun_id | Number | 是 | 枪编码 (1~N) |
|
||||||
|
| type | String | 是 | "response" |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. 充电桩实时数据上报
|
||||||
|
|
||||||
|
> **方向**:充电桩 → 网关 → 充电桩
|
||||||
|
> **周期**:待机 5 分钟、充电 15 秒
|
||||||
|
|
||||||
|
**Request (充电桩 → 网关):**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"cmd": "realtime data",
|
||||||
|
"transaction_id": "32010200000000111511161555350260",
|
||||||
|
"gun_id": 1,
|
||||||
|
"state": 0,
|
||||||
|
"gun_back": 0,
|
||||||
|
"gun_insert": 1,
|
||||||
|
"voltage": 2222,
|
||||||
|
"current": 2222,
|
||||||
|
"cable_temp": 85,
|
||||||
|
"cable_code": "1234567890123456",
|
||||||
|
"soc": 85,
|
||||||
|
"battery_temp": 95,
|
||||||
|
"charge_time": 45,
|
||||||
|
"remain_time": 30,
|
||||||
|
"charge_kwh": 12.3456,
|
||||||
|
"loss_kwh": 12.4567,
|
||||||
|
"charge_amount": 18.6851,
|
||||||
|
"fault": 0,
|
||||||
|
"type": "request"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
| 字段 | 类型 | 必填 | 说明 |
|
||||||
|
|------|------|------|------|
|
||||||
|
| id | Number | 是 | 桩编码 (1~6) |
|
||||||
|
| cmd | String | 是 | "realtime data" |
|
||||||
|
| transaction_id | String | 是 | 交易流水号 32位,待机时填充0 |
|
||||||
|
| gun_id | Number | 是 | 枪编号 (1~N) |
|
||||||
|
| state | Number | 是 | 枪状态:0 离线;1 故障;2 空闲;3 充电 |
|
||||||
|
| gun_back | Number | 是 | 枪是否归位:0 否;1 是;2 未知 |
|
||||||
|
| gun_insert | Number | 是 | 是否插枪:0 否;1 是 |
|
||||||
|
| voltage | Float | 是 | 输出电压,单位0.1V。待机时为0 |
|
||||||
|
| current | Float | 是 | 输出电流,单位0.1A。待机时为0 |
|
||||||
|
| cable_temp | Number | 是 | 枪线温度,单位℃,偏移量-50。待机时为0 |
|
||||||
|
| cable_code | String | 是 | 枪线编码 16位,没有时填充0 |
|
||||||
|
| soc | Number | 是 | 电池SOC百分比 0~100,待机/交流桩为0 |
|
||||||
|
| battery_temp | Number | 是 | 电池组最高温度,单位℃,偏移量-50。待机/交流桩为0 |
|
||||||
|
| charge_time | Number | 是 | 累计充电时间,单位分钟。待机时为0 |
|
||||||
|
| remain_time | Number | 是 | 剩余时间,单位分钟。待机/交流桩为0 |
|
||||||
|
| charge_kwh | Float | 是 | 充电度数(kWh),精确到小数点后4位。待机时为0 |
|
||||||
|
| loss_kwh | Float | 是 | 计损充电度数(kWh)。未设置计损比例时等于charge_kwh |
|
||||||
|
| charge_amount | Float | 是 | 已充金额(元),精确到小数点后4位 |
|
||||||
|
| fault | Number | 是 | 硬件故障位图(16bit),见下方说明 |
|
||||||
|
| type | String | 是 | "request" |
|
||||||
|
|
||||||
|
**fault 故障位图:**
|
||||||
|
|
||||||
|
| Bit | 故障 |
|
||||||
|
|-----|------|
|
||||||
|
| 1 | 急停 |
|
||||||
|
| 2 | 无模块 |
|
||||||
|
| 3 | 温度高 |
|
||||||
|
| 4 | 防雷故障 |
|
||||||
|
| 5 | DC20中断 |
|
||||||
|
| 6 | FC08中断 |
|
||||||
|
| 7 | 电表中断 |
|
||||||
|
| 8 | 读卡器中断 |
|
||||||
|
| 9 | RC10中断 |
|
||||||
|
| 10 | 风扇故障 |
|
||||||
|
| 11 | 熔断器故障 |
|
||||||
|
| 12 | 接触器故障 |
|
||||||
|
| 13 | 门打开 |
|
||||||
|
|
||||||
|
**Response (网关 → 充电桩):**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"cmd": "realtime data",
|
||||||
|
"transaction_id": "32010200000000111511161555350260",
|
||||||
|
"gun_id": 1,
|
||||||
|
"type": "response"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
| 字段 | 类型 | 必填 | 说明 |
|
||||||
|
|------|------|------|------|
|
||||||
|
| id | Number | 是 | 桩编码 (1~6) |
|
||||||
|
| cmd | String | 是 | "realtime data" |
|
||||||
|
| transaction_id | String | 是 | 交易流水号 32位 |
|
||||||
|
| gun_id | Number | 是 | 枪编号 (1~N) |
|
||||||
|
| type | String | 是 | "response" |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7. BMS信息上报
|
||||||
|
|
||||||
|
> **方向**:充电桩 → 网关 → 充电桩
|
||||||
|
|
||||||
|
**Request (充电桩 → 网关):**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"cmd": "bms info",
|
||||||
|
"transaction_id": "32010200000000111511161555350260",
|
||||||
|
"gun_id": 1,
|
||||||
|
"protocol_version": "0001.01",
|
||||||
|
"battery_type": 3,
|
||||||
|
"rated_capacity": 600.0,
|
||||||
|
"rated_voltage": 3600.0,
|
||||||
|
"manufacturer": "CATL",
|
||||||
|
"battery_sn": "BT123456",
|
||||||
|
"production_year": 2023,
|
||||||
|
"production_month": 6,
|
||||||
|
"production_day": 15,
|
||||||
|
"charge_count": 1250,
|
||||||
|
"ownership": 1,
|
||||||
|
"reserved": 0,
|
||||||
|
"vin": "LSVAA4182E2123456",
|
||||||
|
"software_version": "FFFFFF.07DF.0B.0A.10",
|
||||||
|
"type": "request"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
| 字段 | 类型 | 必填 | 说明 |
|
||||||
|
|------|------|------|------|
|
||||||
|
| id | Number | 是 | 桩编码 (1~6) |
|
||||||
|
| cmd | String | 是 | "bms info" |
|
||||||
|
| transaction_id | String | 是 | 交易流水号 32位 |
|
||||||
|
| gun_id | Number | 是 | 枪编号 (1~N) |
|
||||||
|
| protocol_version | String | 是 | BMS通信协议版本号。格式:`byte3.byte2-byte1`,例:"0001.01"=V1.1 |
|
||||||
|
| battery_type | Number | 是 | 电池类型:1铅酸;2氢电池;3磷酸铁锂;4锰酸锂;5钴酸锂;6三元材料;7聚合物锂离子;8钛酸锂;255其他 |
|
||||||
|
| rated_capacity | Float | 是 | 额定容量,单位0.1Ah。例:600.0=60.0Ah |
|
||||||
|
| rated_voltage | Float | 是 | 额定总电压,单位0.1V。例:3600.0=360.0V |
|
||||||
|
| manufacturer | String | 是 | 电池生产厂商名称,最长4字节 |
|
||||||
|
| battery_sn | String | 是 | 电池组序号,最长4字节 |
|
||||||
|
| production_year | Number | 是 | 生产年份,1985偏移量。例:2023=1985+38 |
|
||||||
|
| production_month | Number | 是 | 生产月份,1~12 |
|
||||||
|
| production_day | Number | 是 | 生产日,1~31 |
|
||||||
|
| charge_count | Number | 是 | 电池组充电次数,0次偏移量 |
|
||||||
|
| ownership | Number | 是 | 电池产权标识:0租赁;1车自有 |
|
||||||
|
| reserved | Number | 是 | 预留位 |
|
||||||
|
| vin | String | 是 | 车辆识别码VIN,17位字符 |
|
||||||
|
| software_version | String | 是 | BMS软件版本号。格式:`byte8.byte7-byte5.byte4-byte3-byte2-byte1` |
|
||||||
|
| type | String | 是 | "request" |
|
||||||
|
|
||||||
|
**Response (网关 → 充电桩):**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"cmd": "bms info",
|
||||||
|
"gun_id": 1,
|
||||||
|
"type": "response"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 8. 充电参数配置
|
||||||
|
|
||||||
|
> **方向**:充电桩 → 网关 → 充电桩
|
||||||
|
> **依据**:GBT-27930 充电桩与BMS参数配置阶段报文
|
||||||
|
|
||||||
|
**Request (充电桩 → 网关):**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"cmd": "charge config",
|
||||||
|
"transaction_id": "32010200000000111511161555350260",
|
||||||
|
"gun_id": 1,
|
||||||
|
"bms_max_cell_voltage": 4.20,
|
||||||
|
"bms_max_current": 250.0,
|
||||||
|
"bms_rated_energy": 60.0,
|
||||||
|
"bms_max_voltage": 750.0,
|
||||||
|
"bms_max_temp": 95,
|
||||||
|
"bms_soc": 85.0,
|
||||||
|
"bms_current_voltage": 680.0,
|
||||||
|
"pile_max_voltage": 750.0,
|
||||||
|
"pile_min_voltage": 200.0,
|
||||||
|
"pile_max_current": 250.0,
|
||||||
|
"pile_min_current": 10.0,
|
||||||
|
"type": "request"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
| 字段 | 类型 | 必填 | 说明 |
|
||||||
|
|------|------|------|------|
|
||||||
|
| id | Number | 是 | 桩编码 (1~6) |
|
||||||
|
| cmd | String | 是 | "charge config" |
|
||||||
|
| transaction_id | String | 是 | 交易流水号 32位 |
|
||||||
|
| gun_id | Number | 是 | 枪编号 (1~N) |
|
||||||
|
| bms_max_cell_voltage | Float | 是 | BMS单体最高允许充电电压,单位0.01V,范围0~24V |
|
||||||
|
| bms_max_current | Float | 是 | BMS最高允许充电电流,单位0.1A,-400A偏移量 |
|
||||||
|
| bms_rated_energy | Float | 是 | BMS标称总能量,单位0.1kWh,范围0~1000kWh |
|
||||||
|
| bms_max_voltage | Float | 是 | BMS最高允许充电总电压,单位0.1V |
|
||||||
|
| bms_max_temp | Number | 是 | BMS最高允许温度,单位℃,-50℃偏移量,范围-50~200℃ |
|
||||||
|
| bms_soc | Float | 是 | BMS荷电状态SOC,单位0.1%,范围0~100% |
|
||||||
|
| bms_current_voltage | Float | 是 | BMS当前电池电压,单位0.1V |
|
||||||
|
| pile_max_voltage | Float | 是 | 电桩最高输出电压,单位0.1V |
|
||||||
|
| pile_min_voltage | Float | 是 | 电桩最低输出电压,单位0.1V |
|
||||||
|
| pile_max_current | Float | 是 | 电桩最大输出电流,单位0.1A,-400A偏移量 |
|
||||||
|
| pile_min_current | Float | 是 | 电桩最小输出电流,单位0.1A,-400A偏移量 |
|
||||||
|
| type | String | 是 | "request" |
|
||||||
|
|
||||||
|
**Response (网关 → 充电桩):**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"cmd": "charge config",
|
||||||
|
"gun_id": 1,
|
||||||
|
"type": "response"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 9. 充电错误报文
|
||||||
|
|
||||||
|
> **方向**:充电桩 → 网关 → 充电桩
|
||||||
|
> **依据**:GBT-27930 充电桩与BMS充电错误报文
|
||||||
|
|
||||||
|
**Request (充电桩 → 网关):**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"cmd": "charge error",
|
||||||
|
"transaction_id": "32010200000000111511161555350260",
|
||||||
|
"gun_id": 1,
|
||||||
|
"charger_spn2560_00_timeout": 0,
|
||||||
|
"charger_spn2560_aa_timeout": 0,
|
||||||
|
"charger_time_sync_timeout": 0,
|
||||||
|
"charger_ready_timeout": 0,
|
||||||
|
"charger_status_timeout": 0,
|
||||||
|
"charger_stop_timeout": 0,
|
||||||
|
"charger_statistics_timeout": 0,
|
||||||
|
"bms_identify_timeout": 0,
|
||||||
|
"battery_param_timeout": 0,
|
||||||
|
"bms_ready_timeout": 0,
|
||||||
|
"battery_status_timeout": 0,
|
||||||
|
"battery_demand_timeout": 0,
|
||||||
|
"bms_stop_timeout": 0,
|
||||||
|
"bms_statistics_timeout": 0,
|
||||||
|
"type": "request"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
所有超时字段取值:0=正常;1=超时;2=不可信状态
|
||||||
|
|
||||||
|
| 字段 | 说明 |
|
||||||
|
|------|------|
|
||||||
|
| charger_spn2560_00_timeout | 接收SPN2560=0x00的充电机辨识报文超时 |
|
||||||
|
| charger_spn2560_aa_timeout | 接收SPN2560=0xAA的充电机辨识报文超时 |
|
||||||
|
| charger_time_sync_timeout | 接收时间同步和充电机最大输出能力报文超时 |
|
||||||
|
| charger_ready_timeout | 接收充电机完成充电准备报文超时 |
|
||||||
|
| charger_status_timeout | 接收充电机充电状态报文超时 |
|
||||||
|
| charger_stop_timeout | 接收充电机中止充电报文超时 |
|
||||||
|
| charger_statistics_timeout | 接收充电机充电统计报文超时 |
|
||||||
|
| bms_identify_timeout | 接收BMS和车辆的辨识报文超时 |
|
||||||
|
| battery_param_timeout | 接收电池充电参数报文超时 |
|
||||||
|
| bms_ready_timeout | 接收BMS完成充电准备报文超时 |
|
||||||
|
| battery_status_timeout | 接收电池充电总状态报文超时 |
|
||||||
|
| battery_demand_timeout | 接收电池充电要求报文超时 |
|
||||||
|
| bms_stop_timeout | 接收BMS中止充电报文超时 |
|
||||||
|
| bms_statistics_timeout | 接收BMS充电统计报文超时 |
|
||||||
|
|
||||||
|
**Response (网关 → 充电桩):**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"cmd": "charge error",
|
||||||
|
"gun_id": 1,
|
||||||
|
"type": "response"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 10. BMS中止充电
|
||||||
|
|
||||||
|
> **方向**:充电桩 → 网关 → 充电桩
|
||||||
|
> **依据**:GBT-27930 充电桩与BMS充电阶段BMS中止报文
|
||||||
|
|
||||||
|
**Request (充电桩 → 网关):**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"cmd": "bms stop",
|
||||||
|
"transaction_id": "32010200000000111511161555350260",
|
||||||
|
"gun_id": 1,
|
||||||
|
"stop_reason_soc": 0,
|
||||||
|
"stop_reason_total_voltage": 0,
|
||||||
|
"stop_reason_cell_voltage": 0,
|
||||||
|
"stop_reason_charger": 0,
|
||||||
|
"fault_insulation": 0,
|
||||||
|
"fault_connector_temp": 0,
|
||||||
|
"fault_bms_temp": 0,
|
||||||
|
"fault_connector": 0,
|
||||||
|
"fault_battery_temp": 0,
|
||||||
|
"fault_relay": 0,
|
||||||
|
"fault_voltage_detect": 0,
|
||||||
|
"fault_other": 0,
|
||||||
|
"error_current": 0,
|
||||||
|
"error_voltage": 0,
|
||||||
|
"type": "request"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
所有字段取值:0=正常;1=中止/异常
|
||||||
|
|
||||||
|
| 字段 | 说明 |
|
||||||
|
|------|------|
|
||||||
|
| stop_reason_soc | 达到SOC目标值中止 |
|
||||||
|
| stop_reason_total_voltage | 达到总电压设定值中止 |
|
||||||
|
| stop_reason_cell_voltage | 达到单体电压设定值中止 |
|
||||||
|
| stop_reason_charger | 充电机主动中止 |
|
||||||
|
| fault_insulation | 绝缘故障 |
|
||||||
|
| fault_connector_temp | 输出连接器过温 |
|
||||||
|
| fault_bms_temp | BMS元件过温 |
|
||||||
|
| fault_connector | 充电连接器故障 |
|
||||||
|
| fault_battery_temp | 电池组温度过高 |
|
||||||
|
| fault_relay | 高压继电器故障 |
|
||||||
|
| fault_voltage_detect | 检测点2电压检测故障 |
|
||||||
|
| fault_other | 其他故障 |
|
||||||
|
| error_current | 电流过大 |
|
||||||
|
| error_voltage | 电压异常 |
|
||||||
|
|
||||||
|
**Response (网关 → 充电桩):**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"cmd": "bms stop",
|
||||||
|
"gun_id": 1,
|
||||||
|
"type": "response"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 11. 充电机中止充电
|
||||||
|
|
||||||
|
> **方向**:充电桩 → 网关 → 充电桩
|
||||||
|
> **依据**:GBT-27930 充电桩与BMS充电阶段充电机中止报文
|
||||||
|
|
||||||
|
**Request (充电桩 → 网关):**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"cmd": "charger stop",
|
||||||
|
"transaction_id": "32010200000000111511161555350260",
|
||||||
|
"gun_id": 1,
|
||||||
|
"stop_reason_condition": 0,
|
||||||
|
"stop_reason_manual": 0,
|
||||||
|
"stop_reason_abnormal": 0,
|
||||||
|
"stop_reason_bms": 0,
|
||||||
|
"fault_charger_temp": 0,
|
||||||
|
"fault_connector": 0,
|
||||||
|
"fault_internal_temp": 0,
|
||||||
|
"fault_power_transfer": 0,
|
||||||
|
"fault_emergency": 0,
|
||||||
|
"fault_other": 0,
|
||||||
|
"error_current": 0,
|
||||||
|
"error_voltage": 0,
|
||||||
|
"type": "request"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
所有字段取值:0=正常;1=中止/异常
|
||||||
|
|
||||||
|
| 字段 | 说明 |
|
||||||
|
|------|------|
|
||||||
|
| stop_reason_condition | 达到充电机设定的条件 |
|
||||||
|
| stop_reason_manual | 人工中止 |
|
||||||
|
| stop_reason_abnormal | 异常中止 |
|
||||||
|
| stop_reason_bms | BMS主动中止 |
|
||||||
|
| fault_charger_temp | 充电机过温 |
|
||||||
|
| fault_connector | 充电连接器故障 |
|
||||||
|
| fault_internal_temp | 充电机内部过温 |
|
||||||
|
| fault_power_transfer | 所需电量不能传送 |
|
||||||
|
| fault_emergency | 充电机急停 |
|
||||||
|
| fault_other | 其他故障 |
|
||||||
|
| error_current | 电流不匹配 |
|
||||||
|
| error_voltage | 电压异常 |
|
||||||
|
|
||||||
|
**Response (网关 → 充电桩):**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"cmd": "charger stop",
|
||||||
|
"gun_id": 1,
|
||||||
|
"type": "response"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 12. 充电过程BMS需求与充电机输出
|
||||||
|
|
||||||
|
> **方向**:充电桩 → 网关 → 充电桩
|
||||||
|
> **周期**:15 秒
|
||||||
|
> **依据**:GBT-27930 充电过程BMS需求、充电机输出报文
|
||||||
|
|
||||||
|
**Request (充电桩 → 网关):**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"cmd": "charge process real",
|
||||||
|
"transaction_id": "32010200000000111511161555350260",
|
||||||
|
"gun_id": 1,
|
||||||
|
"bms_voltage_demand": 680.0,
|
||||||
|
"bms_current_demand": 250.0,
|
||||||
|
"bms_charge_mode": 2,
|
||||||
|
"bms_voltage_measure": 678.5,
|
||||||
|
"bms_current_measure": 248.0,
|
||||||
|
"bms_max_cell_voltage": 4.15,
|
||||||
|
"bms_max_cell_group": 3,
|
||||||
|
"bms_soc": 85,
|
||||||
|
"bms_remain_time": 30,
|
||||||
|
"pile_voltage_output": 680.0,
|
||||||
|
"pile_current_output": 250.0,
|
||||||
|
"charge_time": 45,
|
||||||
|
"type": "request"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
| 字段 | 类型 | 必填 | 说明 |
|
||||||
|
|------|------|------|------|
|
||||||
|
| id | Number | 是 | 桩编码 (1~6) |
|
||||||
|
| cmd | String | 是 | "charge process real" |
|
||||||
|
| transaction_id | String | 是 | 交易流水号 32位 |
|
||||||
|
| gun_id | Number | 是 | 枪编号 (1~N) |
|
||||||
|
| bms_voltage_demand | Float | 是 | BMS电压需求,单位0.1V |
|
||||||
|
| bms_current_demand | Float | 是 | BMS电流需求,单位0.1A,-400A偏移量 |
|
||||||
|
| bms_charge_mode | Number | 是 | 充电模式:1恒压;2恒流 |
|
||||||
|
| bms_voltage_measure | Float | 是 | BMS充电电压测量值,单位0.1V |
|
||||||
|
| bms_current_measure | Float | 是 | BMS充电电流测量值,单位0.1A,-400A偏移量 |
|
||||||
|
| bms_max_cell_voltage | Float | 是 | 最高单体蓄电池电压,单位0.01V,范围0~24V |
|
||||||
|
| bms_max_cell_group | Number | 是 | 最高单体电压所在组号,范围0~15 |
|
||||||
|
| bms_soc | Number | 是 | 当前SOC,单位%,范围0~100 |
|
||||||
|
| bms_remain_time | Number | 是 | 估算剩余充电时间,单位分钟,范围0~600 |
|
||||||
|
| pile_voltage_output | Float | 是 | 电桩电压输出值,单位0.1V |
|
||||||
|
| pile_current_output | Float | 是 | 电桩电流输出值,单位0.1A,-400A偏移量 |
|
||||||
|
| charge_time | Number | 是 | 累计充电时间,单位分钟,范围0~600 |
|
||||||
|
| type | String | 是 | "request" |
|
||||||
|
|
||||||
|
**Response (网关 → 充电桩):**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"cmd": "charge process real",
|
||||||
|
"gun_id": 1,
|
||||||
|
"type": "response"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 13. 充电过程BMS信息
|
||||||
|
|
||||||
|
> **方向**:充电桩 → 网关 → 充电桩
|
||||||
|
> **周期**:15 秒
|
||||||
|
> **依据**:GBT-27930 充电过程BMS信息报文
|
||||||
|
|
||||||
|
**Request (充电桩 → 网关):**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"cmd": "bms info real",
|
||||||
|
"transaction_id": "32010200000000111511161555350260",
|
||||||
|
"gun_id": 1,
|
||||||
|
"max_cell_voltage_no": 128,
|
||||||
|
"max_battery_temp": 45,
|
||||||
|
"max_temp_point_no": 8,
|
||||||
|
"min_battery_temp": 25,
|
||||||
|
"min_temp_point_no": 3,
|
||||||
|
"cell_voltage_status": 0,
|
||||||
|
"soc_status": 0,
|
||||||
|
"charge_current_status": 0,
|
||||||
|
"battery_temp_status": 0,
|
||||||
|
"insulation_status": 0,
|
||||||
|
"connector_status": 0,
|
||||||
|
"charge_enable": 1,
|
||||||
|
"type": "request"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
| 字段 | 类型 | 必填 | 说明 |
|
||||||
|
|------|------|------|------|
|
||||||
|
| id | Number | 是 | 桩编码 (1~6) |
|
||||||
|
| cmd | String | 是 | "bms info real" |
|
||||||
|
| transaction_id | String | 是 | 交易流水号 32位 |
|
||||||
|
| gun_id | Number | 是 | 枪编号 (1~N) |
|
||||||
|
| max_cell_voltage_no | Number | 是 | 最高单体电压所在编号,1偏移量,范围1~256 |
|
||||||
|
| max_battery_temp | Number | 是 | 最高电池温度,单位℃,-50℃偏移量,范围-50~200℃ |
|
||||||
|
| max_temp_point_no | Number | 是 | 最高温度检测点编号,1偏移量,范围1~128 |
|
||||||
|
| min_battery_temp | Number | 是 | 最低电池温度,单位℃,-50℃偏移量 |
|
||||||
|
| min_temp_point_no | Number | 是 | 最低温度检测点编号,1偏移量 |
|
||||||
|
| cell_voltage_status | Number | 是 | 单体电压过高/过低:0正常;1过高;2过低 |
|
||||||
|
| soc_status | Number | 是 | SOC过高/过低:0正常;1过高;2过低 |
|
||||||
|
| charge_current_status | Number | 是 | 充电过电流:0正常;1过流;2不可信 |
|
||||||
|
| battery_temp_status | Number | 是 | 电池温度过高:0正常;1过高;2不可信 |
|
||||||
|
| insulation_status | Number | 是 | 绝缘状态:0正常;1异常;2不可信 |
|
||||||
|
| connector_status | Number | 是 | 输出连接器连接状态:0正常;1异常;2不可信 |
|
||||||
|
| charge_enable | Number | 是 | 充电禁止:0禁止;1允许 |
|
||||||
|
| type | String | 是 | "request" |
|
||||||
|
|
||||||
|
**Response (网关 → 充电桩):**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"cmd": "bms info real",
|
||||||
|
"gun_id": 1,
|
||||||
|
"type": "response"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 14. 结算账单上传
|
||||||
|
|
||||||
|
> **方向**:充电桩 → 网关 → 充电桩
|
||||||
|
|
||||||
|
充电结束生成结算账单上传。若未收到响应,间隔30秒重试一次,最多重试3次。收到成功响应后,充电桩本地删除该账单。
|
||||||
|
|
||||||
|
**Request (充电桩 → 网关):**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"cmd": "settlement bill",
|
||||||
|
"transaction_id": "55031412782305012018061910262392",
|
||||||
|
"gun_id": 1,
|
||||||
|
"start_time": 1584349487,
|
||||||
|
"end_time": 1584349487,
|
||||||
|
"billing": [
|
||||||
|
[1.30000, 0.0000, 0.0000, 0.0000],
|
||||||
|
[1.30000, 0.0000, 0.0000, 0.0000],
|
||||||
|
[1.30000, 0.0000, 0.0000, 0.0000],
|
||||||
|
[1.30000, 0.0000, 0.0000, 0.0000]
|
||||||
|
],
|
||||||
|
"meter_start": 0.0000,
|
||||||
|
"meter_end": 0.0000,
|
||||||
|
"total_energy": 0.0000,
|
||||||
|
"total_energy_loss": 0.0000,
|
||||||
|
"total_amount": 0.0000,
|
||||||
|
"vin": "",
|
||||||
|
"trade_type": 2,
|
||||||
|
"trade_time": 1584349487,
|
||||||
|
"stop_reason": 0,
|
||||||
|
"card_physical_id": "D14B0A54",
|
||||||
|
"type": "request"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
| 字段 | 类型 | 必填 | 说明 |
|
||||||
|
|------|------|------|------|
|
||||||
|
| id | Number | 是 | 桩编码 (1~6) |
|
||||||
|
| cmd | String | 是 | "settlement bill" |
|
||||||
|
| transaction_id | String | 是 | 交易流水号 32位 |
|
||||||
|
| gun_id | Number | 是 | 枪编号 (1~N) |
|
||||||
|
| start_time | Number | 是 | 充电开始时间,Unix时间戳(秒) |
|
||||||
|
| end_time | Number | 是 | 充电结束时间,Unix时间戳(秒) |
|
||||||
|
| billing | Array | 是 | 尖峰平谷计费数组,4行,顺序:[尖,峰,平,谷],每行:[单价(.5f), 电量(.4f), 计损电量(.4f), 金额(.4f)] |
|
||||||
|
| meter_start | Float | 是 | 电表总起值(kWh),四位小数 |
|
||||||
|
| meter_end | Float | 是 | 电表总止值(kWh),四位小数 |
|
||||||
|
| total_energy | Float | 是 | 总电量(kWh),四位小数 |
|
||||||
|
| total_energy_loss | Float | 是 | 计损总电量(kWh),四位小数 |
|
||||||
|
| total_amount | Float | 是 | 消费金额(元),含电费和服务费,四位小数 |
|
||||||
|
| vin | String | 是 | 电动汽车VIN码,17位ASCII |
|
||||||
|
| trade_type | Number | 是 | 交易标识:1=app启动;2=卡启动;4=离线卡启动;5=VIN码启动 |
|
||||||
|
| trade_time | Number | 是 | 交易时间,Unix时间戳(秒) |
|
||||||
|
| stop_reason | Number | 是 | 停止原因,见云快充附录13.1 |
|
||||||
|
| card_physical_id | String | 是 | 物理卡号,默认为空 |
|
||||||
|
| type | String | 是 | "request" |
|
||||||
|
|
||||||
|
**billing 数组格式:**
|
||||||
|
|
||||||
|
```
|
||||||
|
[尖, 峰, 平, 谷] ← 4行,固定顺序
|
||||||
|
│
|
||||||
|
└─ [单价(.5f), 电量(.4f), 计损电量(.4f), 金额(.4f)]
|
||||||
|
```
|
||||||
|
|
||||||
|
**Response (网关 → 充电桩):**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"cmd": "settlement bill",
|
||||||
|
"transaction_id": "55031412782305012018061910262392",
|
||||||
|
"gun_id": 1,
|
||||||
|
"result": 1,
|
||||||
|
"type": "response"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
| 字段 | 类型 | 必填 | 说明 |
|
||||||
|
|------|------|------|------|
|
||||||
|
| id | Number | 是 | 桩编码 (1~6) |
|
||||||
|
| cmd | String | 是 | "settlement bill" |
|
||||||
|
| transaction_id | String | 是 | 交易流水号 32位 |
|
||||||
|
| gun_id | Number | 是 | 枪编号 (1~N) |
|
||||||
|
| result | Number | 是 | 账单上传结果:1=成功;0=失败 |
|
||||||
|
| type | String | 是 | "response" |
|
||||||
|
|
||||||
|
> **重试机制**:若未收到响应,间隔30秒重试一次,最多重试3次。收到成功响应后,本账单在充电桩本地删除。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 附录:协议汇总表
|
||||||
|
|
||||||
|
| 编号 | cmd | 请求方 | 响应方 | 触发方式 |
|
||||||
|
|------|-----|--------|--------|----------|
|
||||||
|
| 1 | online | 充电桩 | 网关 | 上电 |
|
||||||
|
| 2 | heartbeat | 充电桩 | 网关 | 5~10s周期 |
|
||||||
|
| 3 | start charging | 网关 | 充电桩 | 网关下发 |
|
||||||
|
| 4 | end charging | 网关 | 充电桩 | 网关下发 |
|
||||||
|
| 5 | proactive end charging | 充电桩 | 网关 | 桩主动 |
|
||||||
|
| 6 | realtime data | 充电桩 | 网关 | 周期上送 |
|
||||||
|
| 7 | bms info | 充电桩 | 网关 | 桩主动 |
|
||||||
|
| 8 | charge config | 充电桩 | 网关 | 桩主动 |
|
||||||
|
| 9 | charge error | 充电桩 | 网关 | 桩主动 |
|
||||||
|
| 10 | bms stop | 充电桩 | 网关 | 桩主动 |
|
||||||
|
| 11 | charger stop | 充电桩 | 网关 | 桩主动 |
|
||||||
|
| 12 | charge process real | 充电桩 | 网关 | 15s周期 |
|
||||||
|
| 13 | bms info real | 充电桩 | 网关 | 15s周期 |
|
||||||
|
| 14 | settlement bill | 充电桩 | 网关 | 充电结束 |
|
||||||
1
上位机/YKC/.vs/YKC.csproj.dtbcache.json
Normal file
1
上位机/YKC/.vs/YKC.csproj.dtbcache.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"RootPath":"C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC","ProjectFileName":"YKC.csproj","Configuration":"Debug|AnyCPU","FrameworkPath":"","Sources":[{"SourceFile":"App.xaml.cs"},{"SourceFile":"MainWindow.xaml.cs"},{"SourceFile":"Properties\\AssemblyInfo.cs"},{"SourceFile":"Properties\\Resources.Designer.cs"},{"SourceFile":"Properties\\Settings.Designer.cs"},{"SourceFile":"obj\\Debug\\.NETFramework,Version=v4.7.2.AssemblyAttributes.cs"},{"SourceFile":"C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\obj\\Debug\\MainWindow.g.cs"},{"SourceFile":"C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\obj\\Debug\\App.g.cs"}],"References":[{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\Microsoft.CSharp.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\mscorlib.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\PresentationCore.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\PresentationFramework.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Core.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Data.DataSetExtensions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Data.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Net.Http.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Xaml.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Xml.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Xml.Linq.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\WindowsBase.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""}],"Analyzers":[],"Outputs":[{"OutputItemFullPath":"C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\bin\\Debug\\YKC.exe","OutputItemRelativePath":"YKC.exe"},{"OutputItemFullPath":"","OutputItemRelativePath":""}],"CopyToOutputEntries":[]}
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
上位机/YKC/.vs/YKC.slnx/v18/.suo
Normal file
BIN
上位机/YKC/.vs/YKC.slnx/v18/.suo
Normal file
Binary file not shown.
228
上位机/YKC/.vs/YKC.slnx/v18/DocumentLayout.backup.json
Normal file
228
上位机/YKC/.vs/YKC.slnx/v18/DocumentLayout.backup.json
Normal file
@@ -0,0 +1,228 @@
|
|||||||
|
{
|
||||||
|
"Version": 1,
|
||||||
|
"WorkspaceRootPath": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\",
|
||||||
|
"Documents": [
|
||||||
|
{
|
||||||
|
"AbsoluteMoniker": "D:0:0:{9F34DD1F-FB6D-4E13-9270-13C7A9A87AAA}|YKC.csproj|c:\\users\\administrator\\pycharmprojects\\pythonproject\\c#\\ykc\\pages\\realtimepage.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}",
|
||||||
|
"RelativeMoniker": "D:0:0:{9F34DD1F-FB6D-4E13-9270-13C7A9A87AAA}|YKC.csproj|solutionrelative:pages\\realtimepage.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AbsoluteMoniker": "D:0:0:{9F34DD1F-FB6D-4E13-9270-13C7A9A87AAA}|YKC.csproj|c:\\users\\administrator\\pycharmprojects\\pythonproject\\c#\\ykc\\pages\\gatewaypage.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||||
|
"RelativeMoniker": "D:0:0:{9F34DD1F-FB6D-4E13-9270-13C7A9A87AAA}|YKC.csproj|solutionrelative:pages\\gatewaypage.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AbsoluteMoniker": "D:0:0:{9F34DD1F-FB6D-4E13-9270-13C7A9A87AAA}|YKC.csproj|c:\\users\\administrator\\pycharmprojects\\pythonproject\\c#\\ykc\\pages\\realtimepage.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||||
|
"RelativeMoniker": "D:0:0:{9F34DD1F-FB6D-4E13-9270-13C7A9A87AAA}|YKC.csproj|solutionrelative:pages\\realtimepage.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AbsoluteMoniker": "D:0:0:{9F34DD1F-FB6D-4E13-9270-13C7A9A87AAA}|YKC.csproj|c:\\users\\administrator\\pycharmprojects\\pythonproject\\c#\\ykc\\pages\\gatewaypage.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}",
|
||||||
|
"RelativeMoniker": "D:0:0:{9F34DD1F-FB6D-4E13-9270-13C7A9A87AAA}|YKC.csproj|solutionrelative:pages\\gatewaypage.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AbsoluteMoniker": "D:0:0:{9F34DD1F-FB6D-4E13-9270-13C7A9A87AAA}|YKC.csproj|c:\\users\\administrator\\pycharmprojects\\pythonproject\\c#\\ykc\\pages\\dashboardpage.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}",
|
||||||
|
"RelativeMoniker": "D:0:0:{9F34DD1F-FB6D-4E13-9270-13C7A9A87AAA}|YKC.csproj|solutionrelative:pages\\dashboardpage.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AbsoluteMoniker": "D:0:0:{9F34DD1F-FB6D-4E13-9270-13C7A9A87AAA}|YKC.csproj|c:\\users\\administrator\\pycharmprojects\\pythonproject\\c#\\ykc\\pages\\chargerpage.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}",
|
||||||
|
"RelativeMoniker": "D:0:0:{9F34DD1F-FB6D-4E13-9270-13C7A9A87AAA}|YKC.csproj|solutionrelative:pages\\chargerpage.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AbsoluteMoniker": "D:0:0:{9F34DD1F-FB6D-4E13-9270-13C7A9A87AAA}|YKC.csproj|c:\\users\\administrator\\pycharmprojects\\pythonproject\\c#\\ykc\\mainwindow.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}",
|
||||||
|
"RelativeMoniker": "D:0:0:{9F34DD1F-FB6D-4E13-9270-13C7A9A87AAA}|YKC.csproj|solutionrelative:mainwindow.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\Administrator\\AppData\\Local\\Temp\\.vsdbgsrc\\3714f74b82eacc6cf8dcf1e32980b0908d4f8b447d25d4eb08ff1424a7b57c02\\ResourcePart.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AbsoluteMoniker": "D:0:0:{9F34DD1F-FB6D-4E13-9270-13C7A9A87AAA}|YKC.csproj|C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\app.config||{FA3CD31E-987B-443A-9B81-186104E8DAC1}",
|
||||||
|
"RelativeMoniker": "D:0:0:{9F34DD1F-FB6D-4E13-9270-13C7A9A87AAA}|YKC.csproj|solutionrelative:app.config||{FA3CD31E-987B-443A-9B81-186104E8DAC1}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AbsoluteMoniker": "D:0:0:{9F34DD1F-FB6D-4E13-9270-13C7A9A87AAA}|YKC.csproj|C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\mainwindow.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||||
|
"RelativeMoniker": "D:0:0:{9F34DD1F-FB6D-4E13-9270-13C7A9A87AAA}|YKC.csproj|solutionrelative:mainwindow.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AbsoluteMoniker": "D:0:0:{9F34DD1F-FB6D-4E13-9270-13C7A9A87AAA}|YKC.csproj|C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\app.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}",
|
||||||
|
"RelativeMoniker": "D:0:0:{9F34DD1F-FB6D-4E13-9270-13C7A9A87AAA}|YKC.csproj|solutionrelative:app.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AbsoluteMoniker": "D:0:0:{9F34DD1F-FB6D-4E13-9270-13C7A9A87AAA}|YKC.csproj|C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\app.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||||
|
"RelativeMoniker": "D:0:0:{9F34DD1F-FB6D-4E13-9270-13C7A9A87AAA}|YKC.csproj|solutionrelative:app.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AbsoluteMoniker": "D:0:0:{00000000-0000-0000-0000-000000000000}|\u003CSolution\u003E|YKC||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"DocumentGroupContainers": [
|
||||||
|
{
|
||||||
|
"Orientation": 0,
|
||||||
|
"VerticalTabListWidth": 256,
|
||||||
|
"DocumentGroups": [
|
||||||
|
{
|
||||||
|
"DockedWidth": 200,
|
||||||
|
"SelectedChildIndex": 0,
|
||||||
|
"Children": [
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 0,
|
||||||
|
"Title": "RealtimePage.xaml",
|
||||||
|
"DocumentMoniker": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\Pages\\RealtimePage.xaml",
|
||||||
|
"RelativeDocumentMoniker": "Pages\\RealtimePage.xaml",
|
||||||
|
"ToolTip": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\Pages\\RealtimePage.xaml",
|
||||||
|
"RelativeToolTip": "Pages\\RealtimePage.xaml",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|",
|
||||||
|
"WhenOpened": "2026-05-20T03:56:55.66Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 2,
|
||||||
|
"Title": "RealtimePage.xaml.cs",
|
||||||
|
"DocumentMoniker": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\Pages\\RealtimePage.xaml.cs",
|
||||||
|
"RelativeDocumentMoniker": "Pages\\RealtimePage.xaml.cs",
|
||||||
|
"ToolTip": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\Pages\\RealtimePage.xaml.cs",
|
||||||
|
"RelativeToolTip": "Pages\\RealtimePage.xaml.cs",
|
||||||
|
"ViewState": "AgIAAFcAAAAAAAAAAAAowH8AAAAQAAAAAAAAAA==",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||||
|
"WhenOpened": "2026-05-20T03:48:04.174Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 1,
|
||||||
|
"Title": "GatewayPage.xaml.cs",
|
||||||
|
"DocumentMoniker": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\Pages\\GatewayPage.xaml.cs",
|
||||||
|
"RelativeDocumentMoniker": "Pages\\GatewayPage.xaml.cs",
|
||||||
|
"ToolTip": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\Pages\\GatewayPage.xaml.cs",
|
||||||
|
"RelativeToolTip": "Pages\\GatewayPage.xaml.cs",
|
||||||
|
"ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||||
|
"WhenOpened": "2026-05-20T03:56:52.729Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 4,
|
||||||
|
"Title": "DashboardPage.xaml",
|
||||||
|
"DocumentMoniker": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\Pages\\DashboardPage.xaml",
|
||||||
|
"RelativeDocumentMoniker": "Pages\\DashboardPage.xaml",
|
||||||
|
"ToolTip": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\Pages\\DashboardPage.xaml",
|
||||||
|
"RelativeToolTip": "Pages\\DashboardPage.xaml",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|",
|
||||||
|
"WhenOpened": "2026-05-20T03:55:04.048Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 5,
|
||||||
|
"Title": "ChargerPage.xaml",
|
||||||
|
"DocumentMoniker": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\Pages\\ChargerPage.xaml",
|
||||||
|
"RelativeDocumentMoniker": "Pages\\ChargerPage.xaml",
|
||||||
|
"ToolTip": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\Pages\\ChargerPage.xaml",
|
||||||
|
"RelativeToolTip": "Pages\\ChargerPage.xaml",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|",
|
||||||
|
"WhenOpened": "2026-05-20T03:55:01.467Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 9,
|
||||||
|
"Title": "MainWindow.xaml.cs",
|
||||||
|
"DocumentMoniker": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\MainWindow.xaml.cs",
|
||||||
|
"RelativeDocumentMoniker": "MainWindow.xaml.cs",
|
||||||
|
"ToolTip": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\MainWindow.xaml.cs",
|
||||||
|
"RelativeToolTip": "MainWindow.xaml.cs",
|
||||||
|
"ViewState": "AgIAADMAAAAAAAAAAAAewEoAAAAMAAAAAAAAAA==",
|
||||||
|
"Icon": "00000000-0000-0000-0000-000000000000.000000|iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJ7SURBVDhP7ZQ9aBNhGMef9y7t2eH0TOPHnbnzzmDjkpTqNSEdShDBpRbBQbEI/bCSRVA7iFWk1OpS0CGDH5OlgQgZihRioTgU0VzTEKhSTeLg2aYBLUIgzfUj17wuXptcQUFdBH/j83//P953eF4AE0eGZljXkLL4ZErFsY9LA\u002Bb8VyDz4NGUyiKARDJb5A7srMkc27Wcjr98DpFIBLxeL/A8Hx4cHAybewbkwZuvB9aPXvDrcqcfPJ3\u002BN2rBX1dDtMTUZeqbptfr\u002BgYqZd/G5ubmzrAs66Ioql6W5dL09PQ7swwAgGRaL/YVS5jTcZkDBBwug50kCelLoWQBQIAttbHJh7f6McadVqs1RdP0HoRQk8/n\u002B\u002BR0OnOzs7N6pXDbk1\u002B8/8oifSMxMrPECUzt8mmXdezsCfk6QRAJh8Nxw\u002BPxHNI07TIA6ABwslwufwgGg2tGn6jWAdyb\u002BAx3J7PgE2k43rD7Md5Re8XIenp6HnR3dwMAXAWAeoTQBEKotbJfdcPh4eHmdUz0TerusXMtDVoTX5f2OvZment7WYvFklhZWeHm5\u002BczuVwuzzCM50etXVGUccNh2dIBKIqyjyCI1v3kzLVA/7OcMW9sbCwUi8X70WiUVlUVAABWV1dfYYwvEcS2R24hSVKbKIo5nuc5c2ZGEARWFMVFSZJOVc5/ov89/gv/nH9MSFEU2Gw2aygUeppOp41N2EYqlWoOhUIjgiBYGYapyqpWLxAItJEkOW632yEej4eTyWSmMjdwu92HZVk\u002Bn8/nQdf19mAwuLl6VcLR0dFmTdNuRyIRWFhYgLW1zU\u002BkCpIkwWazQVdXF9A0faejoyNuPvPX\u002BA5Fb\u002BAHZWstowAAAABJRU5ErkJggg==",
|
||||||
|
"WhenOpened": "2026-05-13T09:04:45.364Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 11,
|
||||||
|
"Title": "App.xaml.cs",
|
||||||
|
"DocumentMoniker": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\App.xaml.cs",
|
||||||
|
"RelativeDocumentMoniker": "App.xaml.cs",
|
||||||
|
"ToolTip": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\App.xaml.cs",
|
||||||
|
"RelativeToolTip": "App.xaml.cs",
|
||||||
|
"ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
|
||||||
|
"Icon": "00000000-0000-0000-0000-000000000000.000000|iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJ7SURBVDhP7ZQ9aBNhGMef9y7t2eH0TOPHnbnzzmDjkpTqNSEdShDBpRbBQbEI/bCSRVA7iFWk1OpS0CGDH5OlgQgZihRioTgU0VzTEKhSTeLg2aYBLUIgzfUj17wuXptcQUFdBH/j83//P953eF4AE0eGZljXkLL4ZErFsY9LA\u002Bb8VyDz4NGUyiKARDJb5A7srMkc27Wcjr98DpFIBLxeL/A8Hx4cHAybewbkwZuvB9aPXvDrcqcfPJ3\u002BN2rBX1dDtMTUZeqbptfr\u002BgYqZd/G5ubmzrAs66Ioql6W5dL09PQ7swwAgGRaL/YVS5jTcZkDBBwug50kCelLoWQBQIAttbHJh7f6McadVqs1RdP0HoRQk8/n\u002B\u002BR0OnOzs7N6pXDbk1\u002B8/8oifSMxMrPECUzt8mmXdezsCfk6QRAJh8Nxw\u002BPxHNI07TIA6ABwslwufwgGg2tGn6jWAdyb\u002BAx3J7PgE2k43rD7Md5Re8XIenp6HnR3dwMAXAWAeoTQBEKotbJfdcPh4eHmdUz0TerusXMtDVoTX5f2OvZment7WYvFklhZWeHm5\u002BczuVwuzzCM50etXVGUccNh2dIBKIqyjyCI1v3kzLVA/7OcMW9sbCwUi8X70WiUVlUVAABWV1dfYYwvEcS2R24hSVKbKIo5nuc5c2ZGEARWFMVFSZJOVc5/ov89/gv/nH9MSFEU2Gw2aygUeppOp41N2EYqlWoOhUIjgiBYGYapyqpWLxAItJEkOW632yEej4eTyWSmMjdwu92HZVk\u002Bn8/nQdf19mAwuLl6VcLR0dFmTdNuRyIRWFhYgLW1zU\u002BkCpIkwWazQVdXF9A0faejoyNuPvPX\u002BA5Fb\u002BAHZWstowAAAABJRU5ErkJggg==",
|
||||||
|
"WhenOpened": "2026-05-13T09:10:18.727Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 10,
|
||||||
|
"Title": "App.xaml",
|
||||||
|
"DocumentMoniker": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\App.xaml",
|
||||||
|
"RelativeDocumentMoniker": "App.xaml",
|
||||||
|
"ToolTip": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\App.xaml",
|
||||||
|
"RelativeToolTip": "App.xaml",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|",
|
||||||
|
"WhenOpened": "2026-05-13T09:08:55.359Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 6,
|
||||||
|
"Title": "MainWindow.xaml",
|
||||||
|
"DocumentMoniker": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\MainWindow.xaml",
|
||||||
|
"RelativeDocumentMoniker": "MainWindow.xaml",
|
||||||
|
"ToolTip": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\MainWindow.xaml",
|
||||||
|
"RelativeToolTip": "MainWindow.xaml",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|",
|
||||||
|
"WhenOpened": "2026-05-13T09:04:45.868Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 3,
|
||||||
|
"Title": "GatewayPage.xaml",
|
||||||
|
"DocumentMoniker": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\Pages\\GatewayPage.xaml",
|
||||||
|
"RelativeDocumentMoniker": "Pages\\GatewayPage.xaml",
|
||||||
|
"ToolTip": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\Pages\\GatewayPage.xaml",
|
||||||
|
"RelativeToolTip": "Pages\\GatewayPage.xaml",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|",
|
||||||
|
"WhenOpened": "2026-05-20T03:55:06.415Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 12,
|
||||||
|
"Title": "YKC",
|
||||||
|
"DocumentMoniker": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\YKC.csproj",
|
||||||
|
"RelativeDocumentMoniker": "YKC.csproj",
|
||||||
|
"ToolTip": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\YKC.csproj",
|
||||||
|
"RelativeToolTip": "YKC.csproj",
|
||||||
|
"Icon": "00000000-0000-0000-0000-000000000000.000000|iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAALUSURBVDhP5ZRfSFNRHMe/5267zrur003TDJrTQJx/yGHRCMFAM3CTRHqoJ6EyiHyIyDdBHwoSRz340OpFihYMwzCD6GnkSOthD7aFuzhMJMUY5vXavNe7u9NLylwpPQZ94Lz8fr/P9xwOhwP8dxAA8Pl8J2ZmZkqmp6ehKEr2zIF0dnbCbrcLvb29AgDoAUCSpH69Xu/heV6RZXktW/oThBCd2Wy2Ukp1siwPAhgAAAYARkdHUVxcDK/XO6VpWuPfrK6urraRkZGEKIoIBAJ7d7PZbBPt7e3\u002BWCx2cm9nfwRByBEEodXlcn2orKwc2KkT/AoEEO5\u002B2u1PqslL/rknaDl6FscKKoL9TYNBR8DBM5J2jdGTV9o2LWOAsk9XY/5Md3FxcQAAdABQUFBwEcCK5Uy\u002BIqUkn8VoaTYZuOat1NbidlvqM01uuxVNvbMp/1BSVG2hhLQfOV\u002B6kNtpWkYQFwCsiKIYxM4d7jC\u002B8BKhr1PpW87b3yilK1PL7ySqqvVpiuHvypp5U5VurCtih7S9UQ9Kh/NSeeZMH9mBALCurCfG4i/OMZqhUaV4tMEkQ0m62Zam6QQFuQkCn6IpU5Tq2yLmSCLb/y2QZ03mjnLPPU2vPmQJcfOUr\u002BNgGiJgzCD0Oig8rI6tA9GGHKLj4BO6Slw4XtSQ8/rLZCtD4XFYaqp0KU0EQ2bzWF7NYXLinIFbztVxIkh6ViOamukjO/DU4dOr1ZbqyTEhMElBJmsKa4XZnjmBUP3dPEP\u002BeKmx5IGVLXzMs6Znkcsxb\u002BxKTMr0dykvL59oaGgYjkQiluzeflBKmfn5\u002BUNVVVVvbTbb7jtkAIDjOLjd7h6WZe/vsQ4gHo8XaZr2pra2timzTgCgr69vQhRFz9LS0mo0Gv2YObAfHMcZnU5nk9VqNRoMhkGv1zuAnc/Bbrc/D4VC4Wg0mu3tiyzLCIfD791uNyoqKoLZ/X\u002BXn25ERIg8ycqdAAAAAElFTkSuQmCC",
|
||||||
|
"WhenOpened": "2026-05-13T09:08:51.991Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 8,
|
||||||
|
"Title": "App.config",
|
||||||
|
"DocumentMoniker": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\App.config",
|
||||||
|
"RelativeDocumentMoniker": "App.config",
|
||||||
|
"ToolTip": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\App.config",
|
||||||
|
"RelativeToolTip": "App.config",
|
||||||
|
"ViewState": "AgIAAAAAAAAAAAAAAADwvwUAAAAQAAAAAAAAAA==",
|
||||||
|
"Icon": "00000000-0000-0000-0000-000000000000.000000|iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAOhSURBVDhPrZRPSCNXHMe/LxNjTbquSYiLSYwV/1MwEEwFIWsOBQ/\u002BxS6ElUV6qiIG3ZNQSrGswQotu4i3QqkHXTCIYbeHFi9u2Wo1YhSNh7mkQaNpzWSMzDATNXm9OKIj2B76gXd53\u002B/vw\u002BM9eMD/DFFvzM3NGQG8DAaDpv39fWSz2Vu50\u002BlEY2NjeGJi4sWt4ApGveFwOIyJRGLK4XA0GY3G41gs9geA46vltVgsLSaTydbc3Fzo8Xj2VldXz2/O3zmhy\u002BUqA7A5ODiY8Hq9r2pra\u002BeVrKKi4k1lZWWd0\u002BnMAKgC8JxS\u002Buv09PRfSkdzbboilUohnU5jcnLyxU2ZQiaTeVtWVvYdpfSSEPIjIaRtaGjoQyW/I/w3Ojs7v\u002Bjr6/uMENJGKU0BeKnVageUXHu7DgQCAVBKAQD9/f23svb2diQSiQfDw8Ot0WjUaDKZHjIM8wGl9IHSuX6UcDjsbWpq\u002BnxmZsZrtVpbCgoKCn0\u002BH7e0tPSn0nny5Alisdje1tbWZj6fPxBF8XdBEKyCIOxlMpkV3HyUcDjcF4lERoPBoJvnebhcLpSXl8\u002BXlpa\u002BGhgYCCs9NRUVFW8AbMXj8XEA0ITD4TKWZQvdbve8wWD4sqen5\u002B\u002BLi4vc8vIydnd3\u002BwRB\u002BFotuQ8NIWQzk8k8BoDz8/P3sViszWKxpPR6PaLRKBYWFtQz98Kk0\u002Bnvj46O6rq7u8Xe3t6Cqqqqb1dWVmp5ntfKsgxJklie51\u002BrBxVKSkqeAjhW7pBhGGZclmVbKpUyb29vf3xwcNCzs7OjFUURVwWW47j/LNQ2NDSAZVkwDONNJpM4OTlBNpsFpRRarRZFRUWPRkdHP\u002BV5/v3s7KysFqrReL3eY6vVmhVFEYlEArIsgxACQgguLy\u002Bh0\u002BnckiTNGQyGer/fX6gWqNHkcrmmjo6O31pbW1FcXAyNRgOz2QydTgcA4DgOa2tr5lwu9wsh5LFaoEbj9/uP9Hr9VzqdrosQ0kUp7WIYpsvj8WzU1NQgn89DEAQmEok84jhuYmRk5CkAxONxI8uyP7W0tHxiMpmuhQwAhEKhxMbGBptMJtnT01P28PCQ9fl8IqXUrNFoPuI4DqIoglJqOzs728vn80ehUOi5LMvP9Hq9yW63v1tfX1/BfZ/D2NjY6\u002Brq6h/q6\u002BvDdrsdDMNAkiQIggAAD3mer1tcXHxnMBh\u002BdrvdrDJ35z9UMzU11SFJ0ttgMAi32w2bzfZNIBAYV/cU/gFl85csP2dGWAAAAABJRU5ErkJggg==",
|
||||||
|
"WhenOpened": "2026-05-13T09:08:54.548Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 7,
|
||||||
|
"Title": "ResourcePart.cs",
|
||||||
|
"DocumentMoniker": "C:\\Users\\Administrator\\AppData\\Local\\Temp\\.vsdbgsrc\\3714f74b82eacc6cf8dcf1e32980b0908d4f8b447d25d4eb08ff1424a7b57c02\\ResourcePart.cs",
|
||||||
|
"RelativeDocumentMoniker": "..\\..\\..\\..\\AppData\\Local\\Temp\\.vsdbgsrc\\3714f74b82eacc6cf8dcf1e32980b0908d4f8b447d25d4eb08ff1424a7b57c02\\ResourcePart.cs",
|
||||||
|
"ToolTip": "C:\\Users\\Administrator\\AppData\\Local\\Temp\\.vsdbgsrc\\3714f74b82eacc6cf8dcf1e32980b0908d4f8b447d25d4eb08ff1424a7b57c02\\ResourcePart.cs [\u53EA\u8BFB]",
|
||||||
|
"RelativeToolTip": "..\\..\\..\\..\\AppData\\Local\\Temp\\.vsdbgsrc\\3714f74b82eacc6cf8dcf1e32980b0908d4f8b447d25d4eb08ff1424a7b57c02\\ResourcePart.cs [\u53EA\u8BFB]",
|
||||||
|
"ViewState": "AgIAABMAAAAAAAAAAAAowCcAAAADAAAAAQAAAA==",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||||
|
"WhenOpened": "2026-05-13T09:19:37.213Z",
|
||||||
|
"EditorCaption": " [\u53EA\u8BFB]"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
228
上位机/YKC/.vs/YKC.slnx/v18/DocumentLayout.json
Normal file
228
上位机/YKC/.vs/YKC.slnx/v18/DocumentLayout.json
Normal file
@@ -0,0 +1,228 @@
|
|||||||
|
{
|
||||||
|
"Version": 1,
|
||||||
|
"WorkspaceRootPath": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\",
|
||||||
|
"Documents": [
|
||||||
|
{
|
||||||
|
"AbsoluteMoniker": "D:0:0:{9F34DD1F-FB6D-4E13-9270-13C7A9A87AAA}|YKC.csproj|c:\\users\\administrator\\pycharmprojects\\pythonproject\\c#\\ykc\\pages\\realtimepage.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}",
|
||||||
|
"RelativeMoniker": "D:0:0:{9F34DD1F-FB6D-4E13-9270-13C7A9A87AAA}|YKC.csproj|solutionrelative:pages\\realtimepage.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AbsoluteMoniker": "D:0:0:{9F34DD1F-FB6D-4E13-9270-13C7A9A87AAA}|YKC.csproj|c:\\users\\administrator\\pycharmprojects\\pythonproject\\c#\\ykc\\pages\\gatewaypage.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||||
|
"RelativeMoniker": "D:0:0:{9F34DD1F-FB6D-4E13-9270-13C7A9A87AAA}|YKC.csproj|solutionrelative:pages\\gatewaypage.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AbsoluteMoniker": "D:0:0:{9F34DD1F-FB6D-4E13-9270-13C7A9A87AAA}|YKC.csproj|c:\\users\\administrator\\pycharmprojects\\pythonproject\\c#\\ykc\\pages\\realtimepage.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||||
|
"RelativeMoniker": "D:0:0:{9F34DD1F-FB6D-4E13-9270-13C7A9A87AAA}|YKC.csproj|solutionrelative:pages\\realtimepage.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AbsoluteMoniker": "D:0:0:{9F34DD1F-FB6D-4E13-9270-13C7A9A87AAA}|YKC.csproj|c:\\users\\administrator\\pycharmprojects\\pythonproject\\c#\\ykc\\pages\\gatewaypage.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}",
|
||||||
|
"RelativeMoniker": "D:0:0:{9F34DD1F-FB6D-4E13-9270-13C7A9A87AAA}|YKC.csproj|solutionrelative:pages\\gatewaypage.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AbsoluteMoniker": "D:0:0:{9F34DD1F-FB6D-4E13-9270-13C7A9A87AAA}|YKC.csproj|c:\\users\\administrator\\pycharmprojects\\pythonproject\\c#\\ykc\\pages\\dashboardpage.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}",
|
||||||
|
"RelativeMoniker": "D:0:0:{9F34DD1F-FB6D-4E13-9270-13C7A9A87AAA}|YKC.csproj|solutionrelative:pages\\dashboardpage.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AbsoluteMoniker": "D:0:0:{9F34DD1F-FB6D-4E13-9270-13C7A9A87AAA}|YKC.csproj|c:\\users\\administrator\\pycharmprojects\\pythonproject\\c#\\ykc\\pages\\chargerpage.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}",
|
||||||
|
"RelativeMoniker": "D:0:0:{9F34DD1F-FB6D-4E13-9270-13C7A9A87AAA}|YKC.csproj|solutionrelative:pages\\chargerpage.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AbsoluteMoniker": "D:0:0:{9F34DD1F-FB6D-4E13-9270-13C7A9A87AAA}|YKC.csproj|c:\\users\\administrator\\pycharmprojects\\pythonproject\\c#\\ykc\\mainwindow.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}",
|
||||||
|
"RelativeMoniker": "D:0:0:{9F34DD1F-FB6D-4E13-9270-13C7A9A87AAA}|YKC.csproj|solutionrelative:mainwindow.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\Administrator\\AppData\\Local\\Temp\\.vsdbgsrc\\3714f74b82eacc6cf8dcf1e32980b0908d4f8b447d25d4eb08ff1424a7b57c02\\ResourcePart.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AbsoluteMoniker": "D:0:0:{9F34DD1F-FB6D-4E13-9270-13C7A9A87AAA}|YKC.csproj|C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\app.config||{FA3CD31E-987B-443A-9B81-186104E8DAC1}",
|
||||||
|
"RelativeMoniker": "D:0:0:{9F34DD1F-FB6D-4E13-9270-13C7A9A87AAA}|YKC.csproj|solutionrelative:app.config||{FA3CD31E-987B-443A-9B81-186104E8DAC1}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AbsoluteMoniker": "D:0:0:{9F34DD1F-FB6D-4E13-9270-13C7A9A87AAA}|YKC.csproj|C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\mainwindow.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||||
|
"RelativeMoniker": "D:0:0:{9F34DD1F-FB6D-4E13-9270-13C7A9A87AAA}|YKC.csproj|solutionrelative:mainwindow.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AbsoluteMoniker": "D:0:0:{9F34DD1F-FB6D-4E13-9270-13C7A9A87AAA}|YKC.csproj|C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\app.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}",
|
||||||
|
"RelativeMoniker": "D:0:0:{9F34DD1F-FB6D-4E13-9270-13C7A9A87AAA}|YKC.csproj|solutionrelative:app.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AbsoluteMoniker": "D:0:0:{9F34DD1F-FB6D-4E13-9270-13C7A9A87AAA}|YKC.csproj|C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\app.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||||
|
"RelativeMoniker": "D:0:0:{9F34DD1F-FB6D-4E13-9270-13C7A9A87AAA}|YKC.csproj|solutionrelative:app.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AbsoluteMoniker": "D:0:0:{00000000-0000-0000-0000-000000000000}|\u003CSolution\u003E|YKC||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"DocumentGroupContainers": [
|
||||||
|
{
|
||||||
|
"Orientation": 0,
|
||||||
|
"VerticalTabListWidth": 256,
|
||||||
|
"DocumentGroups": [
|
||||||
|
{
|
||||||
|
"DockedWidth": 200,
|
||||||
|
"SelectedChildIndex": 0,
|
||||||
|
"Children": [
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 0,
|
||||||
|
"Title": "RealtimePage.xaml",
|
||||||
|
"DocumentMoniker": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\Pages\\RealtimePage.xaml",
|
||||||
|
"RelativeDocumentMoniker": "Pages\\RealtimePage.xaml",
|
||||||
|
"ToolTip": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\Pages\\RealtimePage.xaml",
|
||||||
|
"RelativeToolTip": "Pages\\RealtimePage.xaml",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|",
|
||||||
|
"WhenOpened": "2026-05-20T03:56:55.66Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 2,
|
||||||
|
"Title": "RealtimePage.xaml.cs",
|
||||||
|
"DocumentMoniker": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\Pages\\RealtimePage.xaml.cs",
|
||||||
|
"RelativeDocumentMoniker": "Pages\\RealtimePage.xaml.cs",
|
||||||
|
"ToolTip": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\Pages\\RealtimePage.xaml.cs",
|
||||||
|
"RelativeToolTip": "Pages\\RealtimePage.xaml.cs",
|
||||||
|
"ViewState": "AgIAAFcAAAAAAAAAAAAowH8AAAAQAAAAAAAAAA==",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||||
|
"WhenOpened": "2026-05-20T03:48:04.174Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 1,
|
||||||
|
"Title": "GatewayPage.xaml.cs",
|
||||||
|
"DocumentMoniker": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\Pages\\GatewayPage.xaml.cs",
|
||||||
|
"RelativeDocumentMoniker": "Pages\\GatewayPage.xaml.cs",
|
||||||
|
"ToolTip": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\Pages\\GatewayPage.xaml.cs",
|
||||||
|
"RelativeToolTip": "Pages\\GatewayPage.xaml.cs",
|
||||||
|
"ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||||
|
"WhenOpened": "2026-05-20T03:56:52.729Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 4,
|
||||||
|
"Title": "DashboardPage.xaml",
|
||||||
|
"DocumentMoniker": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\Pages\\DashboardPage.xaml",
|
||||||
|
"RelativeDocumentMoniker": "Pages\\DashboardPage.xaml",
|
||||||
|
"ToolTip": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\Pages\\DashboardPage.xaml",
|
||||||
|
"RelativeToolTip": "Pages\\DashboardPage.xaml",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|",
|
||||||
|
"WhenOpened": "2026-05-20T03:55:04.048Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 5,
|
||||||
|
"Title": "ChargerPage.xaml",
|
||||||
|
"DocumentMoniker": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\Pages\\ChargerPage.xaml",
|
||||||
|
"RelativeDocumentMoniker": "Pages\\ChargerPage.xaml",
|
||||||
|
"ToolTip": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\Pages\\ChargerPage.xaml",
|
||||||
|
"RelativeToolTip": "Pages\\ChargerPage.xaml",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|",
|
||||||
|
"WhenOpened": "2026-05-20T03:55:01.467Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 9,
|
||||||
|
"Title": "MainWindow.xaml.cs",
|
||||||
|
"DocumentMoniker": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\MainWindow.xaml.cs",
|
||||||
|
"RelativeDocumentMoniker": "MainWindow.xaml.cs",
|
||||||
|
"ToolTip": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\MainWindow.xaml.cs",
|
||||||
|
"RelativeToolTip": "MainWindow.xaml.cs",
|
||||||
|
"ViewState": "AgIAADMAAAAAAAAAAAAewEoAAAAMAAAAAAAAAA==",
|
||||||
|
"Icon": "00000000-0000-0000-0000-000000000000.000000|iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJ7SURBVDhP7ZQ9aBNhGMef9y7t2eH0TOPHnbnzzmDjkpTqNSEdShDBpRbBQbEI/bCSRVA7iFWk1OpS0CGDH5OlgQgZihRioTgU0VzTEKhSTeLg2aYBLUIgzfUj17wuXptcQUFdBH/j83//P953eF4AE0eGZljXkLL4ZErFsY9LA\u002Bb8VyDz4NGUyiKARDJb5A7srMkc27Wcjr98DpFIBLxeL/A8Hx4cHAybewbkwZuvB9aPXvDrcqcfPJ3\u002BN2rBX1dDtMTUZeqbptfr\u002BgYqZd/G5ubmzrAs66Ioql6W5dL09PQ7swwAgGRaL/YVS5jTcZkDBBwug50kCelLoWQBQIAttbHJh7f6McadVqs1RdP0HoRQk8/n\u002B\u002BR0OnOzs7N6pXDbk1\u002B8/8oifSMxMrPECUzt8mmXdezsCfk6QRAJh8Nxw\u002BPxHNI07TIA6ABwslwufwgGg2tGn6jWAdyb\u002BAx3J7PgE2k43rD7Md5Re8XIenp6HnR3dwMAXAWAeoTQBEKotbJfdcPh4eHmdUz0TerusXMtDVoTX5f2OvZment7WYvFklhZWeHm5\u002BczuVwuzzCM50etXVGUccNh2dIBKIqyjyCI1v3kzLVA/7OcMW9sbCwUi8X70WiUVlUVAABWV1dfYYwvEcS2R24hSVKbKIo5nuc5c2ZGEARWFMVFSZJOVc5/ov89/gv/nH9MSFEU2Gw2aygUeppOp41N2EYqlWoOhUIjgiBYGYapyqpWLxAItJEkOW632yEej4eTyWSmMjdwu92HZVk\u002Bn8/nQdf19mAwuLl6VcLR0dFmTdNuRyIRWFhYgLW1zU\u002BkCpIkwWazQVdXF9A0faejoyNuPvPX\u002BA5Fb\u002BAHZWstowAAAABJRU5ErkJggg==",
|
||||||
|
"WhenOpened": "2026-05-13T09:04:45.364Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 11,
|
||||||
|
"Title": "App.xaml.cs",
|
||||||
|
"DocumentMoniker": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\App.xaml.cs",
|
||||||
|
"RelativeDocumentMoniker": "App.xaml.cs",
|
||||||
|
"ToolTip": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\App.xaml.cs",
|
||||||
|
"RelativeToolTip": "App.xaml.cs",
|
||||||
|
"ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
|
||||||
|
"Icon": "00000000-0000-0000-0000-000000000000.000000|iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJ7SURBVDhP7ZQ9aBNhGMef9y7t2eH0TOPHnbnzzmDjkpTqNSEdShDBpRbBQbEI/bCSRVA7iFWk1OpS0CGDH5OlgQgZihRioTgU0VzTEKhSTeLg2aYBLUIgzfUj17wuXptcQUFdBH/j83//P953eF4AE0eGZljXkLL4ZErFsY9LA\u002Bb8VyDz4NGUyiKARDJb5A7srMkc27Wcjr98DpFIBLxeL/A8Hx4cHAybewbkwZuvB9aPXvDrcqcfPJ3\u002BN2rBX1dDtMTUZeqbptfr\u002BgYqZd/G5ubmzrAs66Ioql6W5dL09PQ7swwAgGRaL/YVS5jTcZkDBBwug50kCelLoWQBQIAttbHJh7f6McadVqs1RdP0HoRQk8/n\u002B\u002BR0OnOzs7N6pXDbk1\u002B8/8oifSMxMrPECUzt8mmXdezsCfk6QRAJh8Nxw\u002BPxHNI07TIA6ABwslwufwgGg2tGn6jWAdyb\u002BAx3J7PgE2k43rD7Md5Re8XIenp6HnR3dwMAXAWAeoTQBEKotbJfdcPh4eHmdUz0TerusXMtDVoTX5f2OvZment7WYvFklhZWeHm5\u002BczuVwuzzCM50etXVGUccNh2dIBKIqyjyCI1v3kzLVA/7OcMW9sbCwUi8X70WiUVlUVAABWV1dfYYwvEcS2R24hSVKbKIo5nuc5c2ZGEARWFMVFSZJOVc5/ov89/gv/nH9MSFEU2Gw2aygUeppOp41N2EYqlWoOhUIjgiBYGYapyqpWLxAItJEkOW632yEej4eTyWSmMjdwu92HZVk\u002Bn8/nQdf19mAwuLl6VcLR0dFmTdNuRyIRWFhYgLW1zU\u002BkCpIkwWazQVdXF9A0faejoyNuPvPX\u002BA5Fb\u002BAHZWstowAAAABJRU5ErkJggg==",
|
||||||
|
"WhenOpened": "2026-05-13T09:10:18.727Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 10,
|
||||||
|
"Title": "App.xaml",
|
||||||
|
"DocumentMoniker": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\App.xaml",
|
||||||
|
"RelativeDocumentMoniker": "App.xaml",
|
||||||
|
"ToolTip": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\App.xaml",
|
||||||
|
"RelativeToolTip": "App.xaml",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|",
|
||||||
|
"WhenOpened": "2026-05-13T09:08:55.359Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 6,
|
||||||
|
"Title": "MainWindow.xaml",
|
||||||
|
"DocumentMoniker": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\MainWindow.xaml",
|
||||||
|
"RelativeDocumentMoniker": "MainWindow.xaml",
|
||||||
|
"ToolTip": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\MainWindow.xaml",
|
||||||
|
"RelativeToolTip": "MainWindow.xaml",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|",
|
||||||
|
"WhenOpened": "2026-05-13T09:04:45.868Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 3,
|
||||||
|
"Title": "GatewayPage.xaml",
|
||||||
|
"DocumentMoniker": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\Pages\\GatewayPage.xaml",
|
||||||
|
"RelativeDocumentMoniker": "Pages\\GatewayPage.xaml",
|
||||||
|
"ToolTip": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\Pages\\GatewayPage.xaml",
|
||||||
|
"RelativeToolTip": "Pages\\GatewayPage.xaml",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|",
|
||||||
|
"WhenOpened": "2026-05-20T03:55:06.415Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 12,
|
||||||
|
"Title": "YKC",
|
||||||
|
"DocumentMoniker": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\YKC.csproj",
|
||||||
|
"RelativeDocumentMoniker": "YKC.csproj",
|
||||||
|
"ToolTip": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\YKC.csproj",
|
||||||
|
"RelativeToolTip": "YKC.csproj",
|
||||||
|
"Icon": "00000000-0000-0000-0000-000000000000.000000|iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAALUSURBVDhP5ZRfSFNRHMe/5267zrur003TDJrTQJx/yGHRCMFAM3CTRHqoJ6EyiHyIyDdBHwoSRz340OpFihYMwzCD6GnkSOthD7aFuzhMJMUY5vXavNe7u9NLylwpPQZ94Lz8fr/P9xwOhwP8dxAA8Pl8J2ZmZkqmp6ehKEr2zIF0dnbCbrcLvb29AgDoAUCSpH69Xu/heV6RZXktW/oThBCd2Wy2Ukp1siwPAhgAAAYARkdHUVxcDK/XO6VpWuPfrK6urraRkZGEKIoIBAJ7d7PZbBPt7e3\u002BWCx2cm9nfwRByBEEodXlcn2orKwc2KkT/AoEEO5\u002B2u1PqslL/rknaDl6FscKKoL9TYNBR8DBM5J2jdGTV9o2LWOAsk9XY/5Md3FxcQAAdABQUFBwEcCK5Uy\u002BIqUkn8VoaTYZuOat1NbidlvqM01uuxVNvbMp/1BSVG2hhLQfOV\u002B6kNtpWkYQFwCsiKIYxM4d7jC\u002B8BKhr1PpW87b3yilK1PL7ySqqvVpiuHvypp5U5VurCtih7S9UQ9Kh/NSeeZMH9mBALCurCfG4i/OMZqhUaV4tMEkQ0m62Zam6QQFuQkCn6IpU5Tq2yLmSCLb/y2QZ03mjnLPPU2vPmQJcfOUr\u002BNgGiJgzCD0Oig8rI6tA9GGHKLj4BO6Slw4XtSQ8/rLZCtD4XFYaqp0KU0EQ2bzWF7NYXLinIFbztVxIkh6ViOamukjO/DU4dOr1ZbqyTEhMElBJmsKa4XZnjmBUP3dPEP\u002BeKmx5IGVLXzMs6Znkcsxb\u002BxKTMr0dykvL59oaGgYjkQiluzeflBKmfn5\u002BUNVVVVvbTbb7jtkAIDjOLjd7h6WZe/vsQ4gHo8XaZr2pra2timzTgCgr69vQhRFz9LS0mo0Gv2YObAfHMcZnU5nk9VqNRoMhkGv1zuAnc/Bbrc/D4VC4Wg0mu3tiyzLCIfD791uNyoqKoLZ/X\u002BXn25ERIg8ycqdAAAAAElFTkSuQmCC",
|
||||||
|
"WhenOpened": "2026-05-13T09:08:51.991Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 8,
|
||||||
|
"Title": "App.config",
|
||||||
|
"DocumentMoniker": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\App.config",
|
||||||
|
"RelativeDocumentMoniker": "App.config",
|
||||||
|
"ToolTip": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\App.config",
|
||||||
|
"RelativeToolTip": "App.config",
|
||||||
|
"ViewState": "AgIAAAAAAAAAAAAAAADwvwUAAAAQAAAAAAAAAA==",
|
||||||
|
"Icon": "00000000-0000-0000-0000-000000000000.000000|iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAOhSURBVDhPrZRPSCNXHMe/LxNjTbquSYiLSYwV/1MwEEwFIWsOBQ/\u002BxS6ElUV6qiIG3ZNQSrGswQotu4i3QqkHXTCIYbeHFi9u2Wo1YhSNh7mkQaNpzWSMzDATNXm9OKIj2B76gXd53\u002B/vw\u002BM9eMD/DFFvzM3NGQG8DAaDpv39fWSz2Vu50\u002BlEY2NjeGJi4sWt4ApGveFwOIyJRGLK4XA0GY3G41gs9geA46vltVgsLSaTydbc3Fzo8Xj2VldXz2/O3zmhy\u002BUqA7A5ODiY8Hq9r2pra\u002BeVrKKi4k1lZWWd0\u002BnMAKgC8JxS\u002Buv09PRfSkdzbboilUohnU5jcnLyxU2ZQiaTeVtWVvYdpfSSEPIjIaRtaGjoQyW/I/w3Ojs7v\u002Bjr6/uMENJGKU0BeKnVageUXHu7DgQCAVBKAQD9/f23svb2diQSiQfDw8Ot0WjUaDKZHjIM8wGl9IHSuX6UcDjsbWpq\u002BnxmZsZrtVpbCgoKCn0\u002BH7e0tPSn0nny5Alisdje1tbWZj6fPxBF8XdBEKyCIOxlMpkV3HyUcDjcF4lERoPBoJvnebhcLpSXl8\u002BXlpa\u002BGhgYCCs9NRUVFW8AbMXj8XEA0ITD4TKWZQvdbve8wWD4sqen5\u002B\u002BLi4vc8vIydnd3\u002BwRB\u002BFotuQ8NIWQzk8k8BoDz8/P3sViszWKxpPR6PaLRKBYWFtQz98Kk0\u002Bnvj46O6rq7u8Xe3t6Cqqqqb1dWVmp5ntfKsgxJklie51\u002BrBxVKSkqeAjhW7pBhGGZclmVbKpUyb29vf3xwcNCzs7OjFUURVwWW47j/LNQ2NDSAZVkwDONNJpM4OTlBNpsFpRRarRZFRUWPRkdHP\u002BV5/v3s7KysFqrReL3eY6vVmhVFEYlEArIsgxACQgguLy\u002Bh0\u002BnckiTNGQyGer/fX6gWqNHkcrmmjo6O31pbW1FcXAyNRgOz2QydTgcA4DgOa2tr5lwu9wsh5LFaoEbj9/uP9Hr9VzqdrosQ0kUp7WIYpsvj8WzU1NQgn89DEAQmEok84jhuYmRk5CkAxONxI8uyP7W0tHxiMpmuhQwAhEKhxMbGBptMJtnT01P28PCQ9fl8IqXUrNFoPuI4DqIoglJqOzs728vn80ehUOi5LMvP9Hq9yW63v1tfX1/BfZ/D2NjY6\u002Brq6h/q6\u002BvDdrsdDMNAkiQIggAAD3mer1tcXHxnMBh\u002BdrvdrDJ35z9UMzU11SFJ0ttgMAi32w2bzfZNIBAYV/cU/gFl85csP2dGWAAAAABJRU5ErkJggg==",
|
||||||
|
"WhenOpened": "2026-05-13T09:08:54.548Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 7,
|
||||||
|
"Title": "ResourcePart.cs",
|
||||||
|
"DocumentMoniker": "C:\\Users\\Administrator\\AppData\\Local\\Temp\\.vsdbgsrc\\3714f74b82eacc6cf8dcf1e32980b0908d4f8b447d25d4eb08ff1424a7b57c02\\ResourcePart.cs",
|
||||||
|
"RelativeDocumentMoniker": "..\\..\\..\\..\\AppData\\Local\\Temp\\.vsdbgsrc\\3714f74b82eacc6cf8dcf1e32980b0908d4f8b447d25d4eb08ff1424a7b57c02\\ResourcePart.cs",
|
||||||
|
"ToolTip": "C:\\Users\\Administrator\\AppData\\Local\\Temp\\.vsdbgsrc\\3714f74b82eacc6cf8dcf1e32980b0908d4f8b447d25d4eb08ff1424a7b57c02\\ResourcePart.cs [\u53EA\u8BFB]",
|
||||||
|
"RelativeToolTip": "..\\..\\..\\..\\AppData\\Local\\Temp\\.vsdbgsrc\\3714f74b82eacc6cf8dcf1e32980b0908d4f8b447d25d4eb08ff1424a7b57c02\\ResourcePart.cs [\u53EA\u8BFB]",
|
||||||
|
"ViewState": "AgIAABMAAAAAAAAAAAAowCcAAAADAAAAAQAAAA==",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||||
|
"WhenOpened": "2026-05-13T09:19:37.213Z",
|
||||||
|
"EditorCaption": " [\u53EA\u8BFB]"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
6
上位机/YKC/App.config
Normal file
6
上位机/YKC/App.config
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<configuration>
|
||||||
|
<startup>
|
||||||
|
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
|
||||||
|
</startup>
|
||||||
|
</configuration>
|
||||||
274
上位机/YKC/App.xaml
Normal file
274
上位机/YKC/App.xaml
Normal file
@@ -0,0 +1,274 @@
|
|||||||
|
<Application x:Class="YKC.App"
|
||||||
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
StartupUri="LoginWindow.xaml">
|
||||||
|
<Application.Resources>
|
||||||
|
<!-- 颜色 -->
|
||||||
|
<SolidColorBrush x:Key="PrimaryBrush" Color="#3B82F6"/>
|
||||||
|
<SolidColorBrush x:Key="PrimaryDarkBrush" Color="#2563EB"/>
|
||||||
|
<SolidColorBrush x:Key="SidebarBrush" Color="#1E293B"/>
|
||||||
|
<SolidColorBrush x:Key="BgBrush" Color="#F0F2F5"/>
|
||||||
|
<SolidColorBrush x:Key="CardBrush" Color="#FFFFFF"/>
|
||||||
|
<SolidColorBrush x:Key="BorderBrush" Color="#E2E8F0"/>
|
||||||
|
<SolidColorBrush x:Key="TextBrush" Color="#1E293B"/>
|
||||||
|
<SolidColorBrush x:Key="TextDimBrush" Color="#64748B"/>
|
||||||
|
<SolidColorBrush x:Key="TextLightBrush" Color="#94A3B8"/>
|
||||||
|
<SolidColorBrush x:Key="SuccessBrush" Color="#10B981"/>
|
||||||
|
<SolidColorBrush x:Key="DangerBrush" Color="#EF4444"/>
|
||||||
|
|
||||||
|
<!-- 圆角输入框样式 -->
|
||||||
|
<Style x:Key="FormInput" TargetType="TextBox">
|
||||||
|
<Setter Property="Padding" Value="10,8"/>
|
||||||
|
<Setter Property="FontSize" Value="14"/>
|
||||||
|
<Setter Property="BorderBrush" Value="#E2E8F0"/>
|
||||||
|
<Setter Property="BorderThickness" Value="1"/>
|
||||||
|
<Setter Property="VerticalContentAlignment" Value="Center"/>
|
||||||
|
<Setter Property="Template">
|
||||||
|
<Setter.Value>
|
||||||
|
<ControlTemplate TargetType="TextBox">
|
||||||
|
<Border Background="White" BorderBrush="{TemplateBinding BorderBrush}"
|
||||||
|
BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="4">
|
||||||
|
<ScrollViewer x:Name="PART_ContentHost" Margin="{TemplateBinding Padding}"/>
|
||||||
|
</Border>
|
||||||
|
</ControlTemplate>
|
||||||
|
</Setter.Value>
|
||||||
|
</Setter>
|
||||||
|
</Style>
|
||||||
|
|
||||||
|
<!-- 密码框样式 -->
|
||||||
|
<Style x:Key="PwdInput" TargetType="PasswordBox">
|
||||||
|
<Setter Property="Padding" Value="10,8"/>
|
||||||
|
<Setter Property="FontSize" Value="14"/>
|
||||||
|
<Setter Property="BorderBrush" Value="#E2E8F0"/>
|
||||||
|
<Setter Property="BorderThickness" Value="1"/>
|
||||||
|
<Setter Property="Template">
|
||||||
|
<Setter.Value>
|
||||||
|
<ControlTemplate TargetType="PasswordBox">
|
||||||
|
<Border Background="White" BorderBrush="{TemplateBinding BorderBrush}"
|
||||||
|
BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="4">
|
||||||
|
<Grid>
|
||||||
|
<Rectangle Fill="Transparent"/>
|
||||||
|
<ScrollViewer x:Name="PART_ContentHost"
|
||||||
|
Margin="{TemplateBinding Padding}"
|
||||||
|
VerticalAlignment="Center"/>
|
||||||
|
</Grid>
|
||||||
|
</Border>
|
||||||
|
</ControlTemplate>
|
||||||
|
</Setter.Value>
|
||||||
|
</Setter>
|
||||||
|
</Style>
|
||||||
|
|
||||||
|
<!-- 蓝色主按钮 -->
|
||||||
|
<Style x:Key="BtnPrimary" TargetType="Button">
|
||||||
|
<Setter Property="Background" Value="#3B82F6"/>
|
||||||
|
<Setter Property="Foreground" Value="White"/>
|
||||||
|
<Setter Property="Padding" Value="20,9"/>
|
||||||
|
<Setter Property="FontSize" Value="14"/>
|
||||||
|
<Setter Property="FontWeight" Value="SemiBold"/>
|
||||||
|
<Setter Property="BorderThickness" Value="0"/>
|
||||||
|
<Setter Property="Cursor" Value="Hand"/>
|
||||||
|
<Setter Property="Template">
|
||||||
|
<Setter.Value>
|
||||||
|
<ControlTemplate TargetType="Button">
|
||||||
|
<Border Background="{TemplateBinding Background}" CornerRadius="4"
|
||||||
|
Padding="{TemplateBinding Padding}">
|
||||||
|
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
||||||
|
</Border>
|
||||||
|
</ControlTemplate>
|
||||||
|
</Setter.Value>
|
||||||
|
</Setter>
|
||||||
|
<Style.Triggers>
|
||||||
|
<Trigger Property="IsMouseOver" Value="True">
|
||||||
|
<Setter Property="Background" Value="#2563EB"/>
|
||||||
|
</Trigger>
|
||||||
|
<Trigger Property="IsEnabled" Value="False">
|
||||||
|
<Setter Property="Opacity" Value="0.5"/>
|
||||||
|
</Trigger>
|
||||||
|
</Style.Triggers>
|
||||||
|
</Style>
|
||||||
|
|
||||||
|
<!-- 白色边框按钮 -->
|
||||||
|
<Style x:Key="BtnOutline" TargetType="Button" BasedOn="{StaticResource BtnPrimary}">
|
||||||
|
<Setter Property="Background" Value="White"/>
|
||||||
|
<Setter Property="Foreground" Value="#3B82F6"/>
|
||||||
|
<Setter Property="BorderThickness" Value="1"/>
|
||||||
|
<Setter Property="BorderBrush" Value="#3B82F6"/>
|
||||||
|
<Style.Triggers>
|
||||||
|
<Trigger Property="IsMouseOver" Value="True">
|
||||||
|
<Setter Property="Background" Value="#EFF6FF"/>
|
||||||
|
</Trigger>
|
||||||
|
</Style.Triggers>
|
||||||
|
</Style>
|
||||||
|
|
||||||
|
<!-- 红色危险按钮 -->
|
||||||
|
<Style x:Key="BtnDanger" TargetType="Button" BasedOn="{StaticResource BtnPrimary}">
|
||||||
|
<Setter Property="Background" Value="#EF4444"/>
|
||||||
|
<Style.Triggers>
|
||||||
|
<Trigger Property="IsMouseOver" Value="True">
|
||||||
|
<Setter Property="Background" Value="#DC2626"/>
|
||||||
|
</Trigger>
|
||||||
|
</Style.Triggers>
|
||||||
|
</Style>
|
||||||
|
|
||||||
|
<!-- 侧边导航按钮 -->
|
||||||
|
<Style x:Key="NavBtn" TargetType="Button">
|
||||||
|
<Setter Property="Background" Value="Transparent"/>
|
||||||
|
<Setter Property="Foreground" Value="#8899AA"/>
|
||||||
|
<Setter Property="FontSize" Value="14"/>
|
||||||
|
<Setter Property="Height" Value="44"/>
|
||||||
|
<Setter Property="HorizontalContentAlignment" Value="Left"/>
|
||||||
|
<Setter Property="Padding" Value="22,0,0,0"/>
|
||||||
|
<Setter Property="BorderThickness" Value="3,0,0,0"/>
|
||||||
|
<Setter Property="BorderBrush" Value="Transparent"/>
|
||||||
|
<Setter Property="Cursor" Value="Hand"/>
|
||||||
|
<Setter Property="Template">
|
||||||
|
<Setter.Value>
|
||||||
|
<ControlTemplate TargetType="Button">
|
||||||
|
<Grid>
|
||||||
|
<Border Background="{TemplateBinding Background}"
|
||||||
|
Padding="{TemplateBinding Padding}"
|
||||||
|
BorderBrush="{TemplateBinding BorderBrush}"
|
||||||
|
BorderThickness="{TemplateBinding BorderThickness}">
|
||||||
|
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
|
||||||
|
VerticalAlignment="Center"/>
|
||||||
|
</Border>
|
||||||
|
</Grid>
|
||||||
|
</ControlTemplate>
|
||||||
|
</Setter.Value>
|
||||||
|
</Setter>
|
||||||
|
<Style.Triggers>
|
||||||
|
<Trigger Property="IsMouseOver" Value="True">
|
||||||
|
<Setter Property="Background" Value="#1A2433"/>
|
||||||
|
<Setter Property="Foreground" Value="#CCDDEE"/>
|
||||||
|
</Trigger>
|
||||||
|
</Style.Triggers>
|
||||||
|
</Style>
|
||||||
|
|
||||||
|
<!-- 表单标签(在输入框上方) -->
|
||||||
|
<Style x:Key="FieldLabel" TargetType="TextBlock">
|
||||||
|
<Setter Property="Foreground" Value="#64748B"/>
|
||||||
|
<Setter Property="FontSize" Value="13"/>
|
||||||
|
<Setter Property="FontWeight" Value="SemiBold"/>
|
||||||
|
<Setter Property="Margin" Value="0,0,0,4"/>
|
||||||
|
</Style>
|
||||||
|
|
||||||
|
<!-- 信息行标签(灰色小字) -->
|
||||||
|
<Style x:Key="InfoLabel" TargetType="TextBlock">
|
||||||
|
<Setter Property="Foreground" Value="#94A3B8"/>
|
||||||
|
<Setter Property="FontSize" Value="12"/>
|
||||||
|
<Setter Property="Margin" Value="0,0,0,2"/>
|
||||||
|
</Style>
|
||||||
|
|
||||||
|
<!-- 信息行值 -->
|
||||||
|
<Style x:Key="InfoValue" TargetType="TextBlock">
|
||||||
|
<Setter Property="Foreground" Value="#1E293B"/>
|
||||||
|
<Setter Property="FontSize" Value="14"/>
|
||||||
|
<Setter Property="FontWeight" Value="SemiBold"/>
|
||||||
|
<Setter Property="Margin" Value="0,0,0,8"/>
|
||||||
|
</Style>
|
||||||
|
|
||||||
|
<!-- 徽章 -->
|
||||||
|
<Style x:Key="Badge" TargetType="TextBlock">
|
||||||
|
<Setter Property="FontSize" Value="11"/>
|
||||||
|
<Setter Property="FontWeight" Value="SemiBold"/>
|
||||||
|
<Setter Property="Padding" Value="8,3"/>
|
||||||
|
</Style>
|
||||||
|
|
||||||
|
<!-- 下拉框样式 -->
|
||||||
|
<Style x:Key="StyledCombo" TargetType="ComboBox">
|
||||||
|
<Setter Property="FontSize" Value="13"/>
|
||||||
|
<Setter Property="Height" Value="34"/>
|
||||||
|
<Setter Property="Foreground" Value="#1E293B"/>
|
||||||
|
<Setter Property="BorderThickness" Value="1"/>
|
||||||
|
<Setter Property="Background" Value="White"/>
|
||||||
|
<Setter Property="Padding" Value="12,0,10,0"/>
|
||||||
|
<Setter Property="MinWidth" Value="60"/>
|
||||||
|
<Setter Property="Template">
|
||||||
|
<Setter.Value>
|
||||||
|
<ControlTemplate TargetType="ComboBox">
|
||||||
|
<Grid>
|
||||||
|
<Border x:Name="border" Background="{TemplateBinding Background}"
|
||||||
|
BorderBrush="{StaticResource BorderBrush}"
|
||||||
|
BorderThickness="{TemplateBinding BorderThickness}"
|
||||||
|
CornerRadius="4">
|
||||||
|
<Grid>
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="*"/>
|
||||||
|
<ColumnDefinition Width="Auto"/>
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<ContentPresenter Grid.Column="0" Margin="{TemplateBinding Padding}"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Content="{TemplateBinding SelectionBoxItem}"
|
||||||
|
ContentTemplate="{TemplateBinding ItemTemplate}"
|
||||||
|
IsHitTestVisible="False"/>
|
||||||
|
<Path Grid.Column="1" Data="M0,0 L7,0 L3.5,5 Z"
|
||||||
|
Fill="#94A3B8" Margin="0,0,10,0"
|
||||||
|
VerticalAlignment="Center" Stretch="Uniform"/>
|
||||||
|
</Grid>
|
||||||
|
</Border>
|
||||||
|
<Popup x:Name="PART_Popup" AllowsTransparency="True"
|
||||||
|
IsOpen="{TemplateBinding IsDropDownOpen}"
|
||||||
|
Placement="Bottom" Focusable="False"
|
||||||
|
PopupAnimation="Fade"
|
||||||
|
VerticalOffset="2">
|
||||||
|
<Border x:Name="dropDownBorder" Background="White"
|
||||||
|
BorderBrush="#E2E8F0" BorderThickness="1"
|
||||||
|
CornerRadius="6" Padding="4"
|
||||||
|
Effect="{Binding RelativeSource={RelativeSource Self}, Path=Tag}">
|
||||||
|
<ScrollViewer>
|
||||||
|
<ItemsPresenter/>
|
||||||
|
</ScrollViewer>
|
||||||
|
</Border>
|
||||||
|
</Popup>
|
||||||
|
<!-- 点击切换的 ToggleButton -->
|
||||||
|
<ToggleButton x:Name="toggleBtn"
|
||||||
|
IsChecked="{Binding IsDropDownOpen, RelativeSource={RelativeSource TemplatedParent}}"
|
||||||
|
HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
|
||||||
|
Focusable="False"
|
||||||
|
Background="Transparent"/>
|
||||||
|
</Grid>
|
||||||
|
<ControlTemplate.Triggers>
|
||||||
|
<Trigger Property="IsMouseOver" Value="True">
|
||||||
|
<Setter TargetName="border" Property="BorderBrush" Value="#3B82F6"/>
|
||||||
|
<Setter TargetName="border" Property="Background" Value="#F8FAFC"/>
|
||||||
|
</Trigger>
|
||||||
|
<Trigger Property="IsDropDownOpen" Value="True">
|
||||||
|
<Setter TargetName="border" Property="BorderBrush" Value="#3B82F6"/>
|
||||||
|
<Setter TargetName="border" Property="Background" Value="White"/>
|
||||||
|
</Trigger>
|
||||||
|
</ControlTemplate.Triggers>
|
||||||
|
</ControlTemplate>
|
||||||
|
</Setter.Value>
|
||||||
|
</Setter>
|
||||||
|
</Style>
|
||||||
|
|
||||||
|
<!-- 下拉框项样式 -->
|
||||||
|
<Style TargetType="ComboBoxItem">
|
||||||
|
<Setter Property="Background" Value="Transparent"/>
|
||||||
|
<Setter Property="Foreground" Value="#1E293B"/>
|
||||||
|
<Setter Property="FontSize" Value="13"/>
|
||||||
|
<Setter Property="Padding" Value="12,8"/>
|
||||||
|
<Setter Property="Template">
|
||||||
|
<Setter.Value>
|
||||||
|
<ControlTemplate TargetType="ComboBoxItem">
|
||||||
|
<Border x:Name="border" Background="{TemplateBinding Background}"
|
||||||
|
Padding="{TemplateBinding Padding}" CornerRadius="3">
|
||||||
|
<ContentPresenter/>
|
||||||
|
</Border>
|
||||||
|
<ControlTemplate.Triggers>
|
||||||
|
<Trigger Property="IsMouseOver" Value="True">
|
||||||
|
<Setter TargetName="border" Property="Background" Value="#EFF6FF"/>
|
||||||
|
<Setter Property="Foreground" Value="#3B82F6"/>
|
||||||
|
</Trigger>
|
||||||
|
<Trigger Property="IsSelected" Value="True">
|
||||||
|
<Setter TargetName="border" Property="Background" Value="#DBEAFE"/>
|
||||||
|
<Setter Property="Foreground" Value="#1E40AF"/>
|
||||||
|
<Setter Property="FontWeight" Value="SemiBold"/>
|
||||||
|
</Trigger>
|
||||||
|
</ControlTemplate.Triggers>
|
||||||
|
</ControlTemplate>
|
||||||
|
</Setter.Value>
|
||||||
|
</Setter>
|
||||||
|
</Style>
|
||||||
|
</Application.Resources>
|
||||||
|
</Application>
|
||||||
17
上位机/YKC/App.xaml.cs
Normal file
17
上位机/YKC/App.xaml.cs
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Configuration;
|
||||||
|
using System.Data;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using System.Windows;
|
||||||
|
|
||||||
|
namespace YKC
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// App.xaml 的交互逻辑
|
||||||
|
/// </summary>
|
||||||
|
public partial class App : Application
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
31
上位机/YKC/Config.cs
Normal file
31
上位机/YKC/Config.cs
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace YKC
|
||||||
|
{
|
||||||
|
public static class Config
|
||||||
|
{
|
||||||
|
public static string TargetIp { get; set; } = "10.12.19.100";
|
||||||
|
public static int TargetPort { get; set; } = 6001;
|
||||||
|
public static int LocalPort { get; set; } = 6002;
|
||||||
|
public static int UdpTimeout { get; set; } = 3;
|
||||||
|
|
||||||
|
public static readonly Dictionary<string, string> Cmd = new Dictionary<string, string>
|
||||||
|
{
|
||||||
|
["LOGIN"] = "server_login",
|
||||||
|
["GET_STATUS"] = "server_get_status",
|
||||||
|
["SET_PILE_ID"] = "server_set_pile_id",
|
||||||
|
["GET_PILE_INFO"] = "server_get_pile_info",
|
||||||
|
["REBOOT"] = "server_reboot",
|
||||||
|
["REPORT_DATA"] = "report_data",
|
||||||
|
["PILE_METRICS"] = "pile_metrics",
|
||||||
|
["REAL_TIME_DATA"] = "real_time_data",
|
||||||
|
["GET_GW_INFO"] = "gateway_get_info",
|
||||||
|
["GET_4G_STATUS"] = "gateway_get_4g_status",
|
||||||
|
["GET_CLOUD_CONFIG"] = "gateway_get_cloud_config",
|
||||||
|
["SET_CLOUD_CONFIG"] = "gateway_set_cloud_config",
|
||||||
|
["GET_NET_CONFIG"] = "gateway_get_net_config",
|
||||||
|
["SET_NET_CONFIG"] = "gateway_set_net_config",
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
39
上位机/YKC/LoginWindow.xaml
Normal file
39
上位机/YKC/LoginWindow.xaml
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
<Window x:Class="YKC.LoginWindow"
|
||||||
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
Title="登录 - 百瑞充电桩网关管理" Height="420" Width="400"
|
||||||
|
WindowStartupLocation="CenterScreen"
|
||||||
|
WindowStyle="None" AllowsTransparency="True"
|
||||||
|
Background="Transparent"
|
||||||
|
ResizeMode="NoResize">
|
||||||
|
|
||||||
|
<Border Background="White" CornerRadius="8" Padding="40,36"
|
||||||
|
Margin="0" BorderBrush="#E2E8F0" BorderThickness="1"
|
||||||
|
Effect="{Binding RelativeSource={RelativeSource Self}, Path=Tag}">
|
||||||
|
<Border.Tag>
|
||||||
|
<DropShadowEffect BlurRadius="20" ShadowDepth="4" Color="#CC000000" Opacity="0.12"/>
|
||||||
|
</Border.Tag>
|
||||||
|
|
||||||
|
<StackPanel>
|
||||||
|
<TextBlock Text="充电桩管理系统" FontSize="22" FontWeight="Bold"
|
||||||
|
Foreground="#1E293B" HorizontalAlignment="Center" Margin="0,0,0,4"/>
|
||||||
|
<TextBlock Text="百瑞充电桩网关后台" FontSize="13" Foreground="#94A3B8"
|
||||||
|
HorizontalAlignment="Center" Margin="0,0,0,28"/>
|
||||||
|
|
||||||
|
<TextBlock Text="账号" Style="{StaticResource FieldLabel}"/>
|
||||||
|
<TextBox x:Name="txtUsername" Style="{StaticResource FormInput}"
|
||||||
|
Height="50" FontSize="14" Margin="0,0,0,16" Text="admin"/>
|
||||||
|
|
||||||
|
<TextBlock Text="密码" Style="{StaticResource FieldLabel}"/>
|
||||||
|
<PasswordBox x:Name="txtPassword" Style="{StaticResource PwdInput}"
|
||||||
|
Height="50" FontSize="14" Margin="0,0,0,24"/>
|
||||||
|
<Button x:Name="btnLogin" Content="登 录"
|
||||||
|
Style="{StaticResource BtnPrimary}"
|
||||||
|
Height="42" FontSize="15"
|
||||||
|
Click="Login_Click"/>
|
||||||
|
|
||||||
|
<TextBlock x:Name="txtError" Foreground="#EF4444" FontSize="13"
|
||||||
|
HorizontalAlignment="Center" Margin="0,12,0,0"/>
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
</Window>
|
||||||
66
上位机/YKC/LoginWindow.xaml.cs
Normal file
66
上位机/YKC/LoginWindow.xaml.cs
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
using System;
|
||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Input;
|
||||||
|
using Newtonsoft.Json.Linq;
|
||||||
|
|
||||||
|
namespace YKC
|
||||||
|
{
|
||||||
|
public partial class LoginWindow : Window
|
||||||
|
{
|
||||||
|
public LoginWindow()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
txtUsername.Focus();
|
||||||
|
|
||||||
|
KeyDown += (s, e) =>
|
||||||
|
{
|
||||||
|
if (e.Key == Key.Enter) Login();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void Login_Click(object sender, RoutedEventArgs e) => Login();
|
||||||
|
|
||||||
|
private async void Login()
|
||||||
|
{
|
||||||
|
string user = txtUsername.Text.Trim();
|
||||||
|
string pass = txtPassword.Password;
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(user) || string.IsNullOrEmpty(pass))
|
||||||
|
{
|
||||||
|
txtError.Text = "请输入账号和密码";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
btnLogin.IsEnabled = false;
|
||||||
|
btnLogin.Content = "校验中...";
|
||||||
|
txtError.Text = "";
|
||||||
|
|
||||||
|
await System.Threading.Tasks.Task.Run(() =>
|
||||||
|
{
|
||||||
|
var result = UdpClientHolder.Instance.SendSync(new JObject
|
||||||
|
{
|
||||||
|
["cmd"] = Config.Cmd["LOGIN"],
|
||||||
|
["username"] = user,
|
||||||
|
["password"] = pass
|
||||||
|
});
|
||||||
|
|
||||||
|
Dispatcher.BeginInvoke(new Action(() =>
|
||||||
|
{
|
||||||
|
if (result.Value<bool>("success"))
|
||||||
|
{
|
||||||
|
var mainWin = new MainWindow();
|
||||||
|
mainWin.SetUser(user);
|
||||||
|
mainWin.Show();
|
||||||
|
Close();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
txtError.Text = result.Value<string>("error") ?? "账号或密码错误";
|
||||||
|
btnLogin.IsEnabled = true;
|
||||||
|
btnLogin.Content = "登 录";
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
77
上位机/YKC/MainWindow.xaml
Normal file
77
上位机/YKC/MainWindow.xaml
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
<Window x:Class="YKC.MainWindow"
|
||||||
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
Title="百瑞充电桩网关管理" Height="956" Width="1365"
|
||||||
|
MinHeight="640" MinWidth="1060"
|
||||||
|
WindowStartupLocation="CenterScreen"
|
||||||
|
Background="#F0F2F5">
|
||||||
|
<WindowChrome.WindowChrome>
|
||||||
|
<WindowChrome CaptionHeight="0" GlassFrameThickness="0" ResizeBorderThickness="4"/>
|
||||||
|
</WindowChrome.WindowChrome>
|
||||||
|
|
||||||
|
<Grid>
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="200"/>
|
||||||
|
<ColumnDefinition Width="*"/>
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
|
||||||
|
<!-- 侧边栏 -->
|
||||||
|
<Border Grid.Column="0" Background="#1E293B">
|
||||||
|
<Grid>
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="48"/>
|
||||||
|
<RowDefinition Height="*"/>
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
|
||||||
|
<Border Grid.Row="0" Background="#162033"
|
||||||
|
Padding="18,0" BorderBrush="#2A3A50" BorderThickness="0,0,0,1"
|
||||||
|
MouseLeftButtonDown="Header_MouseDown">
|
||||||
|
<TextBlock Text="百瑞充电桩网关" Foreground="White"
|
||||||
|
FontSize="14" FontWeight="SemiBold" VerticalAlignment="Center"/>
|
||||||
|
</Border>
|
||||||
|
|
||||||
|
<StackPanel Grid.Row="1" Margin="0,4,0,0">
|
||||||
|
<Button x:Name="btnDashboard" Content="📊 总览"
|
||||||
|
Style="{StaticResource NavBtn}" Click="NavButton_Click"
|
||||||
|
Tag="dashboard"/>
|
||||||
|
<Button x:Name="btnRealtime" Content="📈 实时监控"
|
||||||
|
Style="{StaticResource NavBtn}" Click="NavButton_Click"
|
||||||
|
Tag="realtime"/>
|
||||||
|
<Button x:Name="btnCharger" Content="⚙ 充电桩管理"
|
||||||
|
Style="{StaticResource NavBtn}" Click="NavButton_Click"
|
||||||
|
Tag="charger"/>
|
||||||
|
<Button x:Name="btnGateway" Content="🌐 网关管理"
|
||||||
|
Style="{StaticResource NavBtn}" Click="NavButton_Click"
|
||||||
|
Tag="gateway"/>
|
||||||
|
</StackPanel>
|
||||||
|
</Grid>
|
||||||
|
</Border>
|
||||||
|
|
||||||
|
<!-- 主内容区 -->
|
||||||
|
<Grid Grid.Column="1">
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="48"/>
|
||||||
|
<RowDefinition Height="*"/>
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
|
||||||
|
<!-- 顶栏 -->
|
||||||
|
<Border Grid.Row="0" Background="White" BorderBrush="#E2E8F0" BorderThickness="0,0,0,1"
|
||||||
|
Padding="16,0">
|
||||||
|
<Grid>
|
||||||
|
<TextBlock x:Name="txtPageTitle" Text="总览" FontSize="16"
|
||||||
|
FontWeight="SemiBold" Foreground="#1E293B" VerticalAlignment="Center"/>
|
||||||
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right"
|
||||||
|
VerticalAlignment="Center">
|
||||||
|
<TextBlock x:Name="txtUser" Text="Admin" Foreground="#64748B" FontSize="13"
|
||||||
|
VerticalAlignment="Center" Margin="0,0,10,0"/>
|
||||||
|
<Button Content="退出登录" Style="{StaticResource BtnOutline}"
|
||||||
|
Padding="12,5" FontSize="12" Click="Logout_Click"/>
|
||||||
|
</StackPanel>
|
||||||
|
</Grid>
|
||||||
|
</Border>
|
||||||
|
|
||||||
|
<!-- 页面 Frame -->
|
||||||
|
<Frame x:Name="contentFrame" Grid.Row="1" NavigationUIVisibility="Hidden"/>
|
||||||
|
</Grid>
|
||||||
|
</Grid>
|
||||||
|
</Window>
|
||||||
110
上位机/YKC/MainWindow.xaml.cs
Normal file
110
上位机/YKC/MainWindow.xaml.cs
Normal file
@@ -0,0 +1,110 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Controls;
|
||||||
|
using System.Windows.Media;
|
||||||
|
|
||||||
|
namespace YKC
|
||||||
|
{
|
||||||
|
public partial class MainWindow : Window
|
||||||
|
{
|
||||||
|
private Dictionary<string, Button> _navButtons = new Dictionary<string, Button>();
|
||||||
|
private Dictionary<string, string> _navTitles = new Dictionary<string, string>();
|
||||||
|
private string _username = "Admin";
|
||||||
|
|
||||||
|
public void SetUser(string name)
|
||||||
|
{
|
||||||
|
_username = name;
|
||||||
|
if (txtUser != null) txtUser.Text = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public MainWindow()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
|
||||||
|
_navButtons["dashboard"] = btnDashboard;
|
||||||
|
_navButtons["realtime"] = btnRealtime;
|
||||||
|
_navButtons["charger"] = btnCharger;
|
||||||
|
_navButtons["gateway"] = btnGateway;
|
||||||
|
|
||||||
|
_navTitles["dashboard"] = "总览";
|
||||||
|
_navTitles["realtime"] = "实时监控";
|
||||||
|
_navTitles["charger"] = "充电桩管理";
|
||||||
|
_navTitles["gateway"] = "网关管理";
|
||||||
|
|
||||||
|
txtUser.Text = "Admin";
|
||||||
|
|
||||||
|
Loaded += (s, e) =>
|
||||||
|
{
|
||||||
|
UdpClientHolder.Instance.OnActiveReport += PilesStoreHolder.Instance.HandleReport;
|
||||||
|
NavigateTo("dashboard");
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SetActiveNav(string key)
|
||||||
|
{
|
||||||
|
foreach (var kv in _navButtons)
|
||||||
|
{
|
||||||
|
var btn = kv.Value;
|
||||||
|
var border = btn.Template?.FindName("border", btn) as Border;
|
||||||
|
if (kv.Key == key)
|
||||||
|
{
|
||||||
|
btn.Foreground = new SolidColorBrush(Colors.White);
|
||||||
|
btn.Background = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#1A3A5C"));
|
||||||
|
btn.BorderBrush = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#3B82F6"));
|
||||||
|
btn.BorderThickness = new Thickness(3, 0, 0, 0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
btn.Foreground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#8899AA"));
|
||||||
|
btn.Background = new SolidColorBrush(Colors.Transparent);
|
||||||
|
btn.BorderBrush = new SolidColorBrush(Colors.Transparent);
|
||||||
|
btn.BorderThickness = new Thickness(3, 0, 0, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void NavigateTo(string key)
|
||||||
|
{
|
||||||
|
SetActiveNav(key);
|
||||||
|
txtPageTitle.Text = _navTitles.ContainsKey(key) ? _navTitles[key] : key;
|
||||||
|
|
||||||
|
Uri uri;
|
||||||
|
switch (key)
|
||||||
|
{
|
||||||
|
case "dashboard": uri = new Uri("Pages/DashboardPage.xaml", UriKind.Relative); break;
|
||||||
|
case "realtime": uri = new Uri("Pages/RealtimePage.xaml", UriKind.Relative); break;
|
||||||
|
case "charger": uri = new Uri("Pages/ChargerPage.xaml", UriKind.Relative); break;
|
||||||
|
case "gateway": uri = new Uri("Pages/GatewayPage.xaml", UriKind.Relative); break;
|
||||||
|
default: return;
|
||||||
|
}
|
||||||
|
|
||||||
|
contentFrame.Source = uri;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void NavButton_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
if (sender is Button btn && btn.Tag is string key)
|
||||||
|
{
|
||||||
|
NavigateTo(key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Logout_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
var result = MessageBox.Show("确认退出登录?", "退出", MessageBoxButton.YesNo, MessageBoxImage.Question);
|
||||||
|
if (result == MessageBoxResult.Yes)
|
||||||
|
{
|
||||||
|
var loginWin = new LoginWindow();
|
||||||
|
loginWin.Show();
|
||||||
|
Close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Header_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.LeftButton == System.Windows.Input.MouseButtonState.Pressed)
|
||||||
|
DragMove();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
96
上位机/YKC/Pages/ChargerPage.xaml
Normal file
96
上位机/YKC/Pages/ChargerPage.xaml
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
<Page x:Class="YKC.ChargerPage"
|
||||||
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
Title="充电桩管理" Background="#F0F2F5">
|
||||||
|
|
||||||
|
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
||||||
|
<StackPanel Margin="24">
|
||||||
|
<TextBlock Text="充电桩管理" FontSize="16" FontWeight="SemiBold"
|
||||||
|
Foreground="#1E293B" Margin="0,0,0,20"/>
|
||||||
|
|
||||||
|
<Grid>
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="*"/>
|
||||||
|
<ColumnDefinition Width="*"/>
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
|
||||||
|
<!-- 写入桩ID -->
|
||||||
|
<Border Grid.Column="0" Background="White" CornerRadius="6"
|
||||||
|
Margin="0,0,8,0" Padding="24">
|
||||||
|
<StackPanel>
|
||||||
|
<TextBlock Text="写入桩 ID" FontSize="14" FontWeight="SemiBold"
|
||||||
|
Foreground="#1E293B" Margin="0,0,0,16"/>
|
||||||
|
|
||||||
|
<TextBlock Text="桩编号" Style="{StaticResource FieldLabel}"/>
|
||||||
|
<TextBox x:Name="txtSetPileIdx" Text="1" Width="80"
|
||||||
|
Style="{StaticResource FormInput}" Margin="0,0,0,16"/>
|
||||||
|
|
||||||
|
<TextBlock Text="序列号 (HEX, 14位)" Style="{StaticResource FieldLabel}"/>
|
||||||
|
<TextBox x:Name="txtSetPileId" Width="240" MaxLength="14"
|
||||||
|
Style="{StaticResource FormInput}" FontFamily="Consolas"
|
||||||
|
Margin="0,0,0,16"/>
|
||||||
|
|
||||||
|
<WrapPanel>
|
||||||
|
<Button Content="写 入" Style="{StaticResource BtnPrimary}" Width="90"
|
||||||
|
Click="SetPileId_Click"/>
|
||||||
|
<TextBlock x:Name="txtSetResult" Foreground="#10B981"
|
||||||
|
FontSize="13" VerticalAlignment="Center" Margin="12,0,0,0"/>
|
||||||
|
</WrapPanel>
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
|
||||||
|
<!-- 查询充电桩 -->
|
||||||
|
<Border Grid.Column="1" Background="White" CornerRadius="6"
|
||||||
|
Margin="8,0,0,0" Padding="24">
|
||||||
|
<StackPanel>
|
||||||
|
<TextBlock Text="查询充电桩信息" FontSize="14" FontWeight="SemiBold"
|
||||||
|
Foreground="#1E293B" Margin="0,0,0,16"/>
|
||||||
|
|
||||||
|
<TextBlock Text="桩编号" Style="{StaticResource FieldLabel}"/>
|
||||||
|
<WrapPanel Margin="0,0,0,14">
|
||||||
|
<TextBox x:Name="txtInfoPileIdx" Text="1" Width="80"
|
||||||
|
Style="{StaticResource FormInput}"/>
|
||||||
|
<Button Content="查 询" Style="{StaticResource BtnOutline}" Width="80"
|
||||||
|
Margin="10,0,0,0" Click="GetPileInfo_Click"/>
|
||||||
|
<TextBlock x:Name="txtInfoResult" VerticalAlignment="Center"
|
||||||
|
FontSize="13" Margin="10,0,0,0"/>
|
||||||
|
</WrapPanel>
|
||||||
|
|
||||||
|
<!-- 查询结果 -->
|
||||||
|
<Border x:Name="panelInfo" Background="#F8FAFC"
|
||||||
|
CornerRadius="4" Padding="14" Visibility="Collapsed">
|
||||||
|
<StackPanel>
|
||||||
|
<TextBlock Text="序列号" Style="{StaticResource InfoLabel}"/>
|
||||||
|
<TextBlock x:Name="txtInfoSerial" Text="--" Style="{StaticResource InfoValue}"/>
|
||||||
|
<TextBlock Text="类型" Style="{StaticResource InfoLabel}"/>
|
||||||
|
<TextBlock x:Name="txtInfoType" Text="--" Style="{StaticResource InfoValue}"/>
|
||||||
|
<TextBlock Text="枪数量" Style="{StaticResource InfoLabel}"/>
|
||||||
|
<TextBlock x:Name="txtInfoGuns" Text="--" Style="{StaticResource InfoValue}"/>
|
||||||
|
<TextBlock Text="协议版本" Style="{StaticResource InfoLabel}"/>
|
||||||
|
<TextBlock x:Name="txtInfoProto" Text="--" Style="{StaticResource InfoValue}"/>
|
||||||
|
<TextBlock Text="软件版本" Style="{StaticResource InfoLabel}"/>
|
||||||
|
<TextBlock x:Name="txtInfoSw" Text="--" Style="{StaticResource InfoValue}"/>
|
||||||
|
<TextBlock Text="SIM 卡" Style="{StaticResource InfoLabel}"/>
|
||||||
|
<TextBlock x:Name="txtInfoSim" Text="--" Style="{StaticResource InfoValue}"/>
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
</Grid>
|
||||||
|
|
||||||
|
<!-- 设备操作 -->
|
||||||
|
<Border Background="White" CornerRadius="6" Padding="24" Margin="0,14,0,0">
|
||||||
|
<StackPanel>
|
||||||
|
<TextBlock Text="设备操作" FontSize="14" FontWeight="SemiBold"
|
||||||
|
Foreground="#1E293B" Margin="0,0,0,14"/>
|
||||||
|
<WrapPanel>
|
||||||
|
<Button Content="重启设备" Style="{StaticResource BtnDanger}" Width="110"
|
||||||
|
Click="Reboot_Click"/>
|
||||||
|
<TextBlock x:Name="txtRebootResult" Foreground="#10B981"
|
||||||
|
FontSize="13" VerticalAlignment="Center" Margin="12,0,0,0"/>
|
||||||
|
</WrapPanel>
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
</StackPanel>
|
||||||
|
</ScrollViewer>
|
||||||
|
</Page>
|
||||||
118
上位机/YKC/Pages/ChargerPage.xaml.cs
Normal file
118
上位机/YKC/Pages/ChargerPage.xaml.cs
Normal file
@@ -0,0 +1,118 @@
|
|||||||
|
using System;
|
||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Controls;
|
||||||
|
using Newtonsoft.Json.Linq;
|
||||||
|
|
||||||
|
namespace YKC
|
||||||
|
{
|
||||||
|
public partial class ChargerPage : Page
|
||||||
|
{
|
||||||
|
public ChargerPage()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void SetPileId_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
string idx = txtSetPileIdx.Text.Trim();
|
||||||
|
string id = txtSetPileId.Text.Trim();
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(id) || id.Length != 14)
|
||||||
|
{
|
||||||
|
ShowResult(txtSetResult, "序列号需14位HEX", false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ShowResult(txtSetResult, "发送中...", true);
|
||||||
|
|
||||||
|
await System.Threading.Tasks.Task.Run(() =>
|
||||||
|
{
|
||||||
|
var result = UdpClientHolder.Instance.SendSync(new JObject
|
||||||
|
{
|
||||||
|
["cmd"] = Config.Cmd["SET_PILE_ID"],
|
||||||
|
["pile_index"] = int.Parse(idx),
|
||||||
|
["pile_id"] = id
|
||||||
|
});
|
||||||
|
Dispatcher.BeginInvoke(new Action(() =>
|
||||||
|
{
|
||||||
|
if (result.Value<bool>("success"))
|
||||||
|
ShowResult(txtSetResult, "写入成功", true);
|
||||||
|
else
|
||||||
|
ShowResult(txtSetResult, result.Value<string>("error") ?? "失败", false);
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void GetPileInfo_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
string idx = txtInfoPileIdx.Text.Trim();
|
||||||
|
panelInfo.Visibility = Visibility.Visible;
|
||||||
|
txtInfoResult.Text = "查询中...";
|
||||||
|
txtInfoResult.Foreground = new System.Windows.Media.SolidColorBrush(
|
||||||
|
(System.Windows.Media.Color)System.Windows.Media.ColorConverter.ConvertFromString("#64748B"));
|
||||||
|
|
||||||
|
await System.Threading.Tasks.Task.Run(() =>
|
||||||
|
{
|
||||||
|
var result = UdpClientHolder.Instance.SendSync(new JObject
|
||||||
|
{
|
||||||
|
["cmd"] = Config.Cmd["GET_PILE_INFO"],
|
||||||
|
["pile_index"] = int.Parse(idx)
|
||||||
|
});
|
||||||
|
Dispatcher.BeginInvoke(new Action(() =>
|
||||||
|
{
|
||||||
|
if (result.Value<bool>("success") && result["serial"] != null)
|
||||||
|
{
|
||||||
|
txtInfoSerial.Text = result.Value<string>("serial") ?? "--";
|
||||||
|
txtInfoType.Text = result.Value<string>("type") ?? "--";
|
||||||
|
txtInfoGuns.Text = result.Value<string>("gun_num") ?? "--";
|
||||||
|
txtInfoProto.Text = result.Value<string>("protocol_ver") ?? "--";
|
||||||
|
txtInfoSw.Text = result.Value<string>("software_ver") ?? "--";
|
||||||
|
txtInfoSim.Text = result.Value<string>("sim") ?? "--";
|
||||||
|
txtInfoResult.Text = "";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
txtInfoSerial.Text = "--"; txtInfoType.Text = "--";
|
||||||
|
txtInfoGuns.Text = "--"; txtInfoProto.Text = "--";
|
||||||
|
txtInfoSw.Text = "--"; txtInfoSim.Text = "--";
|
||||||
|
ShowResult(txtInfoResult, result.Value<string>("error") ?? "查询失败", false);
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void Reboot_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
var dialogResult = MessageBox.Show("确认重启设备?", "警告", MessageBoxButton.YesNo, MessageBoxImage.Warning);
|
||||||
|
if (dialogResult != MessageBoxResult.Yes) return;
|
||||||
|
|
||||||
|
ShowResult(txtRebootResult, "发送中...", true);
|
||||||
|
|
||||||
|
await System.Threading.Tasks.Task.Run(() =>
|
||||||
|
{
|
||||||
|
var result = UdpClientHolder.Instance.SendSync(new JObject
|
||||||
|
{
|
||||||
|
["cmd"] = Config.Cmd["REBOOT"]
|
||||||
|
});
|
||||||
|
Dispatcher.BeginInvoke(new Action(() =>
|
||||||
|
{
|
||||||
|
if (result.Value<bool>("success"))
|
||||||
|
ShowResult(txtRebootResult, "重启指令已发送", true);
|
||||||
|
else
|
||||||
|
ShowResult(txtRebootResult, result.Value<string>("error") ?? "失败", false);
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ShowResult(TextBlock el, string msg, bool ok)
|
||||||
|
{
|
||||||
|
el.Text = msg;
|
||||||
|
el.Foreground = new System.Windows.Media.SolidColorBrush(
|
||||||
|
(System.Windows.Media.Color)System.Windows.Media.ColorConverter.ConvertFromString(
|
||||||
|
ok ? "#10B981" : "#EF4444"));
|
||||||
|
var timer = new System.Windows.Threading.DispatcherTimer { Interval = TimeSpan.FromSeconds(4) };
|
||||||
|
timer.Tick += (s, _) => { el.Text = ""; timer.Stop(); };
|
||||||
|
timer.Start();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
92
上位机/YKC/Pages/DashboardPage.xaml
Normal file
92
上位机/YKC/Pages/DashboardPage.xaml
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
<Page x:Class="YKC.DashboardPage"
|
||||||
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
Title="总览" Background="#F0F2F5">
|
||||||
|
|
||||||
|
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
||||||
|
<StackPanel Margin="24">
|
||||||
|
<!-- 统计卡片行 -->
|
||||||
|
<WrapPanel Margin="0,0,0,20">
|
||||||
|
<Border Background="White" CornerRadius="6" Width="240"
|
||||||
|
Padding="20,18" Margin="0,0,16,16">
|
||||||
|
<StackPanel>
|
||||||
|
<TextBlock Text="设备连接" Style="{StaticResource InfoLabel}"/>
|
||||||
|
<TextBlock x:Name="txtConnStatus" Text="--"
|
||||||
|
FontSize="20" FontWeight="SemiBold" Foreground="#1E293B"/>
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
<Border Background="White" CornerRadius="6" Width="240"
|
||||||
|
Padding="20,18" Margin="0,0,16,16">
|
||||||
|
<StackPanel>
|
||||||
|
<TextBlock Text="在线充电桩" Style="{StaticResource InfoLabel}"/>
|
||||||
|
<TextBlock x:Name="txtOnlineCount" Text="--"
|
||||||
|
FontSize="28" FontWeight="SemiBold" Foreground="#10B981"/>
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
<Border Background="White" CornerRadius="6" Width="240"
|
||||||
|
Padding="20,18" Margin="0,0,16,16">
|
||||||
|
<StackPanel>
|
||||||
|
<TextBlock Text="充电中" Style="{StaticResource InfoLabel}"/>
|
||||||
|
<TextBlock x:Name="txtChargingCount" Text="--"
|
||||||
|
FontSize="28" FontWeight="SemiBold" Foreground="#3B82F6"/>
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
</WrapPanel>
|
||||||
|
|
||||||
|
<!-- 标题 + 按钮 -->
|
||||||
|
<Grid Margin="0,0,0,12">
|
||||||
|
<TextBlock Text="充电桩列表" FontSize="15" FontWeight="SemiBold"
|
||||||
|
Foreground="#1E293B" VerticalAlignment="Center"/>
|
||||||
|
<Button Content="刷新" Style="{StaticResource BtnPrimary}"
|
||||||
|
Width="90" HorizontalAlignment="Right"
|
||||||
|
Click="Refresh_Click"/>
|
||||||
|
</Grid>
|
||||||
|
|
||||||
|
<!-- 表格 -->
|
||||||
|
<Border Background="White" CornerRadius="6" Padding="0">
|
||||||
|
<DataGrid x:Name="dgPiles" AutoGenerateColumns="False" IsReadOnly="True"
|
||||||
|
HeadersVisibility="Column" CanUserAddRows="False"
|
||||||
|
CanUserDeleteRows="False" RowHeight="40"
|
||||||
|
GridLinesVisibility="Horizontal"
|
||||||
|
HorizontalGridLinesBrush="#F1F5F9"
|
||||||
|
BorderThickness="0" Background="White">
|
||||||
|
<DataGrid.ColumnHeaderStyle>
|
||||||
|
<Style TargetType="DataGridColumnHeader">
|
||||||
|
<Setter Property="Background" Value="#F8FAFC"/>
|
||||||
|
<Setter Property="Foreground" Value="#64748B"/>
|
||||||
|
<Setter Property="FontSize" Value="12"/>
|
||||||
|
<Setter Property="FontWeight" Value="SemiBold"/>
|
||||||
|
<Setter Property="Padding" Value="16,10"/>
|
||||||
|
<Setter Property="BorderBrush" Value="#E2E8F0"/>
|
||||||
|
<Setter Property="BorderThickness" Value="0,0,0,1"/>
|
||||||
|
</Style>
|
||||||
|
</DataGrid.ColumnHeaderStyle>
|
||||||
|
<DataGrid.CellStyle>
|
||||||
|
<Style TargetType="DataGridCell">
|
||||||
|
<Setter Property="BorderThickness" Value="0"/>
|
||||||
|
<Setter Property="FontSize" Value="13"/>
|
||||||
|
<Setter Property="Padding" Value="16,8"/>
|
||||||
|
<Setter Property="Template">
|
||||||
|
<Setter.Value>
|
||||||
|
<ControlTemplate TargetType="DataGridCell">
|
||||||
|
<Border Background="{TemplateBinding Background}">
|
||||||
|
<ContentPresenter Margin="{TemplateBinding Padding}"
|
||||||
|
VerticalAlignment="Center"/>
|
||||||
|
</Border>
|
||||||
|
</ControlTemplate>
|
||||||
|
</Setter.Value>
|
||||||
|
</Setter>
|
||||||
|
</Style>
|
||||||
|
</DataGrid.CellStyle>
|
||||||
|
<DataGrid.Columns>
|
||||||
|
<DataGridTextColumn Header="#" Width="50" Binding="{Binding Index}"/>
|
||||||
|
<DataGridTextColumn Header="序列号" Width="*" Binding="{Binding Serial}"/>
|
||||||
|
<DataGridTextColumn Header="桩状态" Width="80" Binding="{Binding StatusText}"/>
|
||||||
|
<DataGridTextColumn Header="枪1" Width="80" Binding="{Binding Gun1Text}"/>
|
||||||
|
<DataGridTextColumn Header="枪2" Width="80" Binding="{Binding Gun2Text}"/>
|
||||||
|
</DataGrid.Columns>
|
||||||
|
</DataGrid>
|
||||||
|
</Border>
|
||||||
|
</StackPanel>
|
||||||
|
</ScrollViewer>
|
||||||
|
</Page>
|
||||||
105
上位机/YKC/Pages/DashboardPage.xaml.cs
Normal file
105
上位机/YKC/Pages/DashboardPage.xaml.cs
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.ObjectModel;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Controls;
|
||||||
|
using Newtonsoft.Json.Linq;
|
||||||
|
using OxyPlot;
|
||||||
|
|
||||||
|
namespace YKC
|
||||||
|
{
|
||||||
|
public partial class DashboardPage : Page
|
||||||
|
{
|
||||||
|
private Timer _timer;
|
||||||
|
|
||||||
|
public class PileRow
|
||||||
|
{
|
||||||
|
public int Index { get; set; }
|
||||||
|
public string Serial { get; set; } = "--";
|
||||||
|
public string StatusText { get; set; } = "--";
|
||||||
|
public string Gun1Text { get; set; } = "--";
|
||||||
|
public string Gun2Text { get; set; } = "--";
|
||||||
|
}
|
||||||
|
|
||||||
|
public ObservableCollection<PileRow> Rows { get; } = new ObservableCollection<PileRow>();
|
||||||
|
|
||||||
|
public DashboardPage()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
dgPiles.ItemsSource = Rows;
|
||||||
|
Loaded += (s, e) =>
|
||||||
|
{
|
||||||
|
Dispatcher.BeginInvoke(new Action(() => RefreshData()),
|
||||||
|
System.Windows.Threading.DispatcherPriority.Background);
|
||||||
|
_timer = new Timer((_) => Dispatcher.BeginInvoke(new Action(RefreshData)), null, 5000, 5000);
|
||||||
|
};
|
||||||
|
Unloaded += (s, e) => _timer?.Dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Refresh_Click(object sender, RoutedEventArgs e) => RefreshData();
|
||||||
|
|
||||||
|
private void RefreshData()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var result = UdpClientHolder.Instance.SendSync(new JObject
|
||||||
|
{
|
||||||
|
["cmd"] = Config.Cmd["GET_STATUS"]
|
||||||
|
});
|
||||||
|
if (result.Value<bool>("success") == false && result["piles"] == null)
|
||||||
|
{
|
||||||
|
Dispatcher.BeginInvoke(new Action(() => txtConnStatus.Text = "无响应"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Dispatcher.BeginInvoke(new Action(() => txtConnStatus.Text = "在线"));
|
||||||
|
|
||||||
|
var piles = result["piles"] as JArray ?? new JArray();
|
||||||
|
int online = 0, charging = 0;
|
||||||
|
var rows = new ObservableCollection<PileRow>();
|
||||||
|
|
||||||
|
foreach (var p in piles)
|
||||||
|
{
|
||||||
|
bool isOnline = p.Value<bool>("is_online");
|
||||||
|
if (isOnline) online++;
|
||||||
|
|
||||||
|
var guns = p["guns"] as JArray ?? new JArray();
|
||||||
|
foreach (var g in guns)
|
||||||
|
if (g.Value<int?>("status") == 3) charging++;
|
||||||
|
|
||||||
|
rows.Add(new PileRow
|
||||||
|
{
|
||||||
|
Index = rows.Count + 1,
|
||||||
|
Serial = p.Value<string>("serial") ?? "--",
|
||||||
|
StatusText = isOnline ? "在线" : "离线",
|
||||||
|
Gun1Text = guns.Count > 0 ? GunStatusText(guns[0].Value<int>("status")) : "--",
|
||||||
|
Gun2Text = guns.Count > 1 ? GunStatusText(guns[1].Value<int>("status")) : "--",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
Dispatcher.BeginInvoke(new Action(() =>
|
||||||
|
{
|
||||||
|
txtOnlineCount.Text = online.ToString();
|
||||||
|
txtChargingCount.Text = charging.ToString();
|
||||||
|
Rows.Clear();
|
||||||
|
foreach (var r in rows) Rows.Add(r);
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
catch { }
|
||||||
|
}
|
||||||
|
|
||||||
|
private string GunStatusText(int status)
|
||||||
|
{
|
||||||
|
switch (status)
|
||||||
|
{
|
||||||
|
case 0: return "离线";
|
||||||
|
case 1: return "故障";
|
||||||
|
case 2: return "空闲";
|
||||||
|
case 3: return "充电中";
|
||||||
|
default: return status.ToString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
145
上位机/YKC/Pages/GatewayPage.xaml
Normal file
145
上位机/YKC/Pages/GatewayPage.xaml
Normal file
@@ -0,0 +1,145 @@
|
|||||||
|
<Page x:Class="YKC.GatewayPage"
|
||||||
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
Title="网关管理" Background="#F0F2F5">
|
||||||
|
|
||||||
|
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
||||||
|
<StackPanel Margin="24">
|
||||||
|
<TextBlock Text="网关管理" FontSize="16" FontWeight="SemiBold"
|
||||||
|
Foreground="#1E293B" Margin="0,0,0,20"/>
|
||||||
|
|
||||||
|
<Grid Margin="0,0,0,14">
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="*"/>
|
||||||
|
<ColumnDefinition Width="*"/>
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
|
||||||
|
<!-- 网关基本信息 -->
|
||||||
|
<Border Grid.Column="0" Background="White" CornerRadius="6"
|
||||||
|
Margin="0,0,8,0" Padding="24">
|
||||||
|
<StackPanel>
|
||||||
|
<TextBlock Text="网关基本信息" FontSize="14" FontWeight="SemiBold"
|
||||||
|
Foreground="#1E293B" Margin="0,0,0,14"/>
|
||||||
|
|
||||||
|
<TextBlock Text="网关 ID" Style="{StaticResource InfoLabel}"/>
|
||||||
|
<TextBlock x:Name="txtGwId" Text="--" Style="{StaticResource InfoValue}"
|
||||||
|
FontFamily="Consolas"/>
|
||||||
|
|
||||||
|
<TextBlock Text="软件版本" Style="{StaticResource InfoLabel}"/>
|
||||||
|
<TextBlock x:Name="txtGwSw" Text="--" Style="{StaticResource InfoValue}"/>
|
||||||
|
|
||||||
|
<TextBlock Text="硬件版本" Style="{StaticResource InfoLabel}"/>
|
||||||
|
<TextBlock x:Name="txtGwHw" Text="--" Style="{StaticResource InfoValue}"/>
|
||||||
|
|
||||||
|
<TextBlock Text="运行时间" Style="{StaticResource InfoLabel}"/>
|
||||||
|
<TextBlock x:Name="txtGwUptime" Text="--" Style="{StaticResource InfoValue}"/>
|
||||||
|
|
||||||
|
<Grid>
|
||||||
|
<Button Content="刷新" Style="{StaticResource BtnPrimary}" Width="80"
|
||||||
|
Click="RefreshGwInfo_Click" Margin="0,4,0,0"/>
|
||||||
|
<TextBlock x:Name="txtGwStatus" FontSize="12"
|
||||||
|
VerticalAlignment="Center" Margin="92,4,0,0"/>
|
||||||
|
</Grid>
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
|
||||||
|
<!-- 4G 状态 -->
|
||||||
|
<Border Grid.Column="1" Background="White" CornerRadius="6"
|
||||||
|
Margin="8,0,0,0" Padding="24">
|
||||||
|
<StackPanel>
|
||||||
|
<TextBlock Text="4G 状态" FontSize="14" FontWeight="SemiBold"
|
||||||
|
Foreground="#1E293B" Margin="0,0,0,14"/>
|
||||||
|
|
||||||
|
<TextBlock Text="SIM 卡号" Style="{StaticResource InfoLabel}"/>
|
||||||
|
<TextBlock x:Name="txtSim" Text="--" Style="{StaticResource InfoValue}"
|
||||||
|
FontFamily="Consolas"/>
|
||||||
|
|
||||||
|
<TextBlock Text="网络状态" Style="{StaticResource InfoLabel}"/>
|
||||||
|
<TextBlock x:Name="txtNetStatus" Text="--" Style="{StaticResource InfoValue}"
|
||||||
|
Foreground="#10B981"/>
|
||||||
|
|
||||||
|
<TextBlock Text="信号强度" Style="{StaticResource InfoLabel}"/>
|
||||||
|
<TextBlock x:Name="txtSignal" Text="--" Style="{StaticResource InfoValue}"/>
|
||||||
|
|
||||||
|
<TextBlock Text="运营商" Style="{StaticResource InfoLabel}"/>
|
||||||
|
<TextBlock x:Name="txtIsp" Text="--" Style="{StaticResource InfoValue}"/>
|
||||||
|
|
||||||
|
<Grid>
|
||||||
|
<Button Content="刷新" Style="{StaticResource BtnPrimary}" Width="80"
|
||||||
|
Click="Refresh4G_Click" Margin="0,4,0,0"/>
|
||||||
|
<TextBlock x:Name="txt4GStatus" FontSize="12"
|
||||||
|
VerticalAlignment="Center" Margin="92,4,0,0"/>
|
||||||
|
</Grid>
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
</Grid>
|
||||||
|
|
||||||
|
<Grid>
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="*"/>
|
||||||
|
<ColumnDefinition Width="*"/>
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
|
||||||
|
<!-- 云服务器配置 -->
|
||||||
|
<Border Grid.Column="0" Background="White" CornerRadius="6"
|
||||||
|
Margin="0,0,8,0" Padding="24">
|
||||||
|
<StackPanel>
|
||||||
|
<TextBlock Text="云服务器配置" FontSize="14" FontWeight="SemiBold"
|
||||||
|
Foreground="#1E293B" Margin="0,0,0,14"/>
|
||||||
|
|
||||||
|
<TextBlock Text="服务器地址 (IP 或域名)" Style="{StaticResource FieldLabel}"/>
|
||||||
|
<TextBox x:Name="txtCloudHost" Width="220"
|
||||||
|
Style="{StaticResource FormInput}" Margin="0,0,0,12"/>
|
||||||
|
|
||||||
|
<TextBlock Text="端口号" Style="{StaticResource FieldLabel}"/>
|
||||||
|
<TextBox x:Name="txtCloudPort" Width="120"
|
||||||
|
Style="{StaticResource FormInput}" Margin="0,0,0,16"/>
|
||||||
|
|
||||||
|
<WrapPanel>
|
||||||
|
<Button Content="查 询" Style="{StaticResource BtnOutline}" Width="80"
|
||||||
|
Click="LoadCloudConfig_Click"/>
|
||||||
|
<Button Content="保 存" Style="{StaticResource BtnPrimary}" Width="80"
|
||||||
|
Click="SaveCloudConfig_Click" Margin="8,0,0,0"/>
|
||||||
|
<TextBlock x:Name="txtCloudResult" Foreground="#10B981"
|
||||||
|
FontSize="13" VerticalAlignment="Center" Margin="12,0,0,0"/>
|
||||||
|
</WrapPanel>
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
|
||||||
|
<!-- 网络配置 -->
|
||||||
|
<Border Grid.Column="1" Background="White" CornerRadius="6"
|
||||||
|
Margin="8,0,0,0" Padding="24">
|
||||||
|
<StackPanel>
|
||||||
|
<TextBlock Text="有线网络配置" FontSize="14" FontWeight="SemiBold"
|
||||||
|
Foreground="#1E293B" Margin="0,0,0,14"/>
|
||||||
|
|
||||||
|
<TextBlock Text="IP 地址" Style="{StaticResource FieldLabel}"/>
|
||||||
|
<TextBox x:Name="txtNetIp" Width="200"
|
||||||
|
Style="{StaticResource FormInput}" Margin="0,0,0,10"/>
|
||||||
|
|
||||||
|
<TextBlock Text="子网掩码" Style="{StaticResource FieldLabel}"/>
|
||||||
|
<TextBox x:Name="txtNetMask" Width="200"
|
||||||
|
Style="{StaticResource FormInput}" Margin="0,0,0,10"/>
|
||||||
|
|
||||||
|
<TextBlock Text="默认网关" Style="{StaticResource FieldLabel}"/>
|
||||||
|
<TextBox x:Name="txtNetGw" Width="200"
|
||||||
|
Style="{StaticResource FormInput}" Margin="0,0,0,10"/>
|
||||||
|
|
||||||
|
<TextBlock Text="DNS 服务器" Style="{StaticResource FieldLabel}"/>
|
||||||
|
<TextBox x:Name="txtNetDns" Width="200"
|
||||||
|
Style="{StaticResource FormInput}" Margin="0,0,0,16"/>
|
||||||
|
|
||||||
|
<WrapPanel>
|
||||||
|
<Button Content="查 询" Style="{StaticResource BtnOutline}" Width="80"
|
||||||
|
Click="LoadNetConfig_Click"/>
|
||||||
|
<Button Content="保 存" Style="{StaticResource BtnPrimary}" Width="80"
|
||||||
|
Click="SaveNetConfig_Click" Margin="8,0,0,0"/>
|
||||||
|
<TextBlock x:Name="txtNetResult" Foreground="#10B981"
|
||||||
|
FontSize="13" VerticalAlignment="Center" Margin="12,0,0,0"/>
|
||||||
|
</WrapPanel>
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
</Grid>
|
||||||
|
</StackPanel>
|
||||||
|
</ScrollViewer>
|
||||||
|
</Page>
|
||||||
227
上位机/YKC/Pages/GatewayPage.xaml.cs
Normal file
227
上位机/YKC/Pages/GatewayPage.xaml.cs
Normal file
@@ -0,0 +1,227 @@
|
|||||||
|
using System;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Controls;
|
||||||
|
using Newtonsoft.Json.Linq;
|
||||||
|
|
||||||
|
namespace YKC
|
||||||
|
{
|
||||||
|
public partial class GatewayPage : Page
|
||||||
|
{
|
||||||
|
private static readonly Regex IpRegex = new Regex(
|
||||||
|
@"^(?:(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)$");
|
||||||
|
private static readonly Regex DomainRegex = new Regex(
|
||||||
|
@"^(?!-)[A-Za-z0-9-]{1,63}(?<!-)(\.[A-Za-z]{2,})+$");
|
||||||
|
|
||||||
|
public GatewayPage()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
Loaded += (s, e) =>
|
||||||
|
{
|
||||||
|
Dispatcher.BeginInvoke(new Action(() =>
|
||||||
|
{
|
||||||
|
if (txtGwId != null) RefreshAll();
|
||||||
|
}), System.Windows.Threading.DispatcherPriority.Background);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool IsValidIp(string s) => IpRegex.IsMatch(s);
|
||||||
|
private bool IsValidDomain(string s) => DomainRegex.IsMatch(s);
|
||||||
|
private bool IsValidHost(string s) => IsValidIp(s) || IsValidDomain(s);
|
||||||
|
|
||||||
|
private void ShowResult(TextBlock el, string msg, bool ok)
|
||||||
|
{
|
||||||
|
el.Text = msg;
|
||||||
|
el.Foreground = new System.Windows.Media.SolidColorBrush(
|
||||||
|
(System.Windows.Media.Color)System.Windows.Media.ColorConverter.ConvertFromString(
|
||||||
|
ok ? "#10B981" : "#EF4444"));
|
||||||
|
var timer = new System.Windows.Threading.DispatcherTimer { Interval = TimeSpan.FromSeconds(3) };
|
||||||
|
timer.Tick += (s, _) => { el.Text = ""; timer.Stop(); };
|
||||||
|
timer.Start();
|
||||||
|
}
|
||||||
|
|
||||||
|
private string FormatUptime(int sec)
|
||||||
|
{
|
||||||
|
if (sec <= 0) return "--";
|
||||||
|
int d = sec / 86400;
|
||||||
|
int h = (sec % 86400) / 3600;
|
||||||
|
int m = (sec % 3600) / 60;
|
||||||
|
string result = "";
|
||||||
|
if (d > 0) result += d + "天";
|
||||||
|
if (h > 0) result += h + "时";
|
||||||
|
if (m > 0) result += m + "分";
|
||||||
|
return result.Length > 0 ? result : sec + "秒";
|
||||||
|
}
|
||||||
|
|
||||||
|
private void RefreshAll()
|
||||||
|
{
|
||||||
|
RefreshGwInfo();
|
||||||
|
Refresh4G();
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void RefreshGwInfo()
|
||||||
|
{
|
||||||
|
txtGwStatus.Text = "加载中...";
|
||||||
|
txtGwStatus.Foreground = new System.Windows.Media.SolidColorBrush(
|
||||||
|
(System.Windows.Media.Color)System.Windows.Media.ColorConverter.ConvertFromString("#64748B"));
|
||||||
|
await System.Threading.Tasks.Task.Run(() =>
|
||||||
|
{
|
||||||
|
var result = UdpClientHolder.Instance.SendSync(new JObject { ["cmd"] = Config.Cmd["GET_GW_INFO"] });
|
||||||
|
Dispatcher.BeginInvoke(new Action(() =>
|
||||||
|
{
|
||||||
|
if (result.Value<bool>("success") && result["device_id"] != null)
|
||||||
|
{
|
||||||
|
txtGwId.Text = result.Value<string>("device_id") ?? "--";
|
||||||
|
txtGwSw.Text = result.Value<string>("software_ver") ?? result.Value<string>("sw_ver") ?? "--";
|
||||||
|
txtGwHw.Text = result.Value<string>("hardware_ver") ?? result.Value<string>("hw_ver") ?? "--";
|
||||||
|
txtGwUptime.Text = FormatUptime(result.Value<int?>("uptime") ?? 0);
|
||||||
|
txtGwStatus.Text = "";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
txtGwId.Text = "--"; txtGwSw.Text = "--"; txtGwHw.Text = "--"; txtGwUptime.Text = "--";
|
||||||
|
ShowResult(txtGwStatus, result.Value<string>("error") ?? "查询超时", false);
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void Refresh4G()
|
||||||
|
{
|
||||||
|
txt4GStatus.Text = "加载中...";
|
||||||
|
txt4GStatus.Foreground = new System.Windows.Media.SolidColorBrush(
|
||||||
|
(System.Windows.Media.Color)System.Windows.Media.ColorConverter.ConvertFromString("#64748B"));
|
||||||
|
await System.Threading.Tasks.Task.Run(() =>
|
||||||
|
{
|
||||||
|
var result = UdpClientHolder.Instance.SendSync(new JObject { ["cmd"] = Config.Cmd["GET_4G_STATUS"] });
|
||||||
|
Dispatcher.BeginInvoke(new Action(() =>
|
||||||
|
{
|
||||||
|
if (result.Value<bool>("success") && result["sim"] != null)
|
||||||
|
{
|
||||||
|
txtSim.Text = result.Value<string>("sim") ?? result.Value<string>("iccid") ?? "--";
|
||||||
|
txtNetStatus.Text = result.Value<string>("net_status") ?? result.Value<string>("status_text") ?? "--";
|
||||||
|
txtSignal.Text = result.Value<string>("signal") != null ? result.Value<int>("signal") + " dBm" : "--";
|
||||||
|
txtIsp.Text = result.Value<string>("isp") ?? result.Value<string>("operator") ?? "--";
|
||||||
|
txt4GStatus.Text = "";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
txtSim.Text = "--"; txtNetStatus.Text = "--"; txtSignal.Text = "--"; txtIsp.Text = "--";
|
||||||
|
ShowResult(txt4GStatus, result.Value<string>("error") ?? "查询超时", false);
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void RefreshGwInfo_Click(object sender, RoutedEventArgs e) => RefreshGwInfo();
|
||||||
|
private void Refresh4G_Click(object sender, RoutedEventArgs e) => Refresh4G();
|
||||||
|
|
||||||
|
private async void LoadCloudConfig_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
txtCloudResult.Text = "加载中...";
|
||||||
|
txtCloudResult.Foreground = new System.Windows.Media.SolidColorBrush(
|
||||||
|
(System.Windows.Media.Color)System.Windows.Media.ColorConverter.ConvertFromString("#64748B"));
|
||||||
|
await System.Threading.Tasks.Task.Run(() =>
|
||||||
|
{
|
||||||
|
var result = UdpClientHolder.Instance.SendSync(new JObject { ["cmd"] = Config.Cmd["GET_CLOUD_CONFIG"] });
|
||||||
|
Dispatcher.BeginInvoke(new Action(() =>
|
||||||
|
{
|
||||||
|
txtCloudResult.Text = "";
|
||||||
|
if (result.Value<bool>("success") && result["host"] != null)
|
||||||
|
{
|
||||||
|
txtCloudHost.Text = result.Value<string>("host") ?? "";
|
||||||
|
txtCloudPort.Text = result.Value<string>("port") ?? result.Value<int?>("port")?.ToString() ?? "";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ShowResult(txtCloudResult, result.Value<string>("error") ?? "查询超时", false);
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void SaveCloudConfig_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
string host = txtCloudHost.Text.Trim();
|
||||||
|
string port = txtCloudPort.Text.Trim();
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(host)) { ShowResult(txtCloudResult, "请输入服务器地址", false); return; }
|
||||||
|
if (!IsValidHost(host)) { ShowResult(txtCloudResult, "地址格式错误", false); return; }
|
||||||
|
if (string.IsNullOrEmpty(port) || !int.TryParse(port, out int p) || p < 1 || p > 65535)
|
||||||
|
{ ShowResult(txtCloudResult, "端口范围 1-65535", false); return; }
|
||||||
|
|
||||||
|
ShowResult(txtCloudResult, "保存中...", true);
|
||||||
|
await System.Threading.Tasks.Task.Run(() =>
|
||||||
|
{
|
||||||
|
var result = UdpClientHolder.Instance.SendSync(new JObject
|
||||||
|
{
|
||||||
|
["cmd"] = Config.Cmd["SET_CLOUD_CONFIG"],
|
||||||
|
["host"] = host,
|
||||||
|
["port"] = p
|
||||||
|
});
|
||||||
|
Dispatcher.BeginInvoke(new Action(() =>
|
||||||
|
{
|
||||||
|
ShowResult(txtCloudResult, result.Value<bool>("success") ? "保存成功" : (result.Value<string>("error") ?? "失败"), result.Value<bool>("success"));
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void LoadNetConfig_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
txtNetResult.Text = "加载中...";
|
||||||
|
txtNetResult.Foreground = new System.Windows.Media.SolidColorBrush(
|
||||||
|
(System.Windows.Media.Color)System.Windows.Media.ColorConverter.ConvertFromString("#64748B"));
|
||||||
|
await System.Threading.Tasks.Task.Run(() =>
|
||||||
|
{
|
||||||
|
var result = UdpClientHolder.Instance.SendSync(new JObject { ["cmd"] = Config.Cmd["GET_NET_CONFIG"] });
|
||||||
|
Dispatcher.BeginInvoke(new Action(() =>
|
||||||
|
{
|
||||||
|
txtNetResult.Text = "";
|
||||||
|
if (result.Value<bool>("success") && result["ip"] != null)
|
||||||
|
{
|
||||||
|
txtNetIp.Text = result.Value<string>("ip") ?? "";
|
||||||
|
txtNetMask.Text = result.Value<string>("mask") ?? result.Value<string>("netmask") ?? "";
|
||||||
|
txtNetGw.Text = result.Value<string>("gateway") ?? result.Value<string>("gw") ?? "";
|
||||||
|
txtNetDns.Text = result.Value<string>("dns") ?? "";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ShowResult(txtNetResult, result.Value<string>("error") ?? "查询超时", false);
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void SaveNetConfig_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
string ip = txtNetIp.Text.Trim();
|
||||||
|
string mask = txtNetMask.Text.Trim();
|
||||||
|
string gw = txtNetGw.Text.Trim();
|
||||||
|
string dns = txtNetDns.Text.Trim();
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(ip)) { ShowResult(txtNetResult, "请输入IP地址", false); return; }
|
||||||
|
if (!IsValidIp(ip)) { ShowResult(txtNetResult, "IP格式错误", false); return; }
|
||||||
|
if (string.IsNullOrEmpty(mask)) { ShowResult(txtNetResult, "请输入子网掩码", false); return; }
|
||||||
|
if (!IsValidIp(mask)) { ShowResult(txtNetResult, "掩码格式错误", false); return; }
|
||||||
|
if (!string.IsNullOrEmpty(gw) && !IsValidIp(gw)) { ShowResult(txtNetResult, "网关格式错误", false); return; }
|
||||||
|
if (!string.IsNullOrEmpty(dns) && !IsValidIp(dns)) { ShowResult(txtNetResult, "DNS格式错误", false); return; }
|
||||||
|
|
||||||
|
ShowResult(txtNetResult, "保存中...", true);
|
||||||
|
await System.Threading.Tasks.Task.Run(() =>
|
||||||
|
{
|
||||||
|
var result = UdpClientHolder.Instance.SendSync(new JObject
|
||||||
|
{
|
||||||
|
["cmd"] = Config.Cmd["SET_NET_CONFIG"],
|
||||||
|
["ip"] = ip,
|
||||||
|
["mask"] = mask,
|
||||||
|
["gateway"] = gw,
|
||||||
|
["dns"] = dns
|
||||||
|
});
|
||||||
|
Dispatcher.BeginInvoke(new Action(() =>
|
||||||
|
{
|
||||||
|
ShowResult(txtNetResult, result.Value<bool>("success") ? "保存成功,重启生效" : (result.Value<string>("error") ?? "失败"), result.Value<bool>("success"));
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
170
上位机/YKC/Pages/RealtimePage.xaml
Normal file
170
上位机/YKC/Pages/RealtimePage.xaml
Normal file
@@ -0,0 +1,170 @@
|
|||||||
|
<Page x:Class="YKC.RealtimePage"
|
||||||
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:oxy="http://oxyplot.org/wpf"
|
||||||
|
Title="实时监控" Background="#F0F2F5">
|
||||||
|
|
||||||
|
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
||||||
|
<StackPanel Margin="20">
|
||||||
|
<!-- 标题 + 选择器 -->
|
||||||
|
<Grid Margin="0,0,0,12">
|
||||||
|
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
|
||||||
|
<TextBlock Text="实时监控" FontSize="16" FontWeight="SemiBold"
|
||||||
|
Foreground="#1E293B"/>
|
||||||
|
</StackPanel>
|
||||||
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
|
||||||
|
<TextBlock Text="桩" Foreground="#64748B" FontSize="13"
|
||||||
|
VerticalAlignment="Center" Margin="0,0,6,0"/>
|
||||||
|
<ComboBox x:Name="cmbPile" Style="{StaticResource StyledCombo}" Width="80"
|
||||||
|
SelectedIndex="0" SelectionChanged="PileGun_Changed">
|
||||||
|
<ComboBoxItem>桩 01</ComboBoxItem><ComboBoxItem>桩 02</ComboBoxItem>
|
||||||
|
<ComboBoxItem>桩 03</ComboBoxItem><ComboBoxItem>桩 04</ComboBoxItem>
|
||||||
|
<ComboBoxItem>桩 05</ComboBoxItem><ComboBoxItem>桩 06</ComboBoxItem>
|
||||||
|
</ComboBox>
|
||||||
|
<TextBlock Text="枪" Foreground="#64748B" FontSize="13"
|
||||||
|
VerticalAlignment="Center" Margin="12,0,6,0"/>
|
||||||
|
<ComboBox x:Name="cmbGun" Style="{StaticResource StyledCombo}" Width="70"
|
||||||
|
SelectedIndex="0" SelectionChanged="PileGun_Changed">
|
||||||
|
<ComboBoxItem>枪 1</ComboBoxItem><ComboBoxItem>枪 2</ComboBoxItem>
|
||||||
|
</ComboBox>
|
||||||
|
</StackPanel>
|
||||||
|
</Grid>
|
||||||
|
|
||||||
|
<!-- 数值卡片行1 -->
|
||||||
|
<WrapPanel Margin="0,0,0,6">
|
||||||
|
<Border Background="White" CornerRadius="6" Width="170"
|
||||||
|
Padding="14,12" Margin="0,0,8,8">
|
||||||
|
<StackPanel>
|
||||||
|
<TextBlock Text="电流 (A)" Style="{StaticResource InfoLabel}"/>
|
||||||
|
<TextBlock x:Name="txtCurrent" Text="--" FontSize="22"
|
||||||
|
FontWeight="SemiBold" Foreground="#10B981"/>
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
<Border Background="White" CornerRadius="6" Width="170"
|
||||||
|
Padding="14,12" Margin="0,0,8,8">
|
||||||
|
<StackPanel>
|
||||||
|
<TextBlock Text="电压 (V)" Style="{StaticResource InfoLabel}"/>
|
||||||
|
<TextBlock x:Name="txtVoltage" Text="--" FontSize="22"
|
||||||
|
FontWeight="SemiBold" Foreground="#1E293B"/>
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
<Border Background="White" CornerRadius="6" Width="170"
|
||||||
|
Padding="14,12" Margin="0,0,8,8">
|
||||||
|
<StackPanel>
|
||||||
|
<TextBlock Text="功率 (kW)" Style="{StaticResource InfoLabel}"/>
|
||||||
|
<TextBlock x:Name="txtPower" Text="--" FontSize="22"
|
||||||
|
FontWeight="SemiBold" Foreground="#1E293B"/>
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
<Border Background="White" CornerRadius="6" Width="170"
|
||||||
|
Padding="14,12" Margin="0,0,8,8">
|
||||||
|
<StackPanel>
|
||||||
|
<TextBlock Text="度数 (kWh)" Style="{StaticResource InfoLabel}"/>
|
||||||
|
<TextBlock x:Name="txtEnergy" Text="--" FontSize="22"
|
||||||
|
FontWeight="SemiBold" Foreground="#1E293B"/>
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
<Border Background="White" CornerRadius="6" Width="170"
|
||||||
|
Padding="14,12" Margin="0,0,8,8">
|
||||||
|
<StackPanel>
|
||||||
|
<TextBlock Text="总金额 (元)" Style="{StaticResource InfoLabel}"/>
|
||||||
|
<TextBlock x:Name="txtTotalAmount" Text="--" FontSize="22"
|
||||||
|
FontWeight="SemiBold" Foreground="#FF5722"/>
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
<Border Background="White" CornerRadius="6" Width="150"
|
||||||
|
Padding="14,12" Margin="0,0,8,8">
|
||||||
|
<StackPanel>
|
||||||
|
<TextBlock Text="状态" Style="{StaticResource InfoLabel}"/>
|
||||||
|
<TextBlock x:Name="txtStatus" Text="--" FontSize="22"
|
||||||
|
FontWeight="SemiBold" Foreground="#3B82F6"/>
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
</WrapPanel>
|
||||||
|
|
||||||
|
<!-- 订单信息行 -->
|
||||||
|
<WrapPanel Margin="0,0,0,10">
|
||||||
|
<Border Background="White" CornerRadius="6" Width="280"
|
||||||
|
Padding="14,12" Margin="0,0,8,8">
|
||||||
|
<StackPanel>
|
||||||
|
<TextBlock Text="订单编号" Style="{StaticResource InfoLabel}"/>
|
||||||
|
<TextBlock x:Name="txtOrderNo" Text="--" FontSize="13"
|
||||||
|
FontWeight="SemiBold" Foreground="#1E293B"
|
||||||
|
FontFamily="Consolas" TextWrapping="Wrap"/>
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
<Border Background="White" CornerRadius="6" Width="140"
|
||||||
|
Padding="14,12" Margin="0,0,8,8">
|
||||||
|
<StackPanel>
|
||||||
|
<TextBlock Text="目标 SOC" Style="{StaticResource InfoLabel}"/>
|
||||||
|
<TextBlock x:Name="txtSoc" Text="--" FontSize="22"
|
||||||
|
FontWeight="SemiBold" Foreground="#1E293B"/>
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
<Border Background="White" CornerRadius="6" Width="180"
|
||||||
|
Padding="14,12" Margin="0,0,8,8">
|
||||||
|
<StackPanel>
|
||||||
|
<TextBlock Text="累计充电时间" Style="{StaticResource InfoLabel}"/>
|
||||||
|
<TextBlock x:Name="txtCumTime" Text="--" FontSize="18"
|
||||||
|
FontWeight="SemiBold" Foreground="#1E293B"
|
||||||
|
FontFamily="Consolas"/>
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
<Border Background="White" CornerRadius="6" Width="180"
|
||||||
|
Padding="14,12" Margin="0,0,8,8">
|
||||||
|
<StackPanel>
|
||||||
|
<TextBlock Text="剩余时间" Style="{StaticResource InfoLabel}"/>
|
||||||
|
<TextBlock x:Name="txtRemTime" Text="--" FontSize="18"
|
||||||
|
FontWeight="SemiBold" Foreground="#1E293B"
|
||||||
|
FontFamily="Consolas"/>
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
</WrapPanel>
|
||||||
|
|
||||||
|
<!-- 图表 2x2 -->
|
||||||
|
<Grid Height="580">
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="290"/>
|
||||||
|
<RowDefinition Height="290"/>
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="*"/>
|
||||||
|
<ColumnDefinition Width="*"/>
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
|
||||||
|
<Border Grid.Row="0" Grid.Column="0" Background="White" CornerRadius="6"
|
||||||
|
Margin="0,0,7,7">
|
||||||
|
<Grid>
|
||||||
|
<TextBlock Text="电流曲线 (A)" Foreground="#94A3B8" FontSize="12"
|
||||||
|
Margin="14,10,0,0" VerticalAlignment="Top"/>
|
||||||
|
<oxy:PlotView x:Name="plotCurrent" Margin="8,32,8,8"/>
|
||||||
|
</Grid>
|
||||||
|
</Border>
|
||||||
|
<Border Grid.Row="0" Grid.Column="1" Background="White" CornerRadius="6"
|
||||||
|
Margin="7,0,0,7">
|
||||||
|
<Grid>
|
||||||
|
<TextBlock Text="电压曲线 (V)" Foreground="#94A3B8" FontSize="12"
|
||||||
|
Margin="14,10,0,0" VerticalAlignment="Top"/>
|
||||||
|
<oxy:PlotView x:Name="plotVoltage" Margin="8,32,8,8"/>
|
||||||
|
</Grid>
|
||||||
|
</Border>
|
||||||
|
<Border Grid.Row="1" Grid.Column="0" Background="White" CornerRadius="6"
|
||||||
|
Margin="0,7,7,0">
|
||||||
|
<Grid>
|
||||||
|
<TextBlock Text="功率曲线 (kW)" Foreground="#94A3B8" FontSize="12"
|
||||||
|
Margin="14,10,0,0" VerticalAlignment="Top"/>
|
||||||
|
<oxy:PlotView x:Name="plotPower" Margin="8,32,8,8"/>
|
||||||
|
</Grid>
|
||||||
|
</Border>
|
||||||
|
<Border Grid.Row="1" Grid.Column="1" Background="White" CornerRadius="6"
|
||||||
|
Margin="7,7,0,0">
|
||||||
|
<Grid>
|
||||||
|
<TextBlock Text="费用明细 (元)" Foreground="#94A3B8" FontSize="12"
|
||||||
|
Margin="14,10,0,0" VerticalAlignment="Top"/>
|
||||||
|
<oxy:PlotView x:Name="plotAmount" Margin="8,32,8,8"/>
|
||||||
|
</Grid>
|
||||||
|
</Border>
|
||||||
|
</Grid>
|
||||||
|
</StackPanel>
|
||||||
|
</ScrollViewer>
|
||||||
|
</Page>
|
||||||
214
上位机/YKC/Pages/RealtimePage.xaml.cs
Normal file
214
上位机/YKC/Pages/RealtimePage.xaml.cs
Normal file
@@ -0,0 +1,214 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Controls;
|
||||||
|
using System.Windows.Media;
|
||||||
|
using Newtonsoft.Json.Linq;
|
||||||
|
using OxyPlot;
|
||||||
|
using OxyPlot.Axes;
|
||||||
|
using OxyPlot.Series;
|
||||||
|
|
||||||
|
namespace YKC
|
||||||
|
{
|
||||||
|
public partial class RealtimePage : Page
|
||||||
|
{
|
||||||
|
private Timer _pollTimer;
|
||||||
|
private int _currentPile = 1;
|
||||||
|
private int _currentGun = 1;
|
||||||
|
|
||||||
|
public RealtimePage()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
InitLinePlot(plotCurrent, OxyColor.Parse("#3B82F6"));
|
||||||
|
InitLinePlot(plotVoltage, OxyColor.Parse("#8B5CF6"));
|
||||||
|
InitLinePlot(plotPower, OxyColor.Parse("#F59E0B"));
|
||||||
|
InitBarPlot(plotAmount);
|
||||||
|
|
||||||
|
Loaded += (s, e) =>
|
||||||
|
{
|
||||||
|
Dispatcher.BeginInvoke(new Action(RefreshData),
|
||||||
|
System.Windows.Threading.DispatcherPriority.Background);
|
||||||
|
_pollTimer = new Timer((_) =>
|
||||||
|
Dispatcher.BeginInvoke(new Action(RefreshData)), null, 2000, 2000);
|
||||||
|
};
|
||||||
|
Unloaded += (s, e) => _pollTimer?.Dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void InitLinePlot(OxyPlot.Wpf.PlotView pv, OxyColor color)
|
||||||
|
{
|
||||||
|
var model = new PlotModel { PlotAreaBorderColor = OxyColors.Transparent };
|
||||||
|
model.Axes.Add(new DateTimeAxis
|
||||||
|
{
|
||||||
|
Position = AxisPosition.Bottom,
|
||||||
|
TextColor = OxyColor.Parse("#94A3B8"),
|
||||||
|
AxislineColor = OxyColor.Parse("#E2E8F0"),
|
||||||
|
TicklineColor = OxyColor.Parse("#E2E8F0"),
|
||||||
|
MajorGridlineColor = OxyColor.Parse("#F1F5F9"),
|
||||||
|
StringFormat = "HH:mm:ss",
|
||||||
|
FontSize = 10
|
||||||
|
});
|
||||||
|
model.Axes.Add(new LinearAxis
|
||||||
|
{
|
||||||
|
Position = AxisPosition.Left,
|
||||||
|
TextColor = OxyColor.Parse("#94A3B8"),
|
||||||
|
AxislineColor = OxyColors.Transparent,
|
||||||
|
TicklineColor = OxyColors.Transparent,
|
||||||
|
MajorGridlineStyle = LineStyle.Dash,
|
||||||
|
MajorGridlineColor = OxyColor.Parse("#F1F5F9"),
|
||||||
|
FontSize = 10,
|
||||||
|
MinimumPadding = 0.1,
|
||||||
|
MaximumPadding = 0.1
|
||||||
|
});
|
||||||
|
model.Series.Add(new LineSeries
|
||||||
|
{
|
||||||
|
Color = color,
|
||||||
|
StrokeThickness = 2,
|
||||||
|
MarkerType = MarkerType.None,
|
||||||
|
CanTrackerInterpolatePoints = false
|
||||||
|
});
|
||||||
|
pv.Model = model;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void InitBarPlot(OxyPlot.Wpf.PlotView pv)
|
||||||
|
{
|
||||||
|
var model = new PlotModel { PlotAreaBorderColor = OxyColors.Transparent };
|
||||||
|
var catAxis = new CategoryAxis
|
||||||
|
{
|
||||||
|
Position = AxisPosition.Bottom,
|
||||||
|
TextColor = OxyColor.Parse("#64748B"),
|
||||||
|
FontSize = 12,
|
||||||
|
AxislineColor = OxyColor.Parse("#E2E8F0"),
|
||||||
|
TicklineColor = OxyColor.Parse("#E2E8F0")
|
||||||
|
};
|
||||||
|
catAxis.Labels.Add("服务费");
|
||||||
|
catAxis.Labels.Add("电费");
|
||||||
|
catAxis.Labels.Add("总金额");
|
||||||
|
model.Axes.Add(catAxis);
|
||||||
|
model.Axes.Add(new LinearAxis
|
||||||
|
{
|
||||||
|
Position = AxisPosition.Left,
|
||||||
|
Title = "元",
|
||||||
|
TextColor = OxyColor.Parse("#94A3B8"),
|
||||||
|
FontSize = 10,
|
||||||
|
AxislineColor = OxyColors.Transparent,
|
||||||
|
TicklineColor = OxyColors.Transparent,
|
||||||
|
MajorGridlineStyle = LineStyle.Dash,
|
||||||
|
MajorGridlineColor = OxyColor.Parse("#F1F5F9"),
|
||||||
|
MinimumPadding = 0,
|
||||||
|
MaximumPadding = 0.15
|
||||||
|
});
|
||||||
|
model.Series.Add(new RectangleBarSeries { FillColor = OxyColor.Parse("#1E9FFF") });
|
||||||
|
model.Series.Add(new RectangleBarSeries { FillColor = OxyColor.Parse("#10B981") });
|
||||||
|
model.Series.Add(new RectangleBarSeries { FillColor = OxyColor.Parse("#6366F1") });
|
||||||
|
pv.Model = model;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void PileGun_Changed(object sender, SelectionChangedEventArgs e)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (cmbPile == null || cmbGun == null) return;
|
||||||
|
_currentPile = cmbPile.SelectedIndex + 1;
|
||||||
|
_currentGun = cmbGun.SelectedIndex + 1;
|
||||||
|
RefreshData();
|
||||||
|
}
|
||||||
|
catch { }
|
||||||
|
}
|
||||||
|
|
||||||
|
private void RefreshData()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (txtCurrent == null || plotCurrent == null || plotCurrent.Model == null) return;
|
||||||
|
var latest = PilesStoreHolder.Instance.GetLatest(_currentPile, _currentGun);
|
||||||
|
if (latest == null) return;
|
||||||
|
|
||||||
|
txtCurrent.Text = FormatValue(latest.Value<double?>("current")) + " A";
|
||||||
|
txtVoltage.Text = FormatValue(latest.Value<double?>("voltage")) + " V";
|
||||||
|
txtPower.Text = FormatValue(latest.Value<double?>("power")) + " kW";
|
||||||
|
txtEnergy.Text = FormatValue(latest.Value<double?>("energy")) + " kWh";
|
||||||
|
txtTotalAmount.Text = "¥ " + FormatValue(latest.Value<double?>("total_amount"));
|
||||||
|
|
||||||
|
int? st = latest.Value<int?>("status");
|
||||||
|
if (st == 0) { txtStatus.Text = "离线"; txtStatus.Foreground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#909399")); }
|
||||||
|
else if (st == 1) { txtStatus.Text = "故障"; txtStatus.Foreground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#EF4444")); }
|
||||||
|
else if (st == 2) { txtStatus.Text = "空闲"; txtStatus.Foreground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#10B981")); }
|
||||||
|
else if (st == 3) { txtStatus.Text = "充电中"; txtStatus.Foreground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#3B82F6")); }
|
||||||
|
else { txtStatus.Text = "--"; }
|
||||||
|
|
||||||
|
txtOrderNo.Text = latest.Value<string>("order_no") ?? "--";
|
||||||
|
txtSoc.Text = latest.Value<double?>("soc") != null ? latest.Value<double>("soc").ToString("F1") + "%" : "--";
|
||||||
|
txtCumTime.Text = FormatMin(latest.Value<double?>("cumulative_time"));
|
||||||
|
txtRemTime.Text = FormatMin(latest.Value<double?>("remaining_time"));
|
||||||
|
|
||||||
|
UpdateCharts();
|
||||||
|
}
|
||||||
|
catch { }
|
||||||
|
}
|
||||||
|
|
||||||
|
private void UpdateCharts()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (plotCurrent == null || plotCurrent.Model == null || plotCurrent.Model.Series.Count == 0) return;
|
||||||
|
if (plotAmount == null || plotAmount.Model == null || plotAmount.Model.Series.Count == 0) return;
|
||||||
|
|
||||||
|
var chartData = PilesStoreHolder.Instance.GetChartData(_currentPile, _currentGun);
|
||||||
|
if (chartData == null || chartData.Count == 0) return;
|
||||||
|
|
||||||
|
var curPoints = new List<DataPoint>();
|
||||||
|
var volPoints = new List<DataPoint>();
|
||||||
|
var powPoints = new List<DataPoint>();
|
||||||
|
|
||||||
|
foreach (var item in chartData)
|
||||||
|
{
|
||||||
|
long unixTs = item.Value<long>("t");
|
||||||
|
var dt = DateTimeOffset.FromUnixTimeSeconds(unixTs).DateTime;
|
||||||
|
double oxyTime = DateTimeAxis.ToDouble(dt);
|
||||||
|
curPoints.Add(new DataPoint(oxyTime, item.Value<double?>("current") ?? 0));
|
||||||
|
volPoints.Add(new DataPoint(oxyTime, item.Value<double?>("voltage") ?? 0));
|
||||||
|
powPoints.Add(new DataPoint(oxyTime, item.Value<double?>("power") ?? 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
((LineSeries)plotCurrent.Model.Series[0]).Points.Clear();
|
||||||
|
((LineSeries)plotCurrent.Model.Series[0]).Points.AddRange(curPoints);
|
||||||
|
((LineSeries)plotVoltage.Model.Series[0]).Points.Clear();
|
||||||
|
((LineSeries)plotVoltage.Model.Series[0]).Points.AddRange(volPoints);
|
||||||
|
((LineSeries)plotPower.Model.Series[0]).Points.Clear();
|
||||||
|
((LineSeries)plotPower.Model.Series[0]).Points.AddRange(powPoints);
|
||||||
|
plotCurrent.InvalidatePlot(true);
|
||||||
|
plotVoltage.InvalidatePlot(true);
|
||||||
|
plotPower.InvalidatePlot(true);
|
||||||
|
|
||||||
|
var latest = PilesStoreHolder.Instance.GetLatest(_currentPile, _currentGun);
|
||||||
|
if (latest != null)
|
||||||
|
{
|
||||||
|
double sf = latest.Value<double?>("service_fee") ?? 0;
|
||||||
|
double ef = latest.Value<double?>("electricity_fee") ?? 0;
|
||||||
|
double ta = latest.Value<double?>("total_amount") ?? 0;
|
||||||
|
|
||||||
|
((RectangleBarSeries)plotAmount.Model.Series[0]).Items.Clear();
|
||||||
|
((RectangleBarSeries)plotAmount.Model.Series[0]).Items.Add(new RectangleBarItem(-0.25, 0, 0.25, sf));
|
||||||
|
((RectangleBarSeries)plotAmount.Model.Series[1]).Items.Clear();
|
||||||
|
((RectangleBarSeries)plotAmount.Model.Series[1]).Items.Add(new RectangleBarItem(0.75, 0, 1.25, ef));
|
||||||
|
((RectangleBarSeries)plotAmount.Model.Series[2]).Items.Clear();
|
||||||
|
((RectangleBarSeries)plotAmount.Model.Series[2]).Items.Add(new RectangleBarItem(1.75, 0, 2.25, ta));
|
||||||
|
plotAmount.InvalidatePlot(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch { }
|
||||||
|
}
|
||||||
|
|
||||||
|
private string FormatValue(double? v)
|
||||||
|
{
|
||||||
|
return v.HasValue ? v.Value.ToString("F2") : "--";
|
||||||
|
}
|
||||||
|
|
||||||
|
private string FormatMin(double? v)
|
||||||
|
{
|
||||||
|
return v.HasValue ? Math.Round(v.Value).ToString() + " min" : "--";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
174
上位机/YKC/PilesDataStore.cs
Normal file
174
上位机/YKC/PilesDataStore.cs
Normal file
@@ -0,0 +1,174 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using Newtonsoft.Json.Linq;
|
||||||
|
|
||||||
|
namespace YKC
|
||||||
|
{
|
||||||
|
public class GunData
|
||||||
|
{
|
||||||
|
public List<double> Current { get; set; } = new List<double>();
|
||||||
|
public List<double> Voltage { get; set; } = new List<double>();
|
||||||
|
public List<double> Power { get; set; } = new List<double>();
|
||||||
|
public List<double> Energy { get; set; } = new List<double>();
|
||||||
|
public List<double> ServiceFee { get; set; } = new List<double>();
|
||||||
|
public List<double> ElectricityFee { get; set; } = new List<double>();
|
||||||
|
public List<double> TotalAmount { get; set; } = new List<double>();
|
||||||
|
public List<int> Status { get; set; } = new List<int>();
|
||||||
|
public List<DateTime> Timestamps { get; set; } = new List<DateTime>();
|
||||||
|
|
||||||
|
public string OrderNo { get; set; } = "";
|
||||||
|
public double? Soc { get; set; } = null;
|
||||||
|
public double? CumulativeTime { get; set; } = 0;
|
||||||
|
public double? RemainingTime { get; set; } = 0;
|
||||||
|
|
||||||
|
private const int MaxPoints = 300;
|
||||||
|
|
||||||
|
private void AddToList<T>(List<T> list, T value)
|
||||||
|
{
|
||||||
|
list.Add(value);
|
||||||
|
if (list.Count > MaxPoints)
|
||||||
|
list.RemoveAt(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Append(JObject g)
|
||||||
|
{
|
||||||
|
AddToList(Timestamps, DateTime.Now);
|
||||||
|
AddToList(Current, g.Value<double?>("current") ?? double.NaN);
|
||||||
|
AddToList(Voltage, g.Value<double?>("voltage") ?? double.NaN);
|
||||||
|
AddToList(Power, g.Value<double?>("power") ?? double.NaN);
|
||||||
|
AddToList(Energy, g.Value<double?>("energy") ?? double.NaN);
|
||||||
|
AddToList(ServiceFee, g.Value<double?>("service_fee") ?? double.NaN);
|
||||||
|
AddToList(ElectricityFee, g.Value<double?>("electricity_fee") ?? double.NaN);
|
||||||
|
|
||||||
|
double? total = g.Value<double?>("total_amount");
|
||||||
|
if (total == null)
|
||||||
|
{
|
||||||
|
double? sf = g.Value<double?>("service_fee");
|
||||||
|
double? ef = g.Value<double?>("electricity_fee");
|
||||||
|
if (sf != null && ef != null)
|
||||||
|
total = sf + ef;
|
||||||
|
}
|
||||||
|
AddToList(TotalAmount, total ?? double.NaN);
|
||||||
|
|
||||||
|
AddToList(Status, g.Value<int?>("status") ?? 0);
|
||||||
|
|
||||||
|
OrderNo = g.Value<string>("order_no") ?? OrderNo;
|
||||||
|
Soc = g.Value<double?>("soc") ?? Soc;
|
||||||
|
CumulativeTime = g.Value<double?>("cumulative_time") ?? CumulativeTime;
|
||||||
|
RemainingTime = g.Value<double?>("remaining_time") ?? RemainingTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double? LatestOrNull(List<double> list)
|
||||||
|
{
|
||||||
|
for (int i = list.Count - 1; i >= 0; i--)
|
||||||
|
if (!double.IsNaN(list[i])) return list[i];
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int? LatestStatus()
|
||||||
|
{
|
||||||
|
for (int i = Status.Count - 1; i >= 0; i--)
|
||||||
|
return Status[i];
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class PileData
|
||||||
|
{
|
||||||
|
public GunData Gun1 { get; set; } = new GunData();
|
||||||
|
public GunData Gun2 { get; set; } = new GunData();
|
||||||
|
}
|
||||||
|
|
||||||
|
public class PilesDataStore
|
||||||
|
{
|
||||||
|
private readonly object _lock = new object();
|
||||||
|
public Dictionary<int, PileData> Piles { get; } = new Dictionary<int, PileData>();
|
||||||
|
private const int PileCount = 6;
|
||||||
|
|
||||||
|
public PilesDataStore()
|
||||||
|
{
|
||||||
|
for (int i = 1; i <= PileCount; i++)
|
||||||
|
Piles[i] = new PileData();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void HandleReport(JObject msg)
|
||||||
|
{
|
||||||
|
var pilesArr = msg["piles"] as JArray ?? msg["data"] as JArray;
|
||||||
|
if (pilesArr == null) return;
|
||||||
|
|
||||||
|
lock (_lock)
|
||||||
|
{
|
||||||
|
foreach (var p in pilesArr)
|
||||||
|
{
|
||||||
|
int idx = p.Value<int?>("index") ?? p.Value<int?>("pile_index") ?? p.Value<int?>("id") ?? 0;
|
||||||
|
if (idx < 1 || idx > PileCount) continue;
|
||||||
|
|
||||||
|
var gunsArr = p["guns"] as JArray;
|
||||||
|
if (gunsArr == null)
|
||||||
|
{
|
||||||
|
Piles[idx].Gun1.Append((JObject)p);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var g in gunsArr)
|
||||||
|
{
|
||||||
|
int gunNum = g.Value<int?>("gun") ?? g.Value<int?>("gun_no") ?? g.Value<int?>("id") ?? 0;
|
||||||
|
if (gunNum == 1) Piles[idx].Gun1.Append((JObject)g);
|
||||||
|
else if (gunNum == 2) Piles[idx].Gun2.Append((JObject)g);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public JObject GetLatest(int pileIndex, int gunNum)
|
||||||
|
{
|
||||||
|
lock (_lock)
|
||||||
|
{
|
||||||
|
if (!Piles.ContainsKey(pileIndex)) return null;
|
||||||
|
var gun = gunNum == 1 ? Piles[pileIndex].Gun1 : Piles[pileIndex].Gun2;
|
||||||
|
return new JObject
|
||||||
|
{
|
||||||
|
["current"] = gun.LatestOrNull(gun.Current),
|
||||||
|
["voltage"] = gun.LatestOrNull(gun.Voltage),
|
||||||
|
["power"] = gun.LatestOrNull(gun.Power),
|
||||||
|
["energy"] = gun.LatestOrNull(gun.Energy),
|
||||||
|
["service_fee"] = gun.LatestOrNull(gun.ServiceFee),
|
||||||
|
["electricity_fee"] = gun.LatestOrNull(gun.ElectricityFee),
|
||||||
|
["total_amount"] = gun.LatestOrNull(gun.TotalAmount),
|
||||||
|
["status"] = gun.LatestStatus(),
|
||||||
|
["order_no"] = gun.OrderNo,
|
||||||
|
["soc"] = gun.Soc,
|
||||||
|
["cumulative_time"] = gun.CumulativeTime,
|
||||||
|
["remaining_time"] = gun.RemainingTime,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public JArray GetChartData(int pileIndex, int gunNum)
|
||||||
|
{
|
||||||
|
lock (_lock)
|
||||||
|
{
|
||||||
|
if (!Piles.ContainsKey(pileIndex)) return null;
|
||||||
|
var gun = gunNum == 1 ? Piles[pileIndex].Gun1 : Piles[pileIndex].Gun2;
|
||||||
|
var arr = new JArray();
|
||||||
|
for (int i = 0; i < gun.Timestamps.Count; i++)
|
||||||
|
{
|
||||||
|
arr.Add(new JObject
|
||||||
|
{
|
||||||
|
["t"] = new DateTimeOffset(gun.Timestamps[i]).ToUnixTimeSeconds(),
|
||||||
|
["current"] = double.IsNaN(gun.Current[i]) ? (JToken)null : gun.Current[i],
|
||||||
|
["voltage"] = double.IsNaN(gun.Voltage[i]) ? (JToken)null : gun.Voltage[i],
|
||||||
|
["power"] = double.IsNaN(gun.Power[i]) ? (JToken)null : gun.Power[i],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return arr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class PilesStoreHolder
|
||||||
|
{
|
||||||
|
public static readonly PilesDataStore Instance = new PilesDataStore();
|
||||||
|
}
|
||||||
|
}
|
||||||
52
上位机/YKC/Properties/AssemblyInfo.cs
Normal file
52
上位机/YKC/Properties/AssemblyInfo.cs
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
using System.Reflection;
|
||||||
|
using System.Resources;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
using System.Windows;
|
||||||
|
|
||||||
|
// 有关程序集的一般信息由以下
|
||||||
|
// 控制。更改这些特性值可修改
|
||||||
|
// 与程序集关联的信息。
|
||||||
|
[assembly: AssemblyTitle("YKC")]
|
||||||
|
[assembly: AssemblyDescription("")]
|
||||||
|
[assembly: AssemblyConfiguration("")]
|
||||||
|
[assembly: AssemblyCompany("")]
|
||||||
|
[assembly: AssemblyProduct("YKC")]
|
||||||
|
[assembly: AssemblyCopyright("Copyright © 2026")]
|
||||||
|
[assembly: AssemblyTrademark("")]
|
||||||
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
|
// 将 ComVisible 设置为 false 会使此程序集中的类型
|
||||||
|
//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
|
||||||
|
//请将此类型的 ComVisible 特性设置为 true。
|
||||||
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
|
//若要开始生成可本地化的应用程序,请设置
|
||||||
|
//.csproj 文件中的 <UICulture>CultureYouAreCodingWith</UICulture>
|
||||||
|
//在 <PropertyGroup> 中。例如,如果你使用的是美国英语。
|
||||||
|
//使用的是美国英语,请将 <UICulture> 设置为 en-US。 然后取消
|
||||||
|
//对以下 NeutralResourceLanguage 特性的注释。 更新
|
||||||
|
//以下行中的“en-US”以匹配项目文件中的 UICulture 设置。
|
||||||
|
|
||||||
|
//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
|
||||||
|
|
||||||
|
|
||||||
|
[assembly: ThemeInfo(
|
||||||
|
ResourceDictionaryLocation.None, //主题特定资源词典所处位置
|
||||||
|
//(未在页面中找到资源时使用,
|
||||||
|
//或应用程序资源字典中找到时使用)
|
||||||
|
ResourceDictionaryLocation.SourceAssembly //常规资源词典所处位置
|
||||||
|
//(未在页面中找到资源时使用,
|
||||||
|
//、应用程序或任何主题专用资源字典中找到时使用)
|
||||||
|
)]
|
||||||
|
|
||||||
|
|
||||||
|
// 程序集的版本信息由下列四个值组成:
|
||||||
|
//
|
||||||
|
// 主版本
|
||||||
|
// 次版本
|
||||||
|
// 生成号
|
||||||
|
// 修订号
|
||||||
|
//
|
||||||
|
[assembly: AssemblyVersion("1.0.0.0")]
|
||||||
|
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||||
71
上位机/YKC/Properties/Resources.Designer.cs
generated
Normal file
71
上位机/YKC/Properties/Resources.Designer.cs
generated
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// 此代码由工具生成。
|
||||||
|
// 运行时版本: 4.0.30319.42000
|
||||||
|
//
|
||||||
|
// 对此文件的更改可能导致不正确的行为,如果
|
||||||
|
// 重新生成代码,则所做更改将丢失。
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
namespace YKC.Properties
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 强类型资源类,用于查找本地化字符串等。
|
||||||
|
/// </summary>
|
||||||
|
// 此类是由 StronglyTypedResourceBuilder
|
||||||
|
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
|
||||||
|
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
|
||||||
|
// (以 /str 作为命令选项),或重新生成 VS 项目。
|
||||||
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
|
internal class Resources
|
||||||
|
{
|
||||||
|
|
||||||
|
private static global::System.Resources.ResourceManager resourceMan;
|
||||||
|
|
||||||
|
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||||
|
|
||||||
|
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||||
|
internal Resources()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 返回此类使用的缓存 ResourceManager 实例。
|
||||||
|
/// </summary>
|
||||||
|
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||||
|
internal static global::System.Resources.ResourceManager ResourceManager
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if ((resourceMan == null))
|
||||||
|
{
|
||||||
|
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("YKC.Properties.Resources", typeof(Resources).Assembly);
|
||||||
|
resourceMan = temp;
|
||||||
|
}
|
||||||
|
return resourceMan;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写当前线程的 CurrentUICulture 属性,对
|
||||||
|
/// 使用此强类型资源类的所有资源查找执行重写。
|
||||||
|
/// </summary>
|
||||||
|
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||||
|
internal static global::System.Globalization.CultureInfo Culture
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return resourceCulture;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
resourceCulture = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
117
上位机/YKC/Properties/Resources.resx
Normal file
117
上位机/YKC/Properties/Resources.resx
Normal file
@@ -0,0 +1,117 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
</root>
|
||||||
30
上位机/YKC/Properties/Settings.Designer.cs
generated
Normal file
30
上位机/YKC/Properties/Settings.Designer.cs
generated
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by a tool.
|
||||||
|
// Runtime Version:4.0.30319.42000
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
namespace YKC.Properties
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
|
||||||
|
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
|
||||||
|
{
|
||||||
|
|
||||||
|
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||||
|
|
||||||
|
public static Settings Default
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return defaultInstance;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
7
上位机/YKC/Properties/Settings.settings
Normal file
7
上位机/YKC/Properties/Settings.settings
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
|
<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)">
|
||||||
|
<Profiles>
|
||||||
|
<Profile Name="(Default)" />
|
||||||
|
</Profiles>
|
||||||
|
<Settings />
|
||||||
|
</SettingsFile>
|
||||||
170
上位机/YKC/UdpClient.cs
Normal file
170
上位机/YKC/UdpClient.cs
Normal file
@@ -0,0 +1,170 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Concurrent;
|
||||||
|
using System.Net;
|
||||||
|
using System.Net.Sockets;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using Newtonsoft.Json.Linq;
|
||||||
|
|
||||||
|
namespace YKC
|
||||||
|
{
|
||||||
|
public class UdpClient : IDisposable
|
||||||
|
{
|
||||||
|
private Socket _sock;
|
||||||
|
private readonly object _lock = new object();
|
||||||
|
private readonly ConcurrentDictionary<string, Action<JObject>> _callbacks = new ConcurrentDictionary<string, Action<JObject>>();
|
||||||
|
private bool _running;
|
||||||
|
private const int FixedId = 7;
|
||||||
|
|
||||||
|
public event Action<JObject> OnActiveReport;
|
||||||
|
|
||||||
|
public UdpClient()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
_sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
|
||||||
|
_sock.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
|
||||||
|
_sock.Bind(new IPEndPoint(IPAddress.Any, Config.LocalPort));
|
||||||
|
_sock.ReceiveTimeout = 1000;
|
||||||
|
_running = true;
|
||||||
|
Console.WriteLine($"[UDP] 监听端口 {Config.LocalPort}");
|
||||||
|
Task.Run(() => ListenLoop());
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
Console.WriteLine($"[UDP] 初始化失败: {e.Message}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ListenLoop()
|
||||||
|
{
|
||||||
|
var buffer = new byte[4096];
|
||||||
|
EndPoint remoteEp = new IPEndPoint(IPAddress.Any, 0);
|
||||||
|
|
||||||
|
while (_running)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
int recv = _sock.ReceiveFrom(buffer, ref remoteEp);
|
||||||
|
string json = Encoding.UTF8.GetString(buffer, 0, recv);
|
||||||
|
var msg = JObject.Parse(json);
|
||||||
|
Dispatch(msg);
|
||||||
|
}
|
||||||
|
catch (SocketException) { }
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
Console.WriteLine($"[UDP] 接收异常: {e.Message}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Dispatch(JObject msg)
|
||||||
|
{
|
||||||
|
string reqId = msg.Value<string>("request_id");
|
||||||
|
Console.WriteLine($"[UDP] 收到回复: {msg}");
|
||||||
|
|
||||||
|
if (reqId != null && _callbacks.TryRemove(reqId, out var cb))
|
||||||
|
{
|
||||||
|
try { cb(msg); }
|
||||||
|
catch (Exception e) { Console.WriteLine($"[UDP] 回调异常: {e.Message}"); }
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
HandleActiveReport(msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void HandleActiveReport(JObject msg)
|
||||||
|
{
|
||||||
|
string cmd = msg.Value<string>("cmd");
|
||||||
|
if (cmd == "report_data" || cmd == "pile_metrics" || cmd == "real_time_data")
|
||||||
|
{
|
||||||
|
Console.WriteLine($"[UDP] 收到主动上报, cmd={cmd}");
|
||||||
|
OnActiveReport?.Invoke(msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Send(JObject payload, Action<JObject> callback = null, string requestId = null)
|
||||||
|
{
|
||||||
|
if (requestId == null)
|
||||||
|
requestId = $"{payload.Value<string>("cmd")}_{DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()}";
|
||||||
|
|
||||||
|
payload["id"] = FixedId;
|
||||||
|
payload["request_id"] = requestId;
|
||||||
|
|
||||||
|
if (callback != null)
|
||||||
|
{
|
||||||
|
_callbacks[requestId] = callback;
|
||||||
|
StartTimeoutCleaner(requestId);
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (_sock == null)
|
||||||
|
{
|
||||||
|
Console.WriteLine("[UDP] 套接字未就绪");
|
||||||
|
callback?.Invoke(new JObject { ["success"] = false, ["error"] = "socket_not_ready", ["request_id"] = requestId });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
byte[] data = Encoding.UTF8.GetBytes(payload.ToString(Formatting.None));
|
||||||
|
_sock.SendTo(data, new IPEndPoint(IPAddress.Parse(Config.TargetIp), Config.TargetPort));
|
||||||
|
Console.WriteLine($"[UDP] 发送: {payload}");
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
Console.WriteLine($"[UDP] 发送失败: {e.Message}");
|
||||||
|
_callbacks.TryRemove(requestId, out _);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public JObject SendSync(JObject payload, int timeoutSec = 4)
|
||||||
|
{
|
||||||
|
JObject result = null;
|
||||||
|
var evt = new ManualResetEvent(false);
|
||||||
|
|
||||||
|
Send(payload, (msg) =>
|
||||||
|
{
|
||||||
|
result = msg;
|
||||||
|
evt.Set();
|
||||||
|
});
|
||||||
|
|
||||||
|
evt.WaitOne(TimeSpan.FromSeconds(timeoutSec));
|
||||||
|
return result ?? new JObject { ["success"] = false, ["error"] = "设备无响应" };
|
||||||
|
}
|
||||||
|
|
||||||
|
private void StartTimeoutCleaner(string requestId)
|
||||||
|
{
|
||||||
|
Task.Run(async () =>
|
||||||
|
{
|
||||||
|
await Task.Delay(TimeSpan.FromSeconds(Config.UdpTimeout));
|
||||||
|
if (_callbacks.TryRemove(requestId, out var cb))
|
||||||
|
{
|
||||||
|
Console.WriteLine($"[UDP] 请求超时: {requestId}");
|
||||||
|
try
|
||||||
|
{
|
||||||
|
cb(new JObject
|
||||||
|
{
|
||||||
|
["success"] = false,
|
||||||
|
["error"] = "timeout",
|
||||||
|
["request_id"] = requestId
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch { }
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Dispose()
|
||||||
|
{
|
||||||
|
_running = false;
|
||||||
|
_sock?.Close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class UdpClientHolder
|
||||||
|
{
|
||||||
|
public static readonly UdpClient Instance = new UdpClient();
|
||||||
|
}
|
||||||
|
}
|
||||||
152
上位机/YKC/YKC.csproj
Normal file
152
上位机/YKC/YKC.csproj
Normal file
@@ -0,0 +1,152 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||||
|
<PropertyGroup>
|
||||||
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
|
<ProjectGuid>{9F34DD1F-FB6D-4E13-9270-13C7A9A87AAA}</ProjectGuid>
|
||||||
|
<OutputType>WinExe</OutputType>
|
||||||
|
<RootNamespace>YKC</RootNamespace>
|
||||||
|
<AssemblyName>YKC</AssemblyName>
|
||||||
|
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
|
||||||
|
<FileAlignment>512</FileAlignment>
|
||||||
|
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||||
|
<Deterministic>true</Deterministic>
|
||||||
|
<RestoreProjectStyle>PackageReference</RestoreProjectStyle>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<Optimize>false</Optimize>
|
||||||
|
<OutputPath>bin\Debug\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<OutputPath>bin\Release\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Reference Include="System" />
|
||||||
|
<Reference Include="System.Data" />
|
||||||
|
<Reference Include="System.Xml" />
|
||||||
|
<Reference Include="Microsoft.CSharp" />
|
||||||
|
<Reference Include="System.Core" />
|
||||||
|
<Reference Include="System.Xml.Linq" />
|
||||||
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
|
<Reference Include="System.Net.Http" />
|
||||||
|
<Reference Include="System.Xaml">
|
||||||
|
<RequiredTargetFramework>4.0</RequiredTargetFramework>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="WindowsBase" />
|
||||||
|
<Reference Include="PresentationCore" />
|
||||||
|
<Reference Include="PresentationFramework" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="OxyPlot.Wpf">
|
||||||
|
<Version>2.2.0</Version>
|
||||||
|
</PackageReference>
|
||||||
|
<PackageReference Include="Newtonsoft.Json">
|
||||||
|
<Version>13.0.3</Version>
|
||||||
|
</PackageReference>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ApplicationDefinition Include="App.xaml">
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</ApplicationDefinition>
|
||||||
|
<Page Include="MainWindow.xaml">
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</Page>
|
||||||
|
<Compile Include="App.xaml.cs">
|
||||||
|
<DependentUpon>App.xaml</DependentUpon>
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="MainWindow.xaml.cs">
|
||||||
|
<DependentUpon>MainWindow.xaml</DependentUpon>
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Page Include="LoginWindow.xaml">
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</Page>
|
||||||
|
<Compile Include="LoginWindow.xaml.cs">
|
||||||
|
<DependentUpon>LoginWindow.xaml</DependentUpon>
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Page Include="Pages\DashboardPage.xaml">
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</Page>
|
||||||
|
<Compile Include="Pages\DashboardPage.xaml.cs">
|
||||||
|
<DependentUpon>Pages\DashboardPage.xaml</DependentUpon>
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Page Include="Pages\RealtimePage.xaml">
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</Page>
|
||||||
|
<Compile Include="Pages\RealtimePage.xaml.cs">
|
||||||
|
<DependentUpon>Pages\RealtimePage.xaml</DependentUpon>
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Page Include="Pages\ChargerPage.xaml">
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</Page>
|
||||||
|
<Compile Include="Pages\ChargerPage.xaml.cs">
|
||||||
|
<DependentUpon>Pages\ChargerPage.xaml</DependentUpon>
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Page Include="Pages\GatewayPage.xaml">
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</Page>
|
||||||
|
<Compile Include="Pages\GatewayPage.xaml.cs">
|
||||||
|
<DependentUpon>Pages\GatewayPage.xaml</DependentUpon>
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="Config.cs" />
|
||||||
|
<Compile Include="UdpClient.cs" />
|
||||||
|
<Compile Include="PilesDataStore.cs" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="Properties\AssemblyInfo.cs">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Properties\Resources.Designer.cs">
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
<DesignTime>True</DesignTime>
|
||||||
|
<DependentUpon>Resources.resx</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Properties\Settings.Designer.cs">
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
<DependentUpon>Settings.settings</DependentUpon>
|
||||||
|
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||||
|
</Compile>
|
||||||
|
<EmbeddedResource Include="Properties\Resources.resx">
|
||||||
|
<Generator>ResXFileCodeGenerator</Generator>
|
||||||
|
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<None Include="Properties\Settings.settings">
|
||||||
|
<Generator>SettingsSingleFileGenerator</Generator>
|
||||||
|
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||||
|
</None>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="App.config" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
|
</Project>
|
||||||
3
上位机/YKC/YKC.slnx
Normal file
3
上位机/YKC/YKC.slnx
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<Solution>
|
||||||
|
<Project Path="YKC.csproj" Id="9f34dd1f-fb6d-4e13-9270-13c7a9a87aaa" />
|
||||||
|
</Solution>
|
||||||
BIN
上位机/YKC/bin/Debug/Newtonsoft.Json.dll
Normal file
BIN
上位机/YKC/bin/Debug/Newtonsoft.Json.dll
Normal file
Binary file not shown.
BIN
上位机/YKC/bin/Debug/OxyPlot.Wpf.Shared.dll
Normal file
BIN
上位机/YKC/bin/Debug/OxyPlot.Wpf.Shared.dll
Normal file
Binary file not shown.
BIN
上位机/YKC/bin/Debug/OxyPlot.Wpf.dll
Normal file
BIN
上位机/YKC/bin/Debug/OxyPlot.Wpf.dll
Normal file
Binary file not shown.
BIN
上位机/YKC/bin/Debug/OxyPlot.dll
Normal file
BIN
上位机/YKC/bin/Debug/OxyPlot.dll
Normal file
Binary file not shown.
BIN
上位机/YKC/bin/Debug/YKC.exe
Normal file
BIN
上位机/YKC/bin/Debug/YKC.exe
Normal file
Binary file not shown.
6
上位机/YKC/bin/Debug/YKC.exe.config
Normal file
6
上位机/YKC/bin/Debug/YKC.exe.config
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<configuration>
|
||||||
|
<startup>
|
||||||
|
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
|
||||||
|
</startup>
|
||||||
|
</configuration>
|
||||||
BIN
上位机/YKC/bin/Debug/YKC.pdb
Normal file
BIN
上位机/YKC/bin/Debug/YKC.pdb
Normal file
Binary file not shown.
BIN
上位机/YKC/nuget.exe
Normal file
BIN
上位机/YKC/nuget.exe
Normal file
Binary file not shown.
@@ -0,0 +1,4 @@
|
|||||||
|
// <autogenerated />
|
||||||
|
using System;
|
||||||
|
using System.Reflection;
|
||||||
|
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
|
||||||
BIN
上位机/YKC/obj/Debug/App.baml
Normal file
BIN
上位机/YKC/obj/Debug/App.baml
Normal file
Binary file not shown.
82
上位机/YKC/obj/Debug/App.g.cs
Normal file
82
上位机/YKC/obj/Debug/App.g.cs
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
#pragma checksum "..\..\App.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "6AD4E2C6807A155B5F2677B4A8772DA510C0A9A2F8A7C4909C202DC219BF4813"
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// 此代码由工具生成。
|
||||||
|
// 运行时版本:4.0.30319.42000
|
||||||
|
//
|
||||||
|
// 对此文件的更改可能会导致不正确的行为,并且如果
|
||||||
|
// 重新生成代码,这些更改将会丢失。
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Automation;
|
||||||
|
using System.Windows.Controls;
|
||||||
|
using System.Windows.Controls.Primitives;
|
||||||
|
using System.Windows.Data;
|
||||||
|
using System.Windows.Documents;
|
||||||
|
using System.Windows.Ink;
|
||||||
|
using System.Windows.Input;
|
||||||
|
using System.Windows.Markup;
|
||||||
|
using System.Windows.Media;
|
||||||
|
using System.Windows.Media.Animation;
|
||||||
|
using System.Windows.Media.Effects;
|
||||||
|
using System.Windows.Media.Imaging;
|
||||||
|
using System.Windows.Media.Media3D;
|
||||||
|
using System.Windows.Media.TextFormatting;
|
||||||
|
using System.Windows.Navigation;
|
||||||
|
using System.Windows.Shapes;
|
||||||
|
using System.Windows.Shell;
|
||||||
|
|
||||||
|
|
||||||
|
namespace YKC {
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// App
|
||||||
|
/// </summary>
|
||||||
|
public partial class App : System.Windows.Application {
|
||||||
|
|
||||||
|
private bool _contentLoaded;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// InitializeComponent
|
||||||
|
/// </summary>
|
||||||
|
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
|
||||||
|
public void InitializeComponent() {
|
||||||
|
if (_contentLoaded) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_contentLoaded = true;
|
||||||
|
|
||||||
|
#line 4 "..\..\App.xaml"
|
||||||
|
this.StartupUri = new System.Uri("LoginWindow.xaml", System.UriKind.Relative);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
System.Uri resourceLocater = new System.Uri("/YKC;component/app.xaml", System.UriKind.Relative);
|
||||||
|
|
||||||
|
#line 1 "..\..\App.xaml"
|
||||||
|
System.Windows.Application.LoadComponent(this, resourceLocater);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Application Entry Point.
|
||||||
|
/// </summary>
|
||||||
|
[System.STAThreadAttribute()]
|
||||||
|
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
|
||||||
|
public static void Main() {
|
||||||
|
YKC.App app = new YKC.App();
|
||||||
|
app.InitializeComponent();
|
||||||
|
app.Run();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
82
上位机/YKC/obj/Debug/App.g.i.cs
Normal file
82
上位机/YKC/obj/Debug/App.g.i.cs
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
#pragma checksum "..\..\App.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "6AD4E2C6807A155B5F2677B4A8772DA510C0A9A2F8A7C4909C202DC219BF4813"
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// 此代码由工具生成。
|
||||||
|
// 运行时版本:4.0.30319.42000
|
||||||
|
//
|
||||||
|
// 对此文件的更改可能会导致不正确的行为,并且如果
|
||||||
|
// 重新生成代码,这些更改将会丢失。
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Automation;
|
||||||
|
using System.Windows.Controls;
|
||||||
|
using System.Windows.Controls.Primitives;
|
||||||
|
using System.Windows.Data;
|
||||||
|
using System.Windows.Documents;
|
||||||
|
using System.Windows.Ink;
|
||||||
|
using System.Windows.Input;
|
||||||
|
using System.Windows.Markup;
|
||||||
|
using System.Windows.Media;
|
||||||
|
using System.Windows.Media.Animation;
|
||||||
|
using System.Windows.Media.Effects;
|
||||||
|
using System.Windows.Media.Imaging;
|
||||||
|
using System.Windows.Media.Media3D;
|
||||||
|
using System.Windows.Media.TextFormatting;
|
||||||
|
using System.Windows.Navigation;
|
||||||
|
using System.Windows.Shapes;
|
||||||
|
using System.Windows.Shell;
|
||||||
|
|
||||||
|
|
||||||
|
namespace YKC {
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// App
|
||||||
|
/// </summary>
|
||||||
|
public partial class App : System.Windows.Application {
|
||||||
|
|
||||||
|
private bool _contentLoaded;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// InitializeComponent
|
||||||
|
/// </summary>
|
||||||
|
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
|
||||||
|
public void InitializeComponent() {
|
||||||
|
if (_contentLoaded) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_contentLoaded = true;
|
||||||
|
|
||||||
|
#line 4 "..\..\App.xaml"
|
||||||
|
this.StartupUri = new System.Uri("LoginWindow.xaml", System.UriKind.Relative);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
System.Uri resourceLocater = new System.Uri("/YKC;component/app.xaml", System.UriKind.Relative);
|
||||||
|
|
||||||
|
#line 1 "..\..\App.xaml"
|
||||||
|
System.Windows.Application.LoadComponent(this, resourceLocater);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Application Entry Point.
|
||||||
|
/// </summary>
|
||||||
|
[System.STAThreadAttribute()]
|
||||||
|
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
|
||||||
|
public static void Main() {
|
||||||
|
YKC.App app = new YKC.App();
|
||||||
|
app.InitializeComponent();
|
||||||
|
app.Run();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
BIN
上位机/YKC/obj/Debug/DesignTimeResolveAssemblyReferences.cache
Normal file
BIN
上位机/YKC/obj/Debug/DesignTimeResolveAssemblyReferences.cache
Normal file
Binary file not shown.
BIN
上位机/YKC/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
Normal file
BIN
上位机/YKC/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
Normal file
Binary file not shown.
BIN
上位机/YKC/obj/Debug/LoginWindow.baml
Normal file
BIN
上位机/YKC/obj/Debug/LoginWindow.baml
Normal file
Binary file not shown.
127
上位机/YKC/obj/Debug/LoginWindow.g.cs
Normal file
127
上位机/YKC/obj/Debug/LoginWindow.g.cs
Normal file
@@ -0,0 +1,127 @@
|
|||||||
|
#pragma checksum "..\..\LoginWindow.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "0FC0E565435A8BC0FBD8D62E4120A53F6C01B21198BAFAC45DE921A44D172582"
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// 此代码由工具生成。
|
||||||
|
// 运行时版本:4.0.30319.42000
|
||||||
|
//
|
||||||
|
// 对此文件的更改可能会导致不正确的行为,并且如果
|
||||||
|
// 重新生成代码,这些更改将会丢失。
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Automation;
|
||||||
|
using System.Windows.Controls;
|
||||||
|
using System.Windows.Controls.Primitives;
|
||||||
|
using System.Windows.Data;
|
||||||
|
using System.Windows.Documents;
|
||||||
|
using System.Windows.Ink;
|
||||||
|
using System.Windows.Input;
|
||||||
|
using System.Windows.Markup;
|
||||||
|
using System.Windows.Media;
|
||||||
|
using System.Windows.Media.Animation;
|
||||||
|
using System.Windows.Media.Effects;
|
||||||
|
using System.Windows.Media.Imaging;
|
||||||
|
using System.Windows.Media.Media3D;
|
||||||
|
using System.Windows.Media.TextFormatting;
|
||||||
|
using System.Windows.Navigation;
|
||||||
|
using System.Windows.Shapes;
|
||||||
|
using System.Windows.Shell;
|
||||||
|
|
||||||
|
|
||||||
|
namespace YKC {
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// LoginWindow
|
||||||
|
/// </summary>
|
||||||
|
public partial class LoginWindow : System.Windows.Window, System.Windows.Markup.IComponentConnector {
|
||||||
|
|
||||||
|
|
||||||
|
#line 24 "..\..\LoginWindow.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBox txtUsername;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 28 "..\..\LoginWindow.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.PasswordBox txtPassword;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 30 "..\..\LoginWindow.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.Button btnLogin;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 35 "..\..\LoginWindow.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtError;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
private bool _contentLoaded;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// InitializeComponent
|
||||||
|
/// </summary>
|
||||||
|
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
|
||||||
|
public void InitializeComponent() {
|
||||||
|
if (_contentLoaded) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_contentLoaded = true;
|
||||||
|
System.Uri resourceLocater = new System.Uri("/YKC;component/loginwindow.xaml", System.UriKind.Relative);
|
||||||
|
|
||||||
|
#line 1 "..\..\LoginWindow.xaml"
|
||||||
|
System.Windows.Application.LoadComponent(this, resourceLocater);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
}
|
||||||
|
|
||||||
|
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
|
||||||
|
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
|
||||||
|
void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
|
||||||
|
switch (connectionId)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
this.txtUsername = ((System.Windows.Controls.TextBox)(target));
|
||||||
|
return;
|
||||||
|
case 2:
|
||||||
|
this.txtPassword = ((System.Windows.Controls.PasswordBox)(target));
|
||||||
|
return;
|
||||||
|
case 3:
|
||||||
|
this.btnLogin = ((System.Windows.Controls.Button)(target));
|
||||||
|
|
||||||
|
#line 33 "..\..\LoginWindow.xaml"
|
||||||
|
this.btnLogin.Click += new System.Windows.RoutedEventHandler(this.Login_Click);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
return;
|
||||||
|
case 4:
|
||||||
|
this.txtError = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this._contentLoaded = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
127
上位机/YKC/obj/Debug/LoginWindow.g.i.cs
Normal file
127
上位机/YKC/obj/Debug/LoginWindow.g.i.cs
Normal file
@@ -0,0 +1,127 @@
|
|||||||
|
#pragma checksum "..\..\LoginWindow.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "0FC0E565435A8BC0FBD8D62E4120A53F6C01B21198BAFAC45DE921A44D172582"
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// 此代码由工具生成。
|
||||||
|
// 运行时版本:4.0.30319.42000
|
||||||
|
//
|
||||||
|
// 对此文件的更改可能会导致不正确的行为,并且如果
|
||||||
|
// 重新生成代码,这些更改将会丢失。
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Automation;
|
||||||
|
using System.Windows.Controls;
|
||||||
|
using System.Windows.Controls.Primitives;
|
||||||
|
using System.Windows.Data;
|
||||||
|
using System.Windows.Documents;
|
||||||
|
using System.Windows.Ink;
|
||||||
|
using System.Windows.Input;
|
||||||
|
using System.Windows.Markup;
|
||||||
|
using System.Windows.Media;
|
||||||
|
using System.Windows.Media.Animation;
|
||||||
|
using System.Windows.Media.Effects;
|
||||||
|
using System.Windows.Media.Imaging;
|
||||||
|
using System.Windows.Media.Media3D;
|
||||||
|
using System.Windows.Media.TextFormatting;
|
||||||
|
using System.Windows.Navigation;
|
||||||
|
using System.Windows.Shapes;
|
||||||
|
using System.Windows.Shell;
|
||||||
|
|
||||||
|
|
||||||
|
namespace YKC {
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// LoginWindow
|
||||||
|
/// </summary>
|
||||||
|
public partial class LoginWindow : System.Windows.Window, System.Windows.Markup.IComponentConnector {
|
||||||
|
|
||||||
|
|
||||||
|
#line 24 "..\..\LoginWindow.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBox txtUsername;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 28 "..\..\LoginWindow.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.PasswordBox txtPassword;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 30 "..\..\LoginWindow.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.Button btnLogin;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 35 "..\..\LoginWindow.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtError;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
private bool _contentLoaded;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// InitializeComponent
|
||||||
|
/// </summary>
|
||||||
|
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
|
||||||
|
public void InitializeComponent() {
|
||||||
|
if (_contentLoaded) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_contentLoaded = true;
|
||||||
|
System.Uri resourceLocater = new System.Uri("/YKC;component/loginwindow.xaml", System.UriKind.Relative);
|
||||||
|
|
||||||
|
#line 1 "..\..\LoginWindow.xaml"
|
||||||
|
System.Windows.Application.LoadComponent(this, resourceLocater);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
}
|
||||||
|
|
||||||
|
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
|
||||||
|
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
|
||||||
|
void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
|
||||||
|
switch (connectionId)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
this.txtUsername = ((System.Windows.Controls.TextBox)(target));
|
||||||
|
return;
|
||||||
|
case 2:
|
||||||
|
this.txtPassword = ((System.Windows.Controls.PasswordBox)(target));
|
||||||
|
return;
|
||||||
|
case 3:
|
||||||
|
this.btnLogin = ((System.Windows.Controls.Button)(target));
|
||||||
|
|
||||||
|
#line 33 "..\..\LoginWindow.xaml"
|
||||||
|
this.btnLogin.Click += new System.Windows.RoutedEventHandler(this.Login_Click);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
return;
|
||||||
|
case 4:
|
||||||
|
this.txtError = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this._contentLoaded = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
BIN
上位机/YKC/obj/Debug/MainWindow.baml
Normal file
BIN
上位机/YKC/obj/Debug/MainWindow.baml
Normal file
Binary file not shown.
194
上位机/YKC/obj/Debug/MainWindow.g.cs
Normal file
194
上位机/YKC/obj/Debug/MainWindow.g.cs
Normal file
@@ -0,0 +1,194 @@
|
|||||||
|
#pragma checksum "..\..\MainWindow.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "971CC5B57AF7C8C90EEFD1CD5BF5F4033C0F29A3DDEBC4D68144258B257B7158"
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// 此代码由工具生成。
|
||||||
|
// 运行时版本:4.0.30319.42000
|
||||||
|
//
|
||||||
|
// 对此文件的更改可能会导致不正确的行为,并且如果
|
||||||
|
// 重新生成代码,这些更改将会丢失。
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Automation;
|
||||||
|
using System.Windows.Controls;
|
||||||
|
using System.Windows.Controls.Primitives;
|
||||||
|
using System.Windows.Data;
|
||||||
|
using System.Windows.Documents;
|
||||||
|
using System.Windows.Ink;
|
||||||
|
using System.Windows.Input;
|
||||||
|
using System.Windows.Markup;
|
||||||
|
using System.Windows.Media;
|
||||||
|
using System.Windows.Media.Animation;
|
||||||
|
using System.Windows.Media.Effects;
|
||||||
|
using System.Windows.Media.Imaging;
|
||||||
|
using System.Windows.Media.Media3D;
|
||||||
|
using System.Windows.Media.TextFormatting;
|
||||||
|
using System.Windows.Navigation;
|
||||||
|
using System.Windows.Shapes;
|
||||||
|
using System.Windows.Shell;
|
||||||
|
|
||||||
|
|
||||||
|
namespace YKC {
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// MainWindow
|
||||||
|
/// </summary>
|
||||||
|
public partial class MainWindow : System.Windows.Window, System.Windows.Markup.IComponentConnector {
|
||||||
|
|
||||||
|
|
||||||
|
#line 34 "..\..\MainWindow.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.Button btnDashboard;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 37 "..\..\MainWindow.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.Button btnRealtime;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 40 "..\..\MainWindow.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.Button btnCharger;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 43 "..\..\MainWindow.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.Button btnGateway;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 61 "..\..\MainWindow.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtPageTitle;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 65 "..\..\MainWindow.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtUser;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 74 "..\..\MainWindow.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.Frame contentFrame;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
private bool _contentLoaded;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// InitializeComponent
|
||||||
|
/// </summary>
|
||||||
|
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
|
||||||
|
public void InitializeComponent() {
|
||||||
|
if (_contentLoaded) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_contentLoaded = true;
|
||||||
|
System.Uri resourceLocater = new System.Uri("/YKC;component/mainwindow.xaml", System.UriKind.Relative);
|
||||||
|
|
||||||
|
#line 1 "..\..\MainWindow.xaml"
|
||||||
|
System.Windows.Application.LoadComponent(this, resourceLocater);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
}
|
||||||
|
|
||||||
|
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
|
||||||
|
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
|
||||||
|
void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
|
||||||
|
switch (connectionId)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
|
||||||
|
#line 28 "..\..\MainWindow.xaml"
|
||||||
|
((System.Windows.Controls.Border)(target)).MouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(this.Header_MouseDown);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
return;
|
||||||
|
case 2:
|
||||||
|
this.btnDashboard = ((System.Windows.Controls.Button)(target));
|
||||||
|
|
||||||
|
#line 35 "..\..\MainWindow.xaml"
|
||||||
|
this.btnDashboard.Click += new System.Windows.RoutedEventHandler(this.NavButton_Click);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
return;
|
||||||
|
case 3:
|
||||||
|
this.btnRealtime = ((System.Windows.Controls.Button)(target));
|
||||||
|
|
||||||
|
#line 38 "..\..\MainWindow.xaml"
|
||||||
|
this.btnRealtime.Click += new System.Windows.RoutedEventHandler(this.NavButton_Click);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
return;
|
||||||
|
case 4:
|
||||||
|
this.btnCharger = ((System.Windows.Controls.Button)(target));
|
||||||
|
|
||||||
|
#line 41 "..\..\MainWindow.xaml"
|
||||||
|
this.btnCharger.Click += new System.Windows.RoutedEventHandler(this.NavButton_Click);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
return;
|
||||||
|
case 5:
|
||||||
|
this.btnGateway = ((System.Windows.Controls.Button)(target));
|
||||||
|
|
||||||
|
#line 44 "..\..\MainWindow.xaml"
|
||||||
|
this.btnGateway.Click += new System.Windows.RoutedEventHandler(this.NavButton_Click);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
return;
|
||||||
|
case 6:
|
||||||
|
this.txtPageTitle = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 7:
|
||||||
|
this.txtUser = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 8:
|
||||||
|
|
||||||
|
#line 68 "..\..\MainWindow.xaml"
|
||||||
|
((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.Logout_Click);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
return;
|
||||||
|
case 9:
|
||||||
|
this.contentFrame = ((System.Windows.Controls.Frame)(target));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this._contentLoaded = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
194
上位机/YKC/obj/Debug/MainWindow.g.i.cs
Normal file
194
上位机/YKC/obj/Debug/MainWindow.g.i.cs
Normal file
@@ -0,0 +1,194 @@
|
|||||||
|
#pragma checksum "..\..\MainWindow.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "971CC5B57AF7C8C90EEFD1CD5BF5F4033C0F29A3DDEBC4D68144258B257B7158"
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// 此代码由工具生成。
|
||||||
|
// 运行时版本:4.0.30319.42000
|
||||||
|
//
|
||||||
|
// 对此文件的更改可能会导致不正确的行为,并且如果
|
||||||
|
// 重新生成代码,这些更改将会丢失。
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Automation;
|
||||||
|
using System.Windows.Controls;
|
||||||
|
using System.Windows.Controls.Primitives;
|
||||||
|
using System.Windows.Data;
|
||||||
|
using System.Windows.Documents;
|
||||||
|
using System.Windows.Ink;
|
||||||
|
using System.Windows.Input;
|
||||||
|
using System.Windows.Markup;
|
||||||
|
using System.Windows.Media;
|
||||||
|
using System.Windows.Media.Animation;
|
||||||
|
using System.Windows.Media.Effects;
|
||||||
|
using System.Windows.Media.Imaging;
|
||||||
|
using System.Windows.Media.Media3D;
|
||||||
|
using System.Windows.Media.TextFormatting;
|
||||||
|
using System.Windows.Navigation;
|
||||||
|
using System.Windows.Shapes;
|
||||||
|
using System.Windows.Shell;
|
||||||
|
|
||||||
|
|
||||||
|
namespace YKC {
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// MainWindow
|
||||||
|
/// </summary>
|
||||||
|
public partial class MainWindow : System.Windows.Window, System.Windows.Markup.IComponentConnector {
|
||||||
|
|
||||||
|
|
||||||
|
#line 34 "..\..\MainWindow.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.Button btnDashboard;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 37 "..\..\MainWindow.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.Button btnRealtime;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 40 "..\..\MainWindow.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.Button btnCharger;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 43 "..\..\MainWindow.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.Button btnGateway;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 61 "..\..\MainWindow.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtPageTitle;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 65 "..\..\MainWindow.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtUser;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 74 "..\..\MainWindow.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.Frame contentFrame;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
private bool _contentLoaded;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// InitializeComponent
|
||||||
|
/// </summary>
|
||||||
|
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
|
||||||
|
public void InitializeComponent() {
|
||||||
|
if (_contentLoaded) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_contentLoaded = true;
|
||||||
|
System.Uri resourceLocater = new System.Uri("/YKC;component/mainwindow.xaml", System.UriKind.Relative);
|
||||||
|
|
||||||
|
#line 1 "..\..\MainWindow.xaml"
|
||||||
|
System.Windows.Application.LoadComponent(this, resourceLocater);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
}
|
||||||
|
|
||||||
|
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
|
||||||
|
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
|
||||||
|
void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
|
||||||
|
switch (connectionId)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
|
||||||
|
#line 28 "..\..\MainWindow.xaml"
|
||||||
|
((System.Windows.Controls.Border)(target)).MouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(this.Header_MouseDown);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
return;
|
||||||
|
case 2:
|
||||||
|
this.btnDashboard = ((System.Windows.Controls.Button)(target));
|
||||||
|
|
||||||
|
#line 35 "..\..\MainWindow.xaml"
|
||||||
|
this.btnDashboard.Click += new System.Windows.RoutedEventHandler(this.NavButton_Click);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
return;
|
||||||
|
case 3:
|
||||||
|
this.btnRealtime = ((System.Windows.Controls.Button)(target));
|
||||||
|
|
||||||
|
#line 38 "..\..\MainWindow.xaml"
|
||||||
|
this.btnRealtime.Click += new System.Windows.RoutedEventHandler(this.NavButton_Click);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
return;
|
||||||
|
case 4:
|
||||||
|
this.btnCharger = ((System.Windows.Controls.Button)(target));
|
||||||
|
|
||||||
|
#line 41 "..\..\MainWindow.xaml"
|
||||||
|
this.btnCharger.Click += new System.Windows.RoutedEventHandler(this.NavButton_Click);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
return;
|
||||||
|
case 5:
|
||||||
|
this.btnGateway = ((System.Windows.Controls.Button)(target));
|
||||||
|
|
||||||
|
#line 44 "..\..\MainWindow.xaml"
|
||||||
|
this.btnGateway.Click += new System.Windows.RoutedEventHandler(this.NavButton_Click);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
return;
|
||||||
|
case 6:
|
||||||
|
this.txtPageTitle = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 7:
|
||||||
|
this.txtUser = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 8:
|
||||||
|
|
||||||
|
#line 68 "..\..\MainWindow.xaml"
|
||||||
|
((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.Logout_Click);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
return;
|
||||||
|
case 9:
|
||||||
|
this.contentFrame = ((System.Windows.Controls.Frame)(target));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this._contentLoaded = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
BIN
上位机/YKC/obj/Debug/Pages/ChargerPage.baml
Normal file
BIN
上位机/YKC/obj/Debug/Pages/ChargerPage.baml
Normal file
Binary file not shown.
244
上位机/YKC/obj/Debug/Pages/ChargerPage.g.cs
Normal file
244
上位机/YKC/obj/Debug/Pages/ChargerPage.g.cs
Normal file
@@ -0,0 +1,244 @@
|
|||||||
|
#pragma checksum "..\..\..\Pages\ChargerPage.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "C0301C7F4B365AA464333B677A7BAC04916A4E141B083003114E616F02126402"
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// 此代码由工具生成。
|
||||||
|
// 运行时版本:4.0.30319.42000
|
||||||
|
//
|
||||||
|
// 对此文件的更改可能会导致不正确的行为,并且如果
|
||||||
|
// 重新生成代码,这些更改将会丢失。
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Automation;
|
||||||
|
using System.Windows.Controls;
|
||||||
|
using System.Windows.Controls.Primitives;
|
||||||
|
using System.Windows.Data;
|
||||||
|
using System.Windows.Documents;
|
||||||
|
using System.Windows.Ink;
|
||||||
|
using System.Windows.Input;
|
||||||
|
using System.Windows.Markup;
|
||||||
|
using System.Windows.Media;
|
||||||
|
using System.Windows.Media.Animation;
|
||||||
|
using System.Windows.Media.Effects;
|
||||||
|
using System.Windows.Media.Imaging;
|
||||||
|
using System.Windows.Media.Media3D;
|
||||||
|
using System.Windows.Media.TextFormatting;
|
||||||
|
using System.Windows.Navigation;
|
||||||
|
using System.Windows.Shapes;
|
||||||
|
using System.Windows.Shell;
|
||||||
|
|
||||||
|
|
||||||
|
namespace YKC {
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ChargerPage
|
||||||
|
/// </summary>
|
||||||
|
public partial class ChargerPage : System.Windows.Controls.Page, System.Windows.Markup.IComponentConnector {
|
||||||
|
|
||||||
|
|
||||||
|
#line 25 "..\..\..\Pages\ChargerPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBox txtSetPileIdx;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 29 "..\..\..\Pages\ChargerPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBox txtSetPileId;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 36 "..\..\..\Pages\ChargerPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtSetResult;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 51 "..\..\..\Pages\ChargerPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBox txtInfoPileIdx;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 55 "..\..\..\Pages\ChargerPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtInfoResult;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 60 "..\..\..\Pages\ChargerPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.Border panelInfo;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 64 "..\..\..\Pages\ChargerPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtInfoSerial;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 66 "..\..\..\Pages\ChargerPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtInfoType;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 68 "..\..\..\Pages\ChargerPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtInfoGuns;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 70 "..\..\..\Pages\ChargerPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtInfoProto;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 72 "..\..\..\Pages\ChargerPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtInfoSw;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 74 "..\..\..\Pages\ChargerPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtInfoSim;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 89 "..\..\..\Pages\ChargerPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtRebootResult;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
private bool _contentLoaded;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// InitializeComponent
|
||||||
|
/// </summary>
|
||||||
|
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
|
||||||
|
public void InitializeComponent() {
|
||||||
|
if (_contentLoaded) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_contentLoaded = true;
|
||||||
|
System.Uri resourceLocater = new System.Uri("/YKC;component/pages/chargerpage.xaml", System.UriKind.Relative);
|
||||||
|
|
||||||
|
#line 1 "..\..\..\Pages\ChargerPage.xaml"
|
||||||
|
System.Windows.Application.LoadComponent(this, resourceLocater);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
}
|
||||||
|
|
||||||
|
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
|
||||||
|
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
|
||||||
|
void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
|
||||||
|
switch (connectionId)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
this.txtSetPileIdx = ((System.Windows.Controls.TextBox)(target));
|
||||||
|
return;
|
||||||
|
case 2:
|
||||||
|
this.txtSetPileId = ((System.Windows.Controls.TextBox)(target));
|
||||||
|
return;
|
||||||
|
case 3:
|
||||||
|
|
||||||
|
#line 35 "..\..\..\Pages\ChargerPage.xaml"
|
||||||
|
((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.SetPileId_Click);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
return;
|
||||||
|
case 4:
|
||||||
|
this.txtSetResult = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 5:
|
||||||
|
this.txtInfoPileIdx = ((System.Windows.Controls.TextBox)(target));
|
||||||
|
return;
|
||||||
|
case 6:
|
||||||
|
|
||||||
|
#line 54 "..\..\..\Pages\ChargerPage.xaml"
|
||||||
|
((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.GetPileInfo_Click);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
return;
|
||||||
|
case 7:
|
||||||
|
this.txtInfoResult = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 8:
|
||||||
|
this.panelInfo = ((System.Windows.Controls.Border)(target));
|
||||||
|
return;
|
||||||
|
case 9:
|
||||||
|
this.txtInfoSerial = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 10:
|
||||||
|
this.txtInfoType = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 11:
|
||||||
|
this.txtInfoGuns = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 12:
|
||||||
|
this.txtInfoProto = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 13:
|
||||||
|
this.txtInfoSw = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 14:
|
||||||
|
this.txtInfoSim = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 15:
|
||||||
|
|
||||||
|
#line 88 "..\..\..\Pages\ChargerPage.xaml"
|
||||||
|
((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.Reboot_Click);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
return;
|
||||||
|
case 16:
|
||||||
|
this.txtRebootResult = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this._contentLoaded = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
244
上位机/YKC/obj/Debug/Pages/ChargerPage.g.i.cs
Normal file
244
上位机/YKC/obj/Debug/Pages/ChargerPage.g.i.cs
Normal file
@@ -0,0 +1,244 @@
|
|||||||
|
#pragma checksum "..\..\..\Pages\ChargerPage.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "C0301C7F4B365AA464333B677A7BAC04916A4E141B083003114E616F02126402"
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// 此代码由工具生成。
|
||||||
|
// 运行时版本:4.0.30319.42000
|
||||||
|
//
|
||||||
|
// 对此文件的更改可能会导致不正确的行为,并且如果
|
||||||
|
// 重新生成代码,这些更改将会丢失。
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Automation;
|
||||||
|
using System.Windows.Controls;
|
||||||
|
using System.Windows.Controls.Primitives;
|
||||||
|
using System.Windows.Data;
|
||||||
|
using System.Windows.Documents;
|
||||||
|
using System.Windows.Ink;
|
||||||
|
using System.Windows.Input;
|
||||||
|
using System.Windows.Markup;
|
||||||
|
using System.Windows.Media;
|
||||||
|
using System.Windows.Media.Animation;
|
||||||
|
using System.Windows.Media.Effects;
|
||||||
|
using System.Windows.Media.Imaging;
|
||||||
|
using System.Windows.Media.Media3D;
|
||||||
|
using System.Windows.Media.TextFormatting;
|
||||||
|
using System.Windows.Navigation;
|
||||||
|
using System.Windows.Shapes;
|
||||||
|
using System.Windows.Shell;
|
||||||
|
|
||||||
|
|
||||||
|
namespace YKC {
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ChargerPage
|
||||||
|
/// </summary>
|
||||||
|
public partial class ChargerPage : System.Windows.Controls.Page, System.Windows.Markup.IComponentConnector {
|
||||||
|
|
||||||
|
|
||||||
|
#line 25 "..\..\..\Pages\ChargerPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBox txtSetPileIdx;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 29 "..\..\..\Pages\ChargerPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBox txtSetPileId;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 36 "..\..\..\Pages\ChargerPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtSetResult;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 51 "..\..\..\Pages\ChargerPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBox txtInfoPileIdx;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 55 "..\..\..\Pages\ChargerPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtInfoResult;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 60 "..\..\..\Pages\ChargerPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.Border panelInfo;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 64 "..\..\..\Pages\ChargerPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtInfoSerial;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 66 "..\..\..\Pages\ChargerPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtInfoType;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 68 "..\..\..\Pages\ChargerPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtInfoGuns;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 70 "..\..\..\Pages\ChargerPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtInfoProto;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 72 "..\..\..\Pages\ChargerPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtInfoSw;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 74 "..\..\..\Pages\ChargerPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtInfoSim;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 89 "..\..\..\Pages\ChargerPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtRebootResult;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
private bool _contentLoaded;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// InitializeComponent
|
||||||
|
/// </summary>
|
||||||
|
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
|
||||||
|
public void InitializeComponent() {
|
||||||
|
if (_contentLoaded) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_contentLoaded = true;
|
||||||
|
System.Uri resourceLocater = new System.Uri("/YKC;component/pages/chargerpage.xaml", System.UriKind.Relative);
|
||||||
|
|
||||||
|
#line 1 "..\..\..\Pages\ChargerPage.xaml"
|
||||||
|
System.Windows.Application.LoadComponent(this, resourceLocater);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
}
|
||||||
|
|
||||||
|
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
|
||||||
|
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
|
||||||
|
void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
|
||||||
|
switch (connectionId)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
this.txtSetPileIdx = ((System.Windows.Controls.TextBox)(target));
|
||||||
|
return;
|
||||||
|
case 2:
|
||||||
|
this.txtSetPileId = ((System.Windows.Controls.TextBox)(target));
|
||||||
|
return;
|
||||||
|
case 3:
|
||||||
|
|
||||||
|
#line 35 "..\..\..\Pages\ChargerPage.xaml"
|
||||||
|
((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.SetPileId_Click);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
return;
|
||||||
|
case 4:
|
||||||
|
this.txtSetResult = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 5:
|
||||||
|
this.txtInfoPileIdx = ((System.Windows.Controls.TextBox)(target));
|
||||||
|
return;
|
||||||
|
case 6:
|
||||||
|
|
||||||
|
#line 54 "..\..\..\Pages\ChargerPage.xaml"
|
||||||
|
((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.GetPileInfo_Click);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
return;
|
||||||
|
case 7:
|
||||||
|
this.txtInfoResult = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 8:
|
||||||
|
this.panelInfo = ((System.Windows.Controls.Border)(target));
|
||||||
|
return;
|
||||||
|
case 9:
|
||||||
|
this.txtInfoSerial = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 10:
|
||||||
|
this.txtInfoType = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 11:
|
||||||
|
this.txtInfoGuns = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 12:
|
||||||
|
this.txtInfoProto = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 13:
|
||||||
|
this.txtInfoSw = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 14:
|
||||||
|
this.txtInfoSim = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 15:
|
||||||
|
|
||||||
|
#line 88 "..\..\..\Pages\ChargerPage.xaml"
|
||||||
|
((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.Reboot_Click);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
return;
|
||||||
|
case 16:
|
||||||
|
this.txtRebootResult = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this._contentLoaded = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
BIN
上位机/YKC/obj/Debug/Pages/DashboardPage.baml
Normal file
BIN
上位机/YKC/obj/Debug/Pages/DashboardPage.baml
Normal file
Binary file not shown.
129
上位机/YKC/obj/Debug/Pages/DashboardPage.g.cs
Normal file
129
上位机/YKC/obj/Debug/Pages/DashboardPage.g.cs
Normal file
@@ -0,0 +1,129 @@
|
|||||||
|
#pragma checksum "..\..\..\Pages\DashboardPage.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "1508FCA098B53360DD176713F2E4977308A7F57161CCE5CD2E7FF08AF66F460C"
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// 此代码由工具生成。
|
||||||
|
// 运行时版本:4.0.30319.42000
|
||||||
|
//
|
||||||
|
// 对此文件的更改可能会导致不正确的行为,并且如果
|
||||||
|
// 重新生成代码,这些更改将会丢失。
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Automation;
|
||||||
|
using System.Windows.Controls;
|
||||||
|
using System.Windows.Controls.Primitives;
|
||||||
|
using System.Windows.Data;
|
||||||
|
using System.Windows.Documents;
|
||||||
|
using System.Windows.Ink;
|
||||||
|
using System.Windows.Input;
|
||||||
|
using System.Windows.Markup;
|
||||||
|
using System.Windows.Media;
|
||||||
|
using System.Windows.Media.Animation;
|
||||||
|
using System.Windows.Media.Effects;
|
||||||
|
using System.Windows.Media.Imaging;
|
||||||
|
using System.Windows.Media.Media3D;
|
||||||
|
using System.Windows.Media.TextFormatting;
|
||||||
|
using System.Windows.Navigation;
|
||||||
|
using System.Windows.Shapes;
|
||||||
|
using System.Windows.Shell;
|
||||||
|
|
||||||
|
|
||||||
|
namespace YKC {
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// DashboardPage
|
||||||
|
/// </summary>
|
||||||
|
public partial class DashboardPage : System.Windows.Controls.Page, System.Windows.Markup.IComponentConnector {
|
||||||
|
|
||||||
|
|
||||||
|
#line 14 "..\..\..\Pages\DashboardPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtConnStatus;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 22 "..\..\..\Pages\DashboardPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtOnlineCount;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 30 "..\..\..\Pages\DashboardPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtChargingCount;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 47 "..\..\..\Pages\DashboardPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.DataGrid dgPiles;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
private bool _contentLoaded;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// InitializeComponent
|
||||||
|
/// </summary>
|
||||||
|
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
|
||||||
|
public void InitializeComponent() {
|
||||||
|
if (_contentLoaded) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_contentLoaded = true;
|
||||||
|
System.Uri resourceLocater = new System.Uri("/YKC;component/pages/dashboardpage.xaml", System.UriKind.Relative);
|
||||||
|
|
||||||
|
#line 1 "..\..\..\Pages\DashboardPage.xaml"
|
||||||
|
System.Windows.Application.LoadComponent(this, resourceLocater);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
}
|
||||||
|
|
||||||
|
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
|
||||||
|
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
|
||||||
|
void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
|
||||||
|
switch (connectionId)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
this.txtConnStatus = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 2:
|
||||||
|
this.txtOnlineCount = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 3:
|
||||||
|
this.txtChargingCount = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 4:
|
||||||
|
|
||||||
|
#line 42 "..\..\..\Pages\DashboardPage.xaml"
|
||||||
|
((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.Refresh_Click);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
return;
|
||||||
|
case 5:
|
||||||
|
this.dgPiles = ((System.Windows.Controls.DataGrid)(target));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this._contentLoaded = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
129
上位机/YKC/obj/Debug/Pages/DashboardPage.g.i.cs
Normal file
129
上位机/YKC/obj/Debug/Pages/DashboardPage.g.i.cs
Normal file
@@ -0,0 +1,129 @@
|
|||||||
|
#pragma checksum "..\..\..\Pages\DashboardPage.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "1508FCA098B53360DD176713F2E4977308A7F57161CCE5CD2E7FF08AF66F460C"
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// 此代码由工具生成。
|
||||||
|
// 运行时版本:4.0.30319.42000
|
||||||
|
//
|
||||||
|
// 对此文件的更改可能会导致不正确的行为,并且如果
|
||||||
|
// 重新生成代码,这些更改将会丢失。
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Automation;
|
||||||
|
using System.Windows.Controls;
|
||||||
|
using System.Windows.Controls.Primitives;
|
||||||
|
using System.Windows.Data;
|
||||||
|
using System.Windows.Documents;
|
||||||
|
using System.Windows.Ink;
|
||||||
|
using System.Windows.Input;
|
||||||
|
using System.Windows.Markup;
|
||||||
|
using System.Windows.Media;
|
||||||
|
using System.Windows.Media.Animation;
|
||||||
|
using System.Windows.Media.Effects;
|
||||||
|
using System.Windows.Media.Imaging;
|
||||||
|
using System.Windows.Media.Media3D;
|
||||||
|
using System.Windows.Media.TextFormatting;
|
||||||
|
using System.Windows.Navigation;
|
||||||
|
using System.Windows.Shapes;
|
||||||
|
using System.Windows.Shell;
|
||||||
|
|
||||||
|
|
||||||
|
namespace YKC {
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// DashboardPage
|
||||||
|
/// </summary>
|
||||||
|
public partial class DashboardPage : System.Windows.Controls.Page, System.Windows.Markup.IComponentConnector {
|
||||||
|
|
||||||
|
|
||||||
|
#line 14 "..\..\..\Pages\DashboardPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtConnStatus;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 22 "..\..\..\Pages\DashboardPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtOnlineCount;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 30 "..\..\..\Pages\DashboardPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtChargingCount;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 47 "..\..\..\Pages\DashboardPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.DataGrid dgPiles;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
private bool _contentLoaded;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// InitializeComponent
|
||||||
|
/// </summary>
|
||||||
|
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
|
||||||
|
public void InitializeComponent() {
|
||||||
|
if (_contentLoaded) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_contentLoaded = true;
|
||||||
|
System.Uri resourceLocater = new System.Uri("/YKC;component/pages/dashboardpage.xaml", System.UriKind.Relative);
|
||||||
|
|
||||||
|
#line 1 "..\..\..\Pages\DashboardPage.xaml"
|
||||||
|
System.Windows.Application.LoadComponent(this, resourceLocater);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
}
|
||||||
|
|
||||||
|
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
|
||||||
|
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
|
||||||
|
void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
|
||||||
|
switch (connectionId)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
this.txtConnStatus = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 2:
|
||||||
|
this.txtOnlineCount = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 3:
|
||||||
|
this.txtChargingCount = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 4:
|
||||||
|
|
||||||
|
#line 42 "..\..\..\Pages\DashboardPage.xaml"
|
||||||
|
((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.Refresh_Click);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
return;
|
||||||
|
case 5:
|
||||||
|
this.dgPiles = ((System.Windows.Controls.DataGrid)(target));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this._contentLoaded = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
BIN
上位机/YKC/obj/Debug/Pages/GatewayPage.baml
Normal file
BIN
上位机/YKC/obj/Debug/Pages/GatewayPage.baml
Normal file
Binary file not shown.
323
上位机/YKC/obj/Debug/Pages/GatewayPage.g.cs
Normal file
323
上位机/YKC/obj/Debug/Pages/GatewayPage.g.cs
Normal file
@@ -0,0 +1,323 @@
|
|||||||
|
#pragma checksum "..\..\..\Pages\GatewayPage.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "AD46577C7B1F8341FA8948443614B6661F41BCF60263F7064FF2BFEBAFA9DC81"
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// 此代码由工具生成。
|
||||||
|
// 运行时版本:4.0.30319.42000
|
||||||
|
//
|
||||||
|
// 对此文件的更改可能会导致不正确的行为,并且如果
|
||||||
|
// 重新生成代码,这些更改将会丢失。
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Automation;
|
||||||
|
using System.Windows.Controls;
|
||||||
|
using System.Windows.Controls.Primitives;
|
||||||
|
using System.Windows.Data;
|
||||||
|
using System.Windows.Documents;
|
||||||
|
using System.Windows.Ink;
|
||||||
|
using System.Windows.Input;
|
||||||
|
using System.Windows.Markup;
|
||||||
|
using System.Windows.Media;
|
||||||
|
using System.Windows.Media.Animation;
|
||||||
|
using System.Windows.Media.Effects;
|
||||||
|
using System.Windows.Media.Imaging;
|
||||||
|
using System.Windows.Media.Media3D;
|
||||||
|
using System.Windows.Media.TextFormatting;
|
||||||
|
using System.Windows.Navigation;
|
||||||
|
using System.Windows.Shapes;
|
||||||
|
using System.Windows.Shell;
|
||||||
|
|
||||||
|
|
||||||
|
namespace YKC {
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// GatewayPage
|
||||||
|
/// </summary>
|
||||||
|
public partial class GatewayPage : System.Windows.Controls.Page, System.Windows.Markup.IComponentConnector {
|
||||||
|
|
||||||
|
|
||||||
|
#line 25 "..\..\..\Pages\GatewayPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtGwId;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 29 "..\..\..\Pages\GatewayPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtGwSw;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 32 "..\..\..\Pages\GatewayPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtGwHw;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 35 "..\..\..\Pages\GatewayPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtGwUptime;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 40 "..\..\..\Pages\GatewayPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtGwStatus;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 54 "..\..\..\Pages\GatewayPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtSim;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 58 "..\..\..\Pages\GatewayPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtNetStatus;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 62 "..\..\..\Pages\GatewayPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtSignal;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 65 "..\..\..\Pages\GatewayPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtIsp;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 70 "..\..\..\Pages\GatewayPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txt4GStatus;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 91 "..\..\..\Pages\GatewayPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBox txtCloudHost;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 95 "..\..\..\Pages\GatewayPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBox txtCloudPort;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 103 "..\..\..\Pages\GatewayPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtCloudResult;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 117 "..\..\..\Pages\GatewayPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBox txtNetIp;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 121 "..\..\..\Pages\GatewayPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBox txtNetMask;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 125 "..\..\..\Pages\GatewayPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBox txtNetGw;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 129 "..\..\..\Pages\GatewayPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBox txtNetDns;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 137 "..\..\..\Pages\GatewayPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtNetResult;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
private bool _contentLoaded;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// InitializeComponent
|
||||||
|
/// </summary>
|
||||||
|
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
|
||||||
|
public void InitializeComponent() {
|
||||||
|
if (_contentLoaded) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_contentLoaded = true;
|
||||||
|
System.Uri resourceLocater = new System.Uri("/YKC;component/pages/gatewaypage.xaml", System.UriKind.Relative);
|
||||||
|
|
||||||
|
#line 1 "..\..\..\Pages\GatewayPage.xaml"
|
||||||
|
System.Windows.Application.LoadComponent(this, resourceLocater);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
}
|
||||||
|
|
||||||
|
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
|
||||||
|
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
|
||||||
|
void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
|
||||||
|
switch (connectionId)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
this.txtGwId = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 2:
|
||||||
|
this.txtGwSw = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 3:
|
||||||
|
this.txtGwHw = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 4:
|
||||||
|
this.txtGwUptime = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 5:
|
||||||
|
|
||||||
|
#line 39 "..\..\..\Pages\GatewayPage.xaml"
|
||||||
|
((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.RefreshGwInfo_Click);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
return;
|
||||||
|
case 6:
|
||||||
|
this.txtGwStatus = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 7:
|
||||||
|
this.txtSim = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 8:
|
||||||
|
this.txtNetStatus = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 9:
|
||||||
|
this.txtSignal = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 10:
|
||||||
|
this.txtIsp = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 11:
|
||||||
|
|
||||||
|
#line 69 "..\..\..\Pages\GatewayPage.xaml"
|
||||||
|
((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.Refresh4G_Click);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
return;
|
||||||
|
case 12:
|
||||||
|
this.txt4GStatus = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 13:
|
||||||
|
this.txtCloudHost = ((System.Windows.Controls.TextBox)(target));
|
||||||
|
return;
|
||||||
|
case 14:
|
||||||
|
this.txtCloudPort = ((System.Windows.Controls.TextBox)(target));
|
||||||
|
return;
|
||||||
|
case 15:
|
||||||
|
|
||||||
|
#line 100 "..\..\..\Pages\GatewayPage.xaml"
|
||||||
|
((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.LoadCloudConfig_Click);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
return;
|
||||||
|
case 16:
|
||||||
|
|
||||||
|
#line 102 "..\..\..\Pages\GatewayPage.xaml"
|
||||||
|
((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.SaveCloudConfig_Click);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
return;
|
||||||
|
case 17:
|
||||||
|
this.txtCloudResult = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 18:
|
||||||
|
this.txtNetIp = ((System.Windows.Controls.TextBox)(target));
|
||||||
|
return;
|
||||||
|
case 19:
|
||||||
|
this.txtNetMask = ((System.Windows.Controls.TextBox)(target));
|
||||||
|
return;
|
||||||
|
case 20:
|
||||||
|
this.txtNetGw = ((System.Windows.Controls.TextBox)(target));
|
||||||
|
return;
|
||||||
|
case 21:
|
||||||
|
this.txtNetDns = ((System.Windows.Controls.TextBox)(target));
|
||||||
|
return;
|
||||||
|
case 22:
|
||||||
|
|
||||||
|
#line 134 "..\..\..\Pages\GatewayPage.xaml"
|
||||||
|
((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.LoadNetConfig_Click);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
return;
|
||||||
|
case 23:
|
||||||
|
|
||||||
|
#line 136 "..\..\..\Pages\GatewayPage.xaml"
|
||||||
|
((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.SaveNetConfig_Click);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
return;
|
||||||
|
case 24:
|
||||||
|
this.txtNetResult = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this._contentLoaded = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
323
上位机/YKC/obj/Debug/Pages/GatewayPage.g.i.cs
Normal file
323
上位机/YKC/obj/Debug/Pages/GatewayPage.g.i.cs
Normal file
@@ -0,0 +1,323 @@
|
|||||||
|
#pragma checksum "..\..\..\Pages\GatewayPage.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "AD46577C7B1F8341FA8948443614B6661F41BCF60263F7064FF2BFEBAFA9DC81"
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// 此代码由工具生成。
|
||||||
|
// 运行时版本:4.0.30319.42000
|
||||||
|
//
|
||||||
|
// 对此文件的更改可能会导致不正确的行为,并且如果
|
||||||
|
// 重新生成代码,这些更改将会丢失。
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Automation;
|
||||||
|
using System.Windows.Controls;
|
||||||
|
using System.Windows.Controls.Primitives;
|
||||||
|
using System.Windows.Data;
|
||||||
|
using System.Windows.Documents;
|
||||||
|
using System.Windows.Ink;
|
||||||
|
using System.Windows.Input;
|
||||||
|
using System.Windows.Markup;
|
||||||
|
using System.Windows.Media;
|
||||||
|
using System.Windows.Media.Animation;
|
||||||
|
using System.Windows.Media.Effects;
|
||||||
|
using System.Windows.Media.Imaging;
|
||||||
|
using System.Windows.Media.Media3D;
|
||||||
|
using System.Windows.Media.TextFormatting;
|
||||||
|
using System.Windows.Navigation;
|
||||||
|
using System.Windows.Shapes;
|
||||||
|
using System.Windows.Shell;
|
||||||
|
|
||||||
|
|
||||||
|
namespace YKC {
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// GatewayPage
|
||||||
|
/// </summary>
|
||||||
|
public partial class GatewayPage : System.Windows.Controls.Page, System.Windows.Markup.IComponentConnector {
|
||||||
|
|
||||||
|
|
||||||
|
#line 25 "..\..\..\Pages\GatewayPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtGwId;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 29 "..\..\..\Pages\GatewayPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtGwSw;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 32 "..\..\..\Pages\GatewayPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtGwHw;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 35 "..\..\..\Pages\GatewayPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtGwUptime;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 40 "..\..\..\Pages\GatewayPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtGwStatus;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 54 "..\..\..\Pages\GatewayPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtSim;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 58 "..\..\..\Pages\GatewayPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtNetStatus;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 62 "..\..\..\Pages\GatewayPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtSignal;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 65 "..\..\..\Pages\GatewayPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtIsp;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 70 "..\..\..\Pages\GatewayPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txt4GStatus;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 91 "..\..\..\Pages\GatewayPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBox txtCloudHost;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 95 "..\..\..\Pages\GatewayPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBox txtCloudPort;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 103 "..\..\..\Pages\GatewayPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtCloudResult;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 117 "..\..\..\Pages\GatewayPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBox txtNetIp;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 121 "..\..\..\Pages\GatewayPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBox txtNetMask;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 125 "..\..\..\Pages\GatewayPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBox txtNetGw;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 129 "..\..\..\Pages\GatewayPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBox txtNetDns;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 137 "..\..\..\Pages\GatewayPage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtNetResult;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
private bool _contentLoaded;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// InitializeComponent
|
||||||
|
/// </summary>
|
||||||
|
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
|
||||||
|
public void InitializeComponent() {
|
||||||
|
if (_contentLoaded) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_contentLoaded = true;
|
||||||
|
System.Uri resourceLocater = new System.Uri("/YKC;component/pages/gatewaypage.xaml", System.UriKind.Relative);
|
||||||
|
|
||||||
|
#line 1 "..\..\..\Pages\GatewayPage.xaml"
|
||||||
|
System.Windows.Application.LoadComponent(this, resourceLocater);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
}
|
||||||
|
|
||||||
|
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
|
||||||
|
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
|
||||||
|
void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
|
||||||
|
switch (connectionId)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
this.txtGwId = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 2:
|
||||||
|
this.txtGwSw = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 3:
|
||||||
|
this.txtGwHw = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 4:
|
||||||
|
this.txtGwUptime = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 5:
|
||||||
|
|
||||||
|
#line 39 "..\..\..\Pages\GatewayPage.xaml"
|
||||||
|
((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.RefreshGwInfo_Click);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
return;
|
||||||
|
case 6:
|
||||||
|
this.txtGwStatus = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 7:
|
||||||
|
this.txtSim = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 8:
|
||||||
|
this.txtNetStatus = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 9:
|
||||||
|
this.txtSignal = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 10:
|
||||||
|
this.txtIsp = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 11:
|
||||||
|
|
||||||
|
#line 69 "..\..\..\Pages\GatewayPage.xaml"
|
||||||
|
((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.Refresh4G_Click);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
return;
|
||||||
|
case 12:
|
||||||
|
this.txt4GStatus = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 13:
|
||||||
|
this.txtCloudHost = ((System.Windows.Controls.TextBox)(target));
|
||||||
|
return;
|
||||||
|
case 14:
|
||||||
|
this.txtCloudPort = ((System.Windows.Controls.TextBox)(target));
|
||||||
|
return;
|
||||||
|
case 15:
|
||||||
|
|
||||||
|
#line 100 "..\..\..\Pages\GatewayPage.xaml"
|
||||||
|
((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.LoadCloudConfig_Click);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
return;
|
||||||
|
case 16:
|
||||||
|
|
||||||
|
#line 102 "..\..\..\Pages\GatewayPage.xaml"
|
||||||
|
((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.SaveCloudConfig_Click);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
return;
|
||||||
|
case 17:
|
||||||
|
this.txtCloudResult = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 18:
|
||||||
|
this.txtNetIp = ((System.Windows.Controls.TextBox)(target));
|
||||||
|
return;
|
||||||
|
case 19:
|
||||||
|
this.txtNetMask = ((System.Windows.Controls.TextBox)(target));
|
||||||
|
return;
|
||||||
|
case 20:
|
||||||
|
this.txtNetGw = ((System.Windows.Controls.TextBox)(target));
|
||||||
|
return;
|
||||||
|
case 21:
|
||||||
|
this.txtNetDns = ((System.Windows.Controls.TextBox)(target));
|
||||||
|
return;
|
||||||
|
case 22:
|
||||||
|
|
||||||
|
#line 134 "..\..\..\Pages\GatewayPage.xaml"
|
||||||
|
((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.LoadNetConfig_Click);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
return;
|
||||||
|
case 23:
|
||||||
|
|
||||||
|
#line 136 "..\..\..\Pages\GatewayPage.xaml"
|
||||||
|
((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.SaveNetConfig_Click);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
return;
|
||||||
|
case 24:
|
||||||
|
this.txtNetResult = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this._contentLoaded = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
BIN
上位机/YKC/obj/Debug/Pages/RealtimePage.baml
Normal file
BIN
上位机/YKC/obj/Debug/Pages/RealtimePage.baml
Normal file
Binary file not shown.
266
上位机/YKC/obj/Debug/Pages/RealtimePage.g.cs
Normal file
266
上位机/YKC/obj/Debug/Pages/RealtimePage.g.cs
Normal file
@@ -0,0 +1,266 @@
|
|||||||
|
#pragma checksum "..\..\..\Pages\RealtimePage.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "5EED3EEEA729DC8EA1B9280A5B02D0300579DE890C7796C5C8C4CF0D736781DD"
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// 此代码由工具生成。
|
||||||
|
// 运行时版本:4.0.30319.42000
|
||||||
|
//
|
||||||
|
// 对此文件的更改可能会导致不正确的行为,并且如果
|
||||||
|
// 重新生成代码,这些更改将会丢失。
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
using OxyPlot.Wpf;
|
||||||
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Automation;
|
||||||
|
using System.Windows.Controls;
|
||||||
|
using System.Windows.Controls.Primitives;
|
||||||
|
using System.Windows.Data;
|
||||||
|
using System.Windows.Documents;
|
||||||
|
using System.Windows.Ink;
|
||||||
|
using System.Windows.Input;
|
||||||
|
using System.Windows.Markup;
|
||||||
|
using System.Windows.Media;
|
||||||
|
using System.Windows.Media.Animation;
|
||||||
|
using System.Windows.Media.Effects;
|
||||||
|
using System.Windows.Media.Imaging;
|
||||||
|
using System.Windows.Media.Media3D;
|
||||||
|
using System.Windows.Media.TextFormatting;
|
||||||
|
using System.Windows.Navigation;
|
||||||
|
using System.Windows.Shapes;
|
||||||
|
using System.Windows.Shell;
|
||||||
|
|
||||||
|
|
||||||
|
namespace YKC {
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// RealtimePage
|
||||||
|
/// </summary>
|
||||||
|
public partial class RealtimePage : System.Windows.Controls.Page, System.Windows.Markup.IComponentConnector {
|
||||||
|
|
||||||
|
|
||||||
|
#line 18 "..\..\..\Pages\RealtimePage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.ComboBox cmbPile;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 26 "..\..\..\Pages\RealtimePage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.ComboBox cmbGun;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 39 "..\..\..\Pages\RealtimePage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtCurrent;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 47 "..\..\..\Pages\RealtimePage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtVoltage;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 55 "..\..\..\Pages\RealtimePage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtPower;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 63 "..\..\..\Pages\RealtimePage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtEnergy;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 71 "..\..\..\Pages\RealtimePage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtTotalAmount;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 79 "..\..\..\Pages\RealtimePage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtStatus;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 91 "..\..\..\Pages\RealtimePage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtOrderNo;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 100 "..\..\..\Pages\RealtimePage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtSoc;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 108 "..\..\..\Pages\RealtimePage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtCumTime;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 117 "..\..\..\Pages\RealtimePage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtRemTime;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 140 "..\..\..\Pages\RealtimePage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal OxyPlot.Wpf.PlotView plotCurrent;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 148 "..\..\..\Pages\RealtimePage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal OxyPlot.Wpf.PlotView plotVoltage;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 156 "..\..\..\Pages\RealtimePage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal OxyPlot.Wpf.PlotView plotPower;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 164 "..\..\..\Pages\RealtimePage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal OxyPlot.Wpf.PlotView plotAmount;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
private bool _contentLoaded;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// InitializeComponent
|
||||||
|
/// </summary>
|
||||||
|
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
|
||||||
|
public void InitializeComponent() {
|
||||||
|
if (_contentLoaded) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_contentLoaded = true;
|
||||||
|
System.Uri resourceLocater = new System.Uri("/YKC;component/pages/realtimepage.xaml", System.UriKind.Relative);
|
||||||
|
|
||||||
|
#line 1 "..\..\..\Pages\RealtimePage.xaml"
|
||||||
|
System.Windows.Application.LoadComponent(this, resourceLocater);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
}
|
||||||
|
|
||||||
|
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
|
||||||
|
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
|
||||||
|
void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
|
||||||
|
switch (connectionId)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
this.cmbPile = ((System.Windows.Controls.ComboBox)(target));
|
||||||
|
|
||||||
|
#line 19 "..\..\..\Pages\RealtimePage.xaml"
|
||||||
|
this.cmbPile.SelectionChanged += new System.Windows.Controls.SelectionChangedEventHandler(this.PileGun_Changed);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
return;
|
||||||
|
case 2:
|
||||||
|
this.cmbGun = ((System.Windows.Controls.ComboBox)(target));
|
||||||
|
|
||||||
|
#line 27 "..\..\..\Pages\RealtimePage.xaml"
|
||||||
|
this.cmbGun.SelectionChanged += new System.Windows.Controls.SelectionChangedEventHandler(this.PileGun_Changed);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
return;
|
||||||
|
case 3:
|
||||||
|
this.txtCurrent = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 4:
|
||||||
|
this.txtVoltage = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 5:
|
||||||
|
this.txtPower = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 6:
|
||||||
|
this.txtEnergy = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 7:
|
||||||
|
this.txtTotalAmount = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 8:
|
||||||
|
this.txtStatus = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 9:
|
||||||
|
this.txtOrderNo = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 10:
|
||||||
|
this.txtSoc = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 11:
|
||||||
|
this.txtCumTime = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 12:
|
||||||
|
this.txtRemTime = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 13:
|
||||||
|
this.plotCurrent = ((OxyPlot.Wpf.PlotView)(target));
|
||||||
|
return;
|
||||||
|
case 14:
|
||||||
|
this.plotVoltage = ((OxyPlot.Wpf.PlotView)(target));
|
||||||
|
return;
|
||||||
|
case 15:
|
||||||
|
this.plotPower = ((OxyPlot.Wpf.PlotView)(target));
|
||||||
|
return;
|
||||||
|
case 16:
|
||||||
|
this.plotAmount = ((OxyPlot.Wpf.PlotView)(target));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this._contentLoaded = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
266
上位机/YKC/obj/Debug/Pages/RealtimePage.g.i.cs
Normal file
266
上位机/YKC/obj/Debug/Pages/RealtimePage.g.i.cs
Normal file
@@ -0,0 +1,266 @@
|
|||||||
|
#pragma checksum "..\..\..\Pages\RealtimePage.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "5EED3EEEA729DC8EA1B9280A5B02D0300579DE890C7796C5C8C4CF0D736781DD"
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// 此代码由工具生成。
|
||||||
|
// 运行时版本:4.0.30319.42000
|
||||||
|
//
|
||||||
|
// 对此文件的更改可能会导致不正确的行为,并且如果
|
||||||
|
// 重新生成代码,这些更改将会丢失。
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
using OxyPlot.Wpf;
|
||||||
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Automation;
|
||||||
|
using System.Windows.Controls;
|
||||||
|
using System.Windows.Controls.Primitives;
|
||||||
|
using System.Windows.Data;
|
||||||
|
using System.Windows.Documents;
|
||||||
|
using System.Windows.Ink;
|
||||||
|
using System.Windows.Input;
|
||||||
|
using System.Windows.Markup;
|
||||||
|
using System.Windows.Media;
|
||||||
|
using System.Windows.Media.Animation;
|
||||||
|
using System.Windows.Media.Effects;
|
||||||
|
using System.Windows.Media.Imaging;
|
||||||
|
using System.Windows.Media.Media3D;
|
||||||
|
using System.Windows.Media.TextFormatting;
|
||||||
|
using System.Windows.Navigation;
|
||||||
|
using System.Windows.Shapes;
|
||||||
|
using System.Windows.Shell;
|
||||||
|
|
||||||
|
|
||||||
|
namespace YKC {
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// RealtimePage
|
||||||
|
/// </summary>
|
||||||
|
public partial class RealtimePage : System.Windows.Controls.Page, System.Windows.Markup.IComponentConnector {
|
||||||
|
|
||||||
|
|
||||||
|
#line 18 "..\..\..\Pages\RealtimePage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.ComboBox cmbPile;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 26 "..\..\..\Pages\RealtimePage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.ComboBox cmbGun;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 39 "..\..\..\Pages\RealtimePage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtCurrent;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 47 "..\..\..\Pages\RealtimePage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtVoltage;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 55 "..\..\..\Pages\RealtimePage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtPower;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 63 "..\..\..\Pages\RealtimePage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtEnergy;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 71 "..\..\..\Pages\RealtimePage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtTotalAmount;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 79 "..\..\..\Pages\RealtimePage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtStatus;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 91 "..\..\..\Pages\RealtimePage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtOrderNo;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 100 "..\..\..\Pages\RealtimePage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtSoc;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 108 "..\..\..\Pages\RealtimePage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtCumTime;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 117 "..\..\..\Pages\RealtimePage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal System.Windows.Controls.TextBlock txtRemTime;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 140 "..\..\..\Pages\RealtimePage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal OxyPlot.Wpf.PlotView plotCurrent;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 148 "..\..\..\Pages\RealtimePage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal OxyPlot.Wpf.PlotView plotVoltage;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 156 "..\..\..\Pages\RealtimePage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal OxyPlot.Wpf.PlotView plotPower;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
|
||||||
|
#line 164 "..\..\..\Pages\RealtimePage.xaml"
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
|
||||||
|
internal OxyPlot.Wpf.PlotView plotAmount;
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
|
||||||
|
private bool _contentLoaded;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// InitializeComponent
|
||||||
|
/// </summary>
|
||||||
|
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
|
||||||
|
public void InitializeComponent() {
|
||||||
|
if (_contentLoaded) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_contentLoaded = true;
|
||||||
|
System.Uri resourceLocater = new System.Uri("/YKC;component/pages/realtimepage.xaml", System.UriKind.Relative);
|
||||||
|
|
||||||
|
#line 1 "..\..\..\Pages\RealtimePage.xaml"
|
||||||
|
System.Windows.Application.LoadComponent(this, resourceLocater);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
}
|
||||||
|
|
||||||
|
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
|
||||||
|
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
|
||||||
|
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
|
||||||
|
void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
|
||||||
|
switch (connectionId)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
this.cmbPile = ((System.Windows.Controls.ComboBox)(target));
|
||||||
|
|
||||||
|
#line 19 "..\..\..\Pages\RealtimePage.xaml"
|
||||||
|
this.cmbPile.SelectionChanged += new System.Windows.Controls.SelectionChangedEventHandler(this.PileGun_Changed);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
return;
|
||||||
|
case 2:
|
||||||
|
this.cmbGun = ((System.Windows.Controls.ComboBox)(target));
|
||||||
|
|
||||||
|
#line 27 "..\..\..\Pages\RealtimePage.xaml"
|
||||||
|
this.cmbGun.SelectionChanged += new System.Windows.Controls.SelectionChangedEventHandler(this.PileGun_Changed);
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
return;
|
||||||
|
case 3:
|
||||||
|
this.txtCurrent = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 4:
|
||||||
|
this.txtVoltage = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 5:
|
||||||
|
this.txtPower = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 6:
|
||||||
|
this.txtEnergy = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 7:
|
||||||
|
this.txtTotalAmount = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 8:
|
||||||
|
this.txtStatus = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 9:
|
||||||
|
this.txtOrderNo = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 10:
|
||||||
|
this.txtSoc = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 11:
|
||||||
|
this.txtCumTime = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 12:
|
||||||
|
this.txtRemTime = ((System.Windows.Controls.TextBlock)(target));
|
||||||
|
return;
|
||||||
|
case 13:
|
||||||
|
this.plotCurrent = ((OxyPlot.Wpf.PlotView)(target));
|
||||||
|
return;
|
||||||
|
case 14:
|
||||||
|
this.plotVoltage = ((OxyPlot.Wpf.PlotView)(target));
|
||||||
|
return;
|
||||||
|
case 15:
|
||||||
|
this.plotPower = ((OxyPlot.Wpf.PlotView)(target));
|
||||||
|
return;
|
||||||
|
case 16:
|
||||||
|
this.plotAmount = ((OxyPlot.Wpf.PlotView)(target));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this._contentLoaded = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
BIN
上位机/YKC/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll
Normal file
BIN
上位机/YKC/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll
Normal file
Binary file not shown.
BIN
上位机/YKC/obj/Debug/YKC.Properties.Resources.resources
Normal file
BIN
上位机/YKC/obj/Debug/YKC.Properties.Resources.resources
Normal file
Binary file not shown.
BIN
上位机/YKC/obj/Debug/YKC.csproj.AssemblyReference.cache
Normal file
BIN
上位机/YKC/obj/Debug/YKC.csproj.AssemblyReference.cache
Normal file
Binary file not shown.
1
上位机/YKC/obj/Debug/YKC.csproj.CoreCompileInputs.cache
Normal file
1
上位机/YKC/obj/Debug/YKC.csproj.CoreCompileInputs.cache
Normal file
@@ -0,0 +1 @@
|
|||||||
|
b70b92aee237e65b6ea21cb2cfff89384ebd80dce4b9ea16adc79dd9cef2fdf5
|
||||||
30
上位机/YKC/obj/Debug/YKC.csproj.FileListAbsolute.txt
Normal file
30
上位机/YKC/obj/Debug/YKC.csproj.FileListAbsolute.txt
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
C:\Users\Administrator\PycharmProjects\PythonProject\C#\YKC\bin\Debug\YKC.exe.config
|
||||||
|
C:\Users\Administrator\PycharmProjects\PythonProject\C#\YKC\bin\Debug\YKC.exe
|
||||||
|
C:\Users\Administrator\PycharmProjects\PythonProject\C#\YKC\bin\Debug\YKC.pdb
|
||||||
|
C:\Users\Administrator\PycharmProjects\PythonProject\C#\YKC\obj\Debug\YKC.csproj.AssemblyReference.cache
|
||||||
|
C:\Users\Administrator\PycharmProjects\PythonProject\C#\YKC\obj\Debug\MainWindow.baml
|
||||||
|
C:\Users\Administrator\PycharmProjects\PythonProject\C#\YKC\obj\Debug\App.baml
|
||||||
|
C:\Users\Administrator\PycharmProjects\PythonProject\C#\YKC\obj\Debug\MainWindow.g.cs
|
||||||
|
C:\Users\Administrator\PycharmProjects\PythonProject\C#\YKC\obj\Debug\App.g.cs
|
||||||
|
C:\Users\Administrator\PycharmProjects\PythonProject\C#\YKC\obj\Debug\YKC_MarkupCompile.cache
|
||||||
|
C:\Users\Administrator\PycharmProjects\PythonProject\C#\YKC\obj\Debug\YKC.g.resources
|
||||||
|
C:\Users\Administrator\PycharmProjects\PythonProject\C#\YKC\obj\Debug\YKC.Properties.Resources.resources
|
||||||
|
C:\Users\Administrator\PycharmProjects\PythonProject\C#\YKC\obj\Debug\YKC.csproj.GenerateResource.cache
|
||||||
|
C:\Users\Administrator\PycharmProjects\PythonProject\C#\YKC\obj\Debug\YKC.csproj.CoreCompileInputs.cache
|
||||||
|
C:\Users\Administrator\PycharmProjects\PythonProject\C#\YKC\obj\Debug\YKC.exe
|
||||||
|
C:\Users\Administrator\PycharmProjects\PythonProject\C#\YKC\obj\Debug\YKC.pdb
|
||||||
|
C:\Users\Administrator\PycharmProjects\PythonProject\C#\YKC\obj\Debug\Pages\DashboardPage.baml
|
||||||
|
C:\Users\Administrator\PycharmProjects\PythonProject\C#\YKC\obj\Debug\Pages\RealtimePage.baml
|
||||||
|
C:\Users\Administrator\PycharmProjects\PythonProject\C#\YKC\obj\Debug\Pages\ChargerPage.baml
|
||||||
|
C:\Users\Administrator\PycharmProjects\PythonProject\C#\YKC\obj\Debug\Pages\GatewayPage.baml
|
||||||
|
C:\Users\Administrator\PycharmProjects\PythonProject\C#\YKC\obj\Debug\Pages\DashboardPage.g.cs
|
||||||
|
C:\Users\Administrator\PycharmProjects\PythonProject\C#\YKC\obj\Debug\Pages\RealtimePage.g.cs
|
||||||
|
C:\Users\Administrator\PycharmProjects\PythonProject\C#\YKC\obj\Debug\Pages\ChargerPage.g.cs
|
||||||
|
C:\Users\Administrator\PycharmProjects\PythonProject\C#\YKC\obj\Debug\Pages\GatewayPage.g.cs
|
||||||
|
C:\Users\Administrator\PycharmProjects\PythonProject\C#\YKC\bin\Debug\OxyPlot.dll
|
||||||
|
C:\Users\Administrator\PycharmProjects\PythonProject\C#\YKC\bin\Debug\OxyPlot.Wpf.dll
|
||||||
|
C:\Users\Administrator\PycharmProjects\PythonProject\C#\YKC\bin\Debug\OxyPlot.Wpf.Shared.dll
|
||||||
|
C:\Users\Administrator\PycharmProjects\PythonProject\C#\YKC\obj\Debug\YKC.csproj.Up2Date
|
||||||
|
C:\Users\Administrator\PycharmProjects\PythonProject\C#\YKC\bin\Debug\Newtonsoft.Json.dll
|
||||||
|
C:\Users\Administrator\PycharmProjects\PythonProject\C#\YKC\obj\Debug\LoginWindow.baml
|
||||||
|
C:\Users\Administrator\PycharmProjects\PythonProject\C#\YKC\obj\Debug\LoginWindow.g.cs
|
||||||
BIN
上位机/YKC/obj/Debug/YKC.csproj.GenerateResource.cache
Normal file
BIN
上位机/YKC/obj/Debug/YKC.csproj.GenerateResource.cache
Normal file
Binary file not shown.
0
上位机/YKC/obj/Debug/YKC.csproj.Up2Date
Normal file
0
上位机/YKC/obj/Debug/YKC.csproj.Up2Date
Normal file
BIN
上位机/YKC/obj/Debug/YKC.exe
Normal file
BIN
上位机/YKC/obj/Debug/YKC.exe
Normal file
Binary file not shown.
BIN
上位机/YKC/obj/Debug/YKC.g.resources
Normal file
BIN
上位机/YKC/obj/Debug/YKC.g.resources
Normal file
Binary file not shown.
BIN
上位机/YKC/obj/Debug/YKC.pdb
Normal file
BIN
上位机/YKC/obj/Debug/YKC.pdb
Normal file
Binary file not shown.
20
上位机/YKC/obj/Debug/YKC_MarkupCompile.cache
Normal file
20
上位机/YKC/obj/Debug/YKC_MarkupCompile.cache
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
YKC
|
||||||
|
|
||||||
|
|
||||||
|
winexe
|
||||||
|
C#
|
||||||
|
.cs
|
||||||
|
C:\Users\Administrator\PycharmProjects\PythonProject\C#\YKC\obj\Debug\
|
||||||
|
YKC
|
||||||
|
none
|
||||||
|
false
|
||||||
|
DEBUG;TRACE
|
||||||
|
C:\Users\Administrator\PycharmProjects\PythonProject\C#\YKC\App.xaml
|
||||||
|
6469827525
|
||||||
|
|
||||||
|
13-721072773
|
||||||
|
19-2120478581
|
||||||
|
MainWindow.xaml;LoginWindow.xaml;Pages\DashboardPage.xaml;Pages\RealtimePage.xaml;Pages\ChargerPage.xaml;Pages\GatewayPage.xaml;
|
||||||
|
|
||||||
|
False
|
||||||
|
|
||||||
20
上位机/YKC/obj/Debug/YKC_MarkupCompile.i.cache
Normal file
20
上位机/YKC/obj/Debug/YKC_MarkupCompile.i.cache
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
YKC
|
||||||
|
|
||||||
|
|
||||||
|
winexe
|
||||||
|
C#
|
||||||
|
.cs
|
||||||
|
C:\Users\Administrator\PycharmProjects\PythonProject\C#\YKC\obj\Debug\
|
||||||
|
YKC
|
||||||
|
none
|
||||||
|
false
|
||||||
|
DEBUG;TRACE
|
||||||
|
C:\Users\Administrator\PycharmProjects\PythonProject\C#\YKC\App.xaml
|
||||||
|
6469827525
|
||||||
|
|
||||||
|
141491805905
|
||||||
|
19-2120478581
|
||||||
|
MainWindow.xaml;LoginWindow.xaml;Pages\DashboardPage.xaml;Pages\RealtimePage.xaml;Pages\ChargerPage.xaml;Pages\GatewayPage.xaml;
|
||||||
|
|
||||||
|
False
|
||||||
|
|
||||||
72
上位机/YKC/obj/YKC.csproj.nuget.dgspec.json
Normal file
72
上位机/YKC/obj/YKC.csproj.nuget.dgspec.json
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
{
|
||||||
|
"format": 1,
|
||||||
|
"restore": {
|
||||||
|
"C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\YKC.csproj": {}
|
||||||
|
},
|
||||||
|
"projects": {
|
||||||
|
"C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\YKC.csproj": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"restore": {
|
||||||
|
"projectUniqueName": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\YKC.csproj",
|
||||||
|
"projectName": "YKC",
|
||||||
|
"projectPath": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\YKC.csproj",
|
||||||
|
"packagesPath": "C:\\Users\\Administrator\\.nuget\\packages\\",
|
||||||
|
"outputPath": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\obj\\",
|
||||||
|
"projectStyle": "PackageReference",
|
||||||
|
"skipContentFileWrite": true,
|
||||||
|
"UsingMicrosoftNETSdk": false,
|
||||||
|
"configFilePaths": [
|
||||||
|
"C:\\Users\\Administrator\\AppData\\Roaming\\NuGet\\NuGet.Config",
|
||||||
|
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
|
||||||
|
],
|
||||||
|
"originalTargetFrameworks": [
|
||||||
|
"net472"
|
||||||
|
],
|
||||||
|
"sources": {
|
||||||
|
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
|
||||||
|
"https://api.nuget.org/v3/index.json": {}
|
||||||
|
},
|
||||||
|
"frameworks": {
|
||||||
|
"net472": {
|
||||||
|
"framework": "net472",
|
||||||
|
"projectReferences": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"restoreAuditProperties": {
|
||||||
|
"enableAudit": "true",
|
||||||
|
"auditLevel": "low",
|
||||||
|
"auditMode": "direct"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"frameworks": {
|
||||||
|
"net472": {
|
||||||
|
"framework": "net472",
|
||||||
|
"dependencies": {
|
||||||
|
"Newtonsoft.Json": {
|
||||||
|
"target": "Package",
|
||||||
|
"version": "[13.0.3, )"
|
||||||
|
},
|
||||||
|
"OxyPlot.Wpf": {
|
||||||
|
"target": "Package",
|
||||||
|
"version": "[2.2.0, )"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtimes": {
|
||||||
|
"win": {
|
||||||
|
"#import": []
|
||||||
|
},
|
||||||
|
"win-arm64": {
|
||||||
|
"#import": []
|
||||||
|
},
|
||||||
|
"win-x64": {
|
||||||
|
"#import": []
|
||||||
|
},
|
||||||
|
"win-x86": {
|
||||||
|
"#import": []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
18
上位机/YKC/obj/YKC.csproj.nuget.g.props
Normal file
18
上位机/YKC/obj/YKC.csproj.nuget.g.props
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||||
|
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||||
|
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
|
||||||
|
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
|
||||||
|
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
|
||||||
|
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
|
||||||
|
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\Administrator\.nuget\packages\</NuGetPackageFolders>
|
||||||
|
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
|
||||||
|
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">7.0.0</NuGetToolVersion>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||||
|
<SourceRoot Include="C:\Users\Administrator\.nuget\packages\" />
|
||||||
|
</ItemGroup>
|
||||||
|
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||||
|
<PkgOxyPlot_Wpf Condition=" '$(PkgOxyPlot_Wpf)' == '' ">C:\Users\Administrator\.nuget\packages\oxyplot.wpf\2.2.0</PkgOxyPlot_Wpf>
|
||||||
|
</PropertyGroup>
|
||||||
|
</Project>
|
||||||
2
上位机/YKC/obj/YKC.csproj.nuget.g.targets
Normal file
2
上位机/YKC/obj/YKC.csproj.nuget.g.targets
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||||
|
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
|
||||||
972
上位机/YKC/obj/project.assets.json
Normal file
972
上位机/YKC/obj/project.assets.json
Normal file
@@ -0,0 +1,972 @@
|
|||||||
|
{
|
||||||
|
"version": 3,
|
||||||
|
"targets": {
|
||||||
|
".NETFramework,Version=v4.7.2": {
|
||||||
|
"Microsoft.NETFramework.ReferenceAssemblies/1.0.2": {
|
||||||
|
"type": "package",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETFramework.ReferenceAssemblies.net472": "1.0.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.NETFramework.ReferenceAssemblies.net472/1.0.2": {
|
||||||
|
"type": "package",
|
||||||
|
"build": {
|
||||||
|
"build/_._": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Newtonsoft.Json/13.0.3": {
|
||||||
|
"type": "package",
|
||||||
|
"compile": {
|
||||||
|
"lib/net45/Newtonsoft.Json.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/net45/Newtonsoft.Json.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"OxyPlot.Core/2.2.0": {
|
||||||
|
"type": "package",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETFramework.ReferenceAssemblies": "1.0.2"
|
||||||
|
},
|
||||||
|
"compile": {
|
||||||
|
"lib/net462/OxyPlot.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/net462/OxyPlot.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"OxyPlot.Wpf/2.2.0": {
|
||||||
|
"type": "package",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETFramework.ReferenceAssemblies": "1.0.2",
|
||||||
|
"OxyPlot.Core": "2.2.0",
|
||||||
|
"OxyPlot.Wpf.Shared": "2.2.0"
|
||||||
|
},
|
||||||
|
"frameworkAssemblies": [
|
||||||
|
"ReachFramework",
|
||||||
|
"System.Printing"
|
||||||
|
],
|
||||||
|
"compile": {
|
||||||
|
"lib/net462/OxyPlot.Wpf.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/net462/OxyPlot.Wpf.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"OxyPlot.Wpf.Shared/2.2.0": {
|
||||||
|
"type": "package",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETFramework.ReferenceAssemblies": "1.0.2",
|
||||||
|
"OxyPlot.Core": "2.2.0"
|
||||||
|
},
|
||||||
|
"compile": {
|
||||||
|
"lib/net462/OxyPlot.Wpf.Shared.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/net462/OxyPlot.Wpf.Shared.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
".NETFramework,Version=v4.7.2/win": {
|
||||||
|
"Microsoft.NETFramework.ReferenceAssemblies/1.0.2": {
|
||||||
|
"type": "package",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETFramework.ReferenceAssemblies.net472": "1.0.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.NETFramework.ReferenceAssemblies.net472/1.0.2": {
|
||||||
|
"type": "package",
|
||||||
|
"build": {
|
||||||
|
"build/_._": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Newtonsoft.Json/13.0.3": {
|
||||||
|
"type": "package",
|
||||||
|
"compile": {
|
||||||
|
"lib/net45/Newtonsoft.Json.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/net45/Newtonsoft.Json.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"OxyPlot.Core/2.2.0": {
|
||||||
|
"type": "package",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETFramework.ReferenceAssemblies": "1.0.2"
|
||||||
|
},
|
||||||
|
"compile": {
|
||||||
|
"lib/net462/OxyPlot.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/net462/OxyPlot.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"OxyPlot.Wpf/2.2.0": {
|
||||||
|
"type": "package",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETFramework.ReferenceAssemblies": "1.0.2",
|
||||||
|
"OxyPlot.Core": "2.2.0",
|
||||||
|
"OxyPlot.Wpf.Shared": "2.2.0"
|
||||||
|
},
|
||||||
|
"frameworkAssemblies": [
|
||||||
|
"ReachFramework",
|
||||||
|
"System.Printing"
|
||||||
|
],
|
||||||
|
"compile": {
|
||||||
|
"lib/net462/OxyPlot.Wpf.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/net462/OxyPlot.Wpf.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"OxyPlot.Wpf.Shared/2.2.0": {
|
||||||
|
"type": "package",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETFramework.ReferenceAssemblies": "1.0.2",
|
||||||
|
"OxyPlot.Core": "2.2.0"
|
||||||
|
},
|
||||||
|
"compile": {
|
||||||
|
"lib/net462/OxyPlot.Wpf.Shared.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/net462/OxyPlot.Wpf.Shared.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
".NETFramework,Version=v4.7.2/win-arm64": {
|
||||||
|
"Microsoft.NETFramework.ReferenceAssemblies/1.0.2": {
|
||||||
|
"type": "package",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETFramework.ReferenceAssemblies.net472": "1.0.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.NETFramework.ReferenceAssemblies.net472/1.0.2": {
|
||||||
|
"type": "package",
|
||||||
|
"build": {
|
||||||
|
"build/_._": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Newtonsoft.Json/13.0.3": {
|
||||||
|
"type": "package",
|
||||||
|
"compile": {
|
||||||
|
"lib/net45/Newtonsoft.Json.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/net45/Newtonsoft.Json.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"OxyPlot.Core/2.2.0": {
|
||||||
|
"type": "package",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETFramework.ReferenceAssemblies": "1.0.2"
|
||||||
|
},
|
||||||
|
"compile": {
|
||||||
|
"lib/net462/OxyPlot.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/net462/OxyPlot.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"OxyPlot.Wpf/2.2.0": {
|
||||||
|
"type": "package",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETFramework.ReferenceAssemblies": "1.0.2",
|
||||||
|
"OxyPlot.Core": "2.2.0",
|
||||||
|
"OxyPlot.Wpf.Shared": "2.2.0"
|
||||||
|
},
|
||||||
|
"frameworkAssemblies": [
|
||||||
|
"ReachFramework",
|
||||||
|
"System.Printing"
|
||||||
|
],
|
||||||
|
"compile": {
|
||||||
|
"lib/net462/OxyPlot.Wpf.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/net462/OxyPlot.Wpf.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"OxyPlot.Wpf.Shared/2.2.0": {
|
||||||
|
"type": "package",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETFramework.ReferenceAssemblies": "1.0.2",
|
||||||
|
"OxyPlot.Core": "2.2.0"
|
||||||
|
},
|
||||||
|
"compile": {
|
||||||
|
"lib/net462/OxyPlot.Wpf.Shared.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/net462/OxyPlot.Wpf.Shared.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
".NETFramework,Version=v4.7.2/win-x64": {
|
||||||
|
"Microsoft.NETFramework.ReferenceAssemblies/1.0.2": {
|
||||||
|
"type": "package",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETFramework.ReferenceAssemblies.net472": "1.0.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.NETFramework.ReferenceAssemblies.net472/1.0.2": {
|
||||||
|
"type": "package",
|
||||||
|
"build": {
|
||||||
|
"build/_._": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Newtonsoft.Json/13.0.3": {
|
||||||
|
"type": "package",
|
||||||
|
"compile": {
|
||||||
|
"lib/net45/Newtonsoft.Json.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/net45/Newtonsoft.Json.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"OxyPlot.Core/2.2.0": {
|
||||||
|
"type": "package",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETFramework.ReferenceAssemblies": "1.0.2"
|
||||||
|
},
|
||||||
|
"compile": {
|
||||||
|
"lib/net462/OxyPlot.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/net462/OxyPlot.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"OxyPlot.Wpf/2.2.0": {
|
||||||
|
"type": "package",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETFramework.ReferenceAssemblies": "1.0.2",
|
||||||
|
"OxyPlot.Core": "2.2.0",
|
||||||
|
"OxyPlot.Wpf.Shared": "2.2.0"
|
||||||
|
},
|
||||||
|
"frameworkAssemblies": [
|
||||||
|
"ReachFramework",
|
||||||
|
"System.Printing"
|
||||||
|
],
|
||||||
|
"compile": {
|
||||||
|
"lib/net462/OxyPlot.Wpf.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/net462/OxyPlot.Wpf.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"OxyPlot.Wpf.Shared/2.2.0": {
|
||||||
|
"type": "package",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETFramework.ReferenceAssemblies": "1.0.2",
|
||||||
|
"OxyPlot.Core": "2.2.0"
|
||||||
|
},
|
||||||
|
"compile": {
|
||||||
|
"lib/net462/OxyPlot.Wpf.Shared.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/net462/OxyPlot.Wpf.Shared.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
".NETFramework,Version=v4.7.2/win-x86": {
|
||||||
|
"Microsoft.NETFramework.ReferenceAssemblies/1.0.2": {
|
||||||
|
"type": "package",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETFramework.ReferenceAssemblies.net472": "1.0.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.NETFramework.ReferenceAssemblies.net472/1.0.2": {
|
||||||
|
"type": "package",
|
||||||
|
"build": {
|
||||||
|
"build/_._": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Newtonsoft.Json/13.0.3": {
|
||||||
|
"type": "package",
|
||||||
|
"compile": {
|
||||||
|
"lib/net45/Newtonsoft.Json.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/net45/Newtonsoft.Json.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"OxyPlot.Core/2.2.0": {
|
||||||
|
"type": "package",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETFramework.ReferenceAssemblies": "1.0.2"
|
||||||
|
},
|
||||||
|
"compile": {
|
||||||
|
"lib/net462/OxyPlot.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/net462/OxyPlot.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"OxyPlot.Wpf/2.2.0": {
|
||||||
|
"type": "package",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETFramework.ReferenceAssemblies": "1.0.2",
|
||||||
|
"OxyPlot.Core": "2.2.0",
|
||||||
|
"OxyPlot.Wpf.Shared": "2.2.0"
|
||||||
|
},
|
||||||
|
"frameworkAssemblies": [
|
||||||
|
"ReachFramework",
|
||||||
|
"System.Printing"
|
||||||
|
],
|
||||||
|
"compile": {
|
||||||
|
"lib/net462/OxyPlot.Wpf.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/net462/OxyPlot.Wpf.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"OxyPlot.Wpf.Shared/2.2.0": {
|
||||||
|
"type": "package",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETFramework.ReferenceAssemblies": "1.0.2",
|
||||||
|
"OxyPlot.Core": "2.2.0"
|
||||||
|
},
|
||||||
|
"compile": {
|
||||||
|
"lib/net462/OxyPlot.Wpf.Shared.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/net462/OxyPlot.Wpf.Shared.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"libraries": {
|
||||||
|
"Microsoft.NETFramework.ReferenceAssemblies/1.0.2": {
|
||||||
|
"sha512": "5/cSEVld+px/CuRrbohO/djfg6++eR6zGpy88MgqloXvkj//WXWpFZyu/OpkXPN0u5m+dN/EVwLNYFUxD4h2+A==",
|
||||||
|
"type": "package",
|
||||||
|
"path": "microsoft.netframework.referenceassemblies/1.0.2",
|
||||||
|
"files": [
|
||||||
|
".nupkg.metadata",
|
||||||
|
".signature.p7s",
|
||||||
|
"microsoft.netframework.referenceassemblies.1.0.2.nupkg.sha512",
|
||||||
|
"microsoft.netframework.referenceassemblies.nuspec"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Microsoft.NETFramework.ReferenceAssemblies.net472/1.0.2": {
|
||||||
|
"sha512": "ryAuwkvjMC9xYQ0VXsG7ZBo62y5tBmYaCnovOL5IXfnQPQqjvJGRkLMDyUx+dnCb96UVLJv83R6XK+sRnDnaZg==",
|
||||||
|
"type": "package",
|
||||||
|
"path": "microsoft.netframework.referenceassemblies.net472/1.0.2",
|
||||||
|
"files": [
|
||||||
|
".nupkg.metadata",
|
||||||
|
".signature.p7s",
|
||||||
|
"build/.NETFramework/v4.7.2/Accessibility.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Accessibility.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/CustomMarshalers.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/CustomMarshalers.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/Microsoft.Win32.Primitives.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.AppContext.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Collections.Concurrent.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Collections.NonGeneric.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Collections.Specialized.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Collections.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.ComponentModel.Annotations.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.ComponentModel.EventBasedAsync.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.ComponentModel.Primitives.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.ComponentModel.TypeConverter.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.ComponentModel.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Console.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Data.Common.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Diagnostics.Contracts.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Diagnostics.Debug.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Diagnostics.FileVersionInfo.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Diagnostics.Process.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Diagnostics.StackTrace.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Diagnostics.TextWriterTraceListener.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Diagnostics.Tools.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Diagnostics.TraceSource.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Drawing.Primitives.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Dynamic.Runtime.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Globalization.Calendars.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Globalization.Extensions.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Globalization.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.IO.Compression.ZipFile.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.IO.FileSystem.DriveInfo.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.IO.FileSystem.Primitives.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.IO.FileSystem.Watcher.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.IO.FileSystem.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.IO.IsolatedStorage.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.IO.MemoryMappedFiles.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.IO.Pipes.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.IO.UnmanagedMemoryStream.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.IO.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Linq.Expressions.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Linq.Parallel.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Linq.Queryable.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Linq.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Net.Http.Rtc.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Net.NameResolution.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Net.NetworkInformation.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Net.Ping.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Net.Primitives.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Net.Requests.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Net.Security.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Net.Sockets.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Net.WebHeaderCollection.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Net.WebSockets.Client.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Net.WebSockets.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.ObjectModel.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Reflection.Emit.ILGeneration.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Reflection.Emit.Lightweight.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Reflection.Emit.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Reflection.Extensions.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Reflection.Primitives.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Reflection.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Resources.Reader.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Resources.ResourceManager.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Resources.Writer.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Runtime.CompilerServices.VisualC.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Runtime.Extensions.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Runtime.Handles.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Runtime.InteropServices.RuntimeInformation.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Runtime.InteropServices.WindowsRuntime.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Runtime.InteropServices.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Runtime.Numerics.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Runtime.Serialization.Formatters.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Runtime.Serialization.Json.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Runtime.Serialization.Primitives.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Runtime.Serialization.Xml.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Runtime.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Security.Claims.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Security.Cryptography.Algorithms.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Security.Cryptography.Csp.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Security.Cryptography.Encoding.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Security.Cryptography.Primitives.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Security.Cryptography.X509Certificates.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Security.Principal.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Security.SecureString.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.ServiceModel.Duplex.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.ServiceModel.Http.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.ServiceModel.NetTcp.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.ServiceModel.Primitives.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.ServiceModel.Security.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Text.Encoding.Extensions.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Text.Encoding.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Text.RegularExpressions.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Threading.Overlapped.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Threading.Tasks.Parallel.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Threading.Tasks.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Threading.Thread.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Threading.ThreadPool.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Threading.Timer.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Threading.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.ValueTuple.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Xml.ReaderWriter.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Xml.XDocument.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Xml.XPath.XDocument.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Xml.XPath.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Xml.XmlDocument.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/System.Xml.XmlSerializer.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Facades/netstandard.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/ISymWrapper.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/ISymWrapper.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/Microsoft.Activities.Build.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Microsoft.Activities.Build.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/Microsoft.Build.Conversion.v4.0.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Microsoft.Build.Conversion.v4.0.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/Microsoft.Build.Engine.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Microsoft.Build.Engine.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/Microsoft.Build.Framework.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Microsoft.Build.Framework.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/Microsoft.Build.Tasks.v4.0.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Microsoft.Build.Tasks.v4.0.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/Microsoft.Build.Utilities.v4.0.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Microsoft.Build.Utilities.v4.0.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/Microsoft.Build.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Microsoft.Build.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/Microsoft.CSharp.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Microsoft.CSharp.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/Microsoft.JScript.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Microsoft.JScript.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/Microsoft.VisualBasic.Compatibility.Data.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Microsoft.VisualBasic.Compatibility.Data.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/Microsoft.VisualBasic.Compatibility.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Microsoft.VisualBasic.Compatibility.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/Microsoft.VisualBasic.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Microsoft.VisualBasic.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/Microsoft.VisualC.STLCLR.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Microsoft.VisualC.STLCLR.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/Microsoft.VisualC.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/Microsoft.VisualC.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/PermissionSets/FullTrust.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/PermissionSets/Internet.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/PermissionSets/LocalIntranet.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/PresentationBuildTasks.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/PresentationBuildTasks.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/PresentationCore.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/PresentationCore.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/PresentationFramework.Aero.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/PresentationFramework.Aero.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/PresentationFramework.Aero2.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/PresentationFramework.Aero2.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/PresentationFramework.AeroLite.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/PresentationFramework.AeroLite.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/PresentationFramework.Classic.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/PresentationFramework.Classic.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/PresentationFramework.Luna.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/PresentationFramework.Luna.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/PresentationFramework.Royale.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/PresentationFramework.Royale.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/PresentationFramework.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/PresentationFramework.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/ReachFramework.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/ReachFramework.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/RedistList/FrameworkList.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Activities.Core.Presentation.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Activities.Core.Presentation.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Activities.DurableInstancing.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Activities.DurableInstancing.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Activities.Presentation.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Activities.Presentation.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Activities.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Activities.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.AddIn.Contract.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.AddIn.Contract.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.AddIn.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.AddIn.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.ComponentModel.Composition.Registration.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.ComponentModel.Composition.Registration.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.ComponentModel.Composition.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.ComponentModel.Composition.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.ComponentModel.DataAnnotations.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.ComponentModel.DataAnnotations.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Configuration.Install.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Configuration.Install.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Configuration.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Configuration.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Core.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Core.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Data.DataSetExtensions.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Data.DataSetExtensions.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Data.Entity.Design.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Data.Entity.Design.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Data.Entity.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Data.Entity.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Data.Linq.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Data.Linq.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Data.OracleClient.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Data.OracleClient.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Data.Services.Client.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Data.Services.Client.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Data.Services.Design.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Data.Services.Design.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Data.Services.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Data.Services.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Data.SqlXml.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Data.SqlXml.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Data.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Data.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Deployment.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Deployment.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Design.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Design.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Device.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Device.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Diagnostics.Tracing.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Diagnostics.Tracing.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.DirectoryServices.AccountManagement.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.DirectoryServices.AccountManagement.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.DirectoryServices.Protocols.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.DirectoryServices.Protocols.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.DirectoryServices.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.DirectoryServices.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Drawing.Design.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Drawing.Design.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Drawing.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Drawing.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Dynamic.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.EnterpriseServices.Thunk.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.EnterpriseServices.Wrapper.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.EnterpriseServices.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.EnterpriseServices.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.IO.Compression.FileSystem.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.IO.Compression.FileSystem.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.IO.Compression.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.IO.Compression.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.IO.Log.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.IO.Log.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.IdentityModel.Selectors.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.IdentityModel.Selectors.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.IdentityModel.Services.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.IdentityModel.Services.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.IdentityModel.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.IdentityModel.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Linq.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Management.Instrumentation.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Management.Instrumentation.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Management.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Management.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Messaging.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Messaging.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Net.Http.WebRequest.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Net.Http.WebRequest.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Net.Http.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Net.Http.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Net.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Net.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Numerics.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Numerics.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Printing.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Printing.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Reflection.Context.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Reflection.Context.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Runtime.Caching.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Runtime.Caching.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Runtime.DurableInstancing.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Runtime.DurableInstancing.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Runtime.Remoting.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Runtime.Remoting.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Runtime.Serialization.Formatters.Soap.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Runtime.Serialization.Formatters.Soap.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Runtime.Serialization.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Runtime.Serialization.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Security.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Security.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.ServiceModel.Activation.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.ServiceModel.Activation.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.ServiceModel.Activities.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.ServiceModel.Activities.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.ServiceModel.Channels.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.ServiceModel.Channels.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.ServiceModel.Discovery.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.ServiceModel.Discovery.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.ServiceModel.Routing.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.ServiceModel.Routing.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.ServiceModel.Web.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.ServiceModel.Web.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.ServiceModel.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.ServiceModel.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.ServiceProcess.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.ServiceProcess.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Speech.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Speech.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Threading.Tasks.Dataflow.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Transactions.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Transactions.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Web.Abstractions.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Web.ApplicationServices.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Web.ApplicationServices.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Web.DataVisualization.Design.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Web.DataVisualization.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Web.DataVisualization.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Web.DynamicData.Design.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Web.DynamicData.Design.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Web.DynamicData.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Web.DynamicData.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Web.Entity.Design.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Web.Entity.Design.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Web.Entity.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Web.Entity.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Web.Extensions.Design.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Web.Extensions.Design.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Web.Extensions.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Web.Extensions.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Web.Mobile.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Web.Mobile.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Web.RegularExpressions.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Web.RegularExpressions.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Web.Routing.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Web.Services.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Web.Services.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Web.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Web.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Windows.Controls.Ribbon.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Windows.Controls.Ribbon.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Windows.Forms.DataVisualization.Design.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Windows.Forms.DataVisualization.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Windows.Forms.DataVisualization.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Windows.Forms.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Windows.Forms.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Windows.Input.Manipulations.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Windows.Input.Manipulations.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Windows.Presentation.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Windows.Presentation.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Windows.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Workflow.Activities.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Workflow.Activities.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Workflow.ComponentModel.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Workflow.ComponentModel.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Workflow.Runtime.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Workflow.Runtime.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.WorkflowServices.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.WorkflowServices.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Xaml.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Xaml.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Xml.Linq.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Xml.Linq.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Xml.Serialization.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Xml.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.Xml.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/System.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/System.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/UIAutomationClient.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/UIAutomationClient.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/UIAutomationClientsideProviders.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/UIAutomationClientsideProviders.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/UIAutomationProvider.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/UIAutomationProvider.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/UIAutomationTypes.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/UIAutomationTypes.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/WindowsBase.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/WindowsBase.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/WindowsFormsIntegration.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/WindowsFormsIntegration.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/XamlBuildTask.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/XamlBuildTask.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/mscorlib.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/mscorlib.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/namespaces.xml",
|
||||||
|
"build/.NETFramework/v4.7.2/sysglobl.dll",
|
||||||
|
"build/.NETFramework/v4.7.2/sysglobl.xml",
|
||||||
|
"build/Microsoft.NETFramework.ReferenceAssemblies.net472.targets",
|
||||||
|
"microsoft.netframework.referenceassemblies.net472.1.0.2.nupkg.sha512",
|
||||||
|
"microsoft.netframework.referenceassemblies.net472.nuspec"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Newtonsoft.Json/13.0.3": {
|
||||||
|
"sha512": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==",
|
||||||
|
"type": "package",
|
||||||
|
"path": "newtonsoft.json/13.0.3",
|
||||||
|
"files": [
|
||||||
|
".nupkg.metadata",
|
||||||
|
".signature.p7s",
|
||||||
|
"LICENSE.md",
|
||||||
|
"README.md",
|
||||||
|
"lib/net20/Newtonsoft.Json.dll",
|
||||||
|
"lib/net20/Newtonsoft.Json.xml",
|
||||||
|
"lib/net35/Newtonsoft.Json.dll",
|
||||||
|
"lib/net35/Newtonsoft.Json.xml",
|
||||||
|
"lib/net40/Newtonsoft.Json.dll",
|
||||||
|
"lib/net40/Newtonsoft.Json.xml",
|
||||||
|
"lib/net45/Newtonsoft.Json.dll",
|
||||||
|
"lib/net45/Newtonsoft.Json.xml",
|
||||||
|
"lib/net6.0/Newtonsoft.Json.dll",
|
||||||
|
"lib/net6.0/Newtonsoft.Json.xml",
|
||||||
|
"lib/netstandard1.0/Newtonsoft.Json.dll",
|
||||||
|
"lib/netstandard1.0/Newtonsoft.Json.xml",
|
||||||
|
"lib/netstandard1.3/Newtonsoft.Json.dll",
|
||||||
|
"lib/netstandard1.3/Newtonsoft.Json.xml",
|
||||||
|
"lib/netstandard2.0/Newtonsoft.Json.dll",
|
||||||
|
"lib/netstandard2.0/Newtonsoft.Json.xml",
|
||||||
|
"newtonsoft.json.13.0.3.nupkg.sha512",
|
||||||
|
"newtonsoft.json.nuspec",
|
||||||
|
"packageIcon.png"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"OxyPlot.Core/2.2.0": {
|
||||||
|
"sha512": "QhXNdXR5FPpro/VoLx3BOp6AhQo7YrbfmWEZ9cgY+pnYM7RYORZjnu+aDMA8ka9A1r8hLkX//NbCPZNUv+l8qA==",
|
||||||
|
"type": "package",
|
||||||
|
"path": "oxyplot.core/2.2.0",
|
||||||
|
"files": [
|
||||||
|
".nupkg.metadata",
|
||||||
|
".signature.p7s",
|
||||||
|
"OxyPlot_128.png",
|
||||||
|
"README.md",
|
||||||
|
"lib/net462/OxyPlot.dll",
|
||||||
|
"lib/net462/OxyPlot.xml",
|
||||||
|
"lib/net6.0/OxyPlot.dll",
|
||||||
|
"lib/net6.0/OxyPlot.xml",
|
||||||
|
"lib/net8.0/OxyPlot.dll",
|
||||||
|
"lib/net8.0/OxyPlot.xml",
|
||||||
|
"lib/netstandard2.0/OxyPlot.dll",
|
||||||
|
"lib/netstandard2.0/OxyPlot.xml",
|
||||||
|
"oxyplot.core.2.2.0.nupkg.sha512",
|
||||||
|
"oxyplot.core.nuspec"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"OxyPlot.Wpf/2.2.0": {
|
||||||
|
"sha512": "69KzgsMWpJSZmeXZt07FwfV7B1D4CM1nl0MWMj4wjrCsb3USBMo32up1+fQIjxp5tHCPdGwX9VWhSxW8nsY7pQ==",
|
||||||
|
"type": "package",
|
||||||
|
"path": "oxyplot.wpf/2.2.0",
|
||||||
|
"hasTools": true,
|
||||||
|
"files": [
|
||||||
|
".nupkg.metadata",
|
||||||
|
".signature.p7s",
|
||||||
|
"OxyPlot_128.png",
|
||||||
|
"README.md",
|
||||||
|
"lib/net462/OxyPlot.Wpf.dll",
|
||||||
|
"lib/net462/OxyPlot.Wpf.xml",
|
||||||
|
"lib/net6.0-windows7.0/OxyPlot.Wpf.dll",
|
||||||
|
"lib/net6.0-windows7.0/OxyPlot.Wpf.xml",
|
||||||
|
"lib/net8.0-windows7.0/OxyPlot.Wpf.dll",
|
||||||
|
"lib/net8.0-windows7.0/OxyPlot.Wpf.xml",
|
||||||
|
"oxyplot.wpf.2.2.0.nupkg.sha512",
|
||||||
|
"oxyplot.wpf.nuspec",
|
||||||
|
"tools/VisualStudioToolsManifest.xml"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"OxyPlot.Wpf.Shared/2.2.0": {
|
||||||
|
"sha512": "JoOD/feTOlKFmgXqeTNrl4Ze0i0L6WizPapNw9pXwot+cnI0qhFgYv3tFjlSdu51hZw0EgmcgeRXMtm5bkueYA==",
|
||||||
|
"type": "package",
|
||||||
|
"path": "oxyplot.wpf.shared/2.2.0",
|
||||||
|
"files": [
|
||||||
|
".nupkg.metadata",
|
||||||
|
".signature.p7s",
|
||||||
|
"OxyPlot_128.png",
|
||||||
|
"README.md",
|
||||||
|
"lib/net462/OxyPlot.Wpf.Shared.dll",
|
||||||
|
"lib/net462/OxyPlot.Wpf.Shared.xml",
|
||||||
|
"lib/net6.0-windows7.0/OxyPlot.Wpf.Shared.dll",
|
||||||
|
"lib/net6.0-windows7.0/OxyPlot.Wpf.Shared.xml",
|
||||||
|
"lib/net8.0-windows7.0/OxyPlot.Wpf.Shared.dll",
|
||||||
|
"lib/net8.0-windows7.0/OxyPlot.Wpf.Shared.xml",
|
||||||
|
"oxyplot.wpf.shared.2.2.0.nupkg.sha512",
|
||||||
|
"oxyplot.wpf.shared.nuspec"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"projectFileDependencyGroups": {
|
||||||
|
".NETFramework,Version=v4.7.2": [
|
||||||
|
"Newtonsoft.Json >= 13.0.3",
|
||||||
|
"OxyPlot.Wpf >= 2.2.0"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"packageFolders": {
|
||||||
|
"C:\\Users\\Administrator\\.nuget\\packages\\": {}
|
||||||
|
},
|
||||||
|
"project": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"restore": {
|
||||||
|
"projectUniqueName": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\YKC.csproj",
|
||||||
|
"projectName": "YKC",
|
||||||
|
"projectPath": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\YKC.csproj",
|
||||||
|
"packagesPath": "C:\\Users\\Administrator\\.nuget\\packages\\",
|
||||||
|
"outputPath": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\obj\\",
|
||||||
|
"projectStyle": "PackageReference",
|
||||||
|
"skipContentFileWrite": true,
|
||||||
|
"UsingMicrosoftNETSdk": false,
|
||||||
|
"configFilePaths": [
|
||||||
|
"C:\\Users\\Administrator\\AppData\\Roaming\\NuGet\\NuGet.Config",
|
||||||
|
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
|
||||||
|
],
|
||||||
|
"originalTargetFrameworks": [
|
||||||
|
"net472"
|
||||||
|
],
|
||||||
|
"sources": {
|
||||||
|
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
|
||||||
|
"https://api.nuget.org/v3/index.json": {}
|
||||||
|
},
|
||||||
|
"frameworks": {
|
||||||
|
"net472": {
|
||||||
|
"framework": "net472",
|
||||||
|
"projectReferences": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"restoreAuditProperties": {
|
||||||
|
"enableAudit": "true",
|
||||||
|
"auditLevel": "low",
|
||||||
|
"auditMode": "direct"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"frameworks": {
|
||||||
|
"net472": {
|
||||||
|
"framework": "net472",
|
||||||
|
"dependencies": {
|
||||||
|
"Newtonsoft.Json": {
|
||||||
|
"target": "Package",
|
||||||
|
"version": "[13.0.3, )"
|
||||||
|
},
|
||||||
|
"OxyPlot.Wpf": {
|
||||||
|
"target": "Package",
|
||||||
|
"version": "[2.2.0, )"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtimes": {
|
||||||
|
"win": {
|
||||||
|
"#import": []
|
||||||
|
},
|
||||||
|
"win-arm64": {
|
||||||
|
"#import": []
|
||||||
|
},
|
||||||
|
"win-x64": {
|
||||||
|
"#import": []
|
||||||
|
},
|
||||||
|
"win-x86": {
|
||||||
|
"#import": []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
15
上位机/YKC/obj/project.nuget.cache
Normal file
15
上位机/YKC/obj/project.nuget.cache
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"version": 2,
|
||||||
|
"dgSpecHash": "isVL+vjG9Iw=",
|
||||||
|
"success": true,
|
||||||
|
"projectFilePath": "C:\\Users\\Administrator\\PycharmProjects\\PythonProject\\C#\\YKC\\YKC.csproj",
|
||||||
|
"expectedPackageFiles": [
|
||||||
|
"C:\\Users\\Administrator\\.nuget\\packages\\microsoft.netframework.referenceassemblies\\1.0.2\\microsoft.netframework.referenceassemblies.1.0.2.nupkg.sha512",
|
||||||
|
"C:\\Users\\Administrator\\.nuget\\packages\\microsoft.netframework.referenceassemblies.net472\\1.0.2\\microsoft.netframework.referenceassemblies.net472.1.0.2.nupkg.sha512",
|
||||||
|
"C:\\Users\\Administrator\\.nuget\\packages\\newtonsoft.json\\13.0.3\\newtonsoft.json.13.0.3.nupkg.sha512",
|
||||||
|
"C:\\Users\\Administrator\\.nuget\\packages\\oxyplot.core\\2.2.0\\oxyplot.core.2.2.0.nupkg.sha512",
|
||||||
|
"C:\\Users\\Administrator\\.nuget\\packages\\oxyplot.wpf\\2.2.0\\oxyplot.wpf.2.2.0.nupkg.sha512",
|
||||||
|
"C:\\Users\\Administrator\\.nuget\\packages\\oxyplot.wpf.shared\\2.2.0\\oxyplot.wpf.shared.2.2.0.nupkg.sha512"
|
||||||
|
],
|
||||||
|
"logs": []
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user