fix: 修复电子负载通信相关问题并优化批量发送逻辑
1. 修改apps/chrg/applications/utils/chrg_eload.c:移除idx为0时的LCD显示条件代码,修复文件末尾换行缺失 2. 修改apps/chrg/applications/thread/chrg_comm.c:移除冗余的全局指针变量,优化调试打印信息 3. 修改apps/chrg/applications/thread/chrg_roll_sou.c:新增电流命令覆盖逻辑,优化线程接收超时配置,移除不必要的延时
This commit is contained in:
@@ -537,8 +537,6 @@ eMBException funcReadHoldingRegister (rt_uint8_t *reqFrame, rt_uint16_t reqLen,
|
|||||||
rt_uint8_t *resFrame, rt_uint16_t *resLen)
|
rt_uint8_t *resFrame, rt_uint16_t *resLen)
|
||||||
{
|
{
|
||||||
rt_uint16_t regAddress = 0, cntReg = 0;
|
rt_uint16_t regAddress = 0, cntReg = 0;
|
||||||
struct chrg_north_t *pNOR = &chrgnorth;
|
|
||||||
struct chrg_switch_t *pSW = &pNOR->sw[0];
|
|
||||||
eMBException eStatus = MB_EX_NONE;
|
eMBException eStatus = MB_EX_NONE;
|
||||||
eMBErrorCode eRegStatus;
|
eMBErrorCode eRegStatus;
|
||||||
|
|
||||||
@@ -562,7 +560,7 @@ eMBException funcReadHoldingRegister (rt_uint8_t *reqFrame, rt_uint16_t reqLen,
|
|||||||
} else {
|
} else {
|
||||||
*resLen = 3+cntReg * 2;
|
*resLen = 3+cntReg * 2;
|
||||||
}
|
}
|
||||||
rt_kprintf("------COM VOLT =%d -------\n------COM CURR =%d-------", pSW->Now_voltage,pSW->Now_current);
|
rt_kprintf("------COM READ addr=%d count=%d-------\n", regAddress, cntReg);
|
||||||
return eStatus;
|
return eStatus;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,373 +1,3 @@
|
|||||||
// /****************************************************************************
|
|
||||||
// 文件名称 : chrg_roll_sou.c
|
|
||||||
// 完成日期 :
|
|
||||||
// 当前版本号 : V1.0
|
|
||||||
// 主要功能 : 实现南向通信轮巡请求命令。以独立线程处理。
|
|
||||||
// 版本历史 : 创建原始版本
|
|
||||||
// 说明 :
|
|
||||||
// ******************************************************************************/
|
|
||||||
|
|
||||||
// #include <stdlib.h>
|
|
||||||
// #include <string.h>
|
|
||||||
// #include <rtthread.h>
|
|
||||||
|
|
||||||
// #include "chrg_def.h"
|
|
||||||
// #include "chrg_led.h"
|
|
||||||
// #include "chrg_thread.h"
|
|
||||||
// #include "chrg_roll_sou.h"
|
|
||||||
// #include "chrg_eload.h"
|
|
||||||
// #include "chrg_utils.h"
|
|
||||||
|
|
||||||
// #define LOG_TAG "chrg.rollsou"
|
|
||||||
// #include <rtdbg.h>
|
|
||||||
|
|
||||||
// struct chrg_rollsou_t chrgrollsou = {
|
|
||||||
// .run = RUN_AUTO,
|
|
||||||
// .ch = IDX_SOU_CH1,
|
|
||||||
// .part = MB_R_PART1,
|
|
||||||
// .mode = 0,
|
|
||||||
// };
|
|
||||||
|
|
||||||
// #define SOU_CMD_QUEUE_SIZE 4
|
|
||||||
|
|
||||||
// struct chrg_sou_cmd_t {
|
|
||||||
// eIDX_SOU_CH ch;
|
|
||||||
// rt_uint16_t reg;
|
|
||||||
// rt_uint16_t value;
|
|
||||||
// };
|
|
||||||
|
|
||||||
// static struct chrg_sou_cmd_t sou_cmd_queue[SOU_CMD_QUEUE_SIZE];
|
|
||||||
// static rt_uint8_t sou_cmd_head = 0;
|
|
||||||
// static rt_uint8_t sou_cmd_tail = 0;
|
|
||||||
// static rt_uint8_t sou_cmd_count = 0;
|
|
||||||
|
|
||||||
// static void sou_cmd_enqueue(eIDX_SOU_CH ch, rt_uint16_t reg, rt_uint16_t value)
|
|
||||||
// {
|
|
||||||
// if (sou_cmd_count < SOU_CMD_QUEUE_SIZE) {
|
|
||||||
// sou_cmd_queue[sou_cmd_tail].ch = ch;
|
|
||||||
// sou_cmd_queue[sou_cmd_tail].reg = reg;
|
|
||||||
// sou_cmd_queue[sou_cmd_tail].value = value;
|
|
||||||
// sou_cmd_tail = (sou_cmd_tail + 1) % SOU_CMD_QUEUE_SIZE;
|
|
||||||
// sou_cmd_count++;
|
|
||||||
// } else {
|
|
||||||
// LOG_W("sou command queue full, drop command\n");
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
// static int sou_cmd_dequeue(struct chrg_sou_cmd_t *cmd)
|
|
||||||
// {
|
|
||||||
// if (sou_cmd_count == 0) {
|
|
||||||
// return -1;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// cmd->ch = sou_cmd_queue[sou_cmd_head].ch;
|
|
||||||
// cmd->reg = sou_cmd_queue[sou_cmd_head].reg;
|
|
||||||
// cmd->value = sou_cmd_queue[sou_cmd_head].value;
|
|
||||||
// sou_cmd_head = (sou_cmd_head + 1) % SOU_CMD_QUEUE_SIZE;
|
|
||||||
// sou_cmd_count--;
|
|
||||||
// return 0;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// static int sou_cmd_exists(void)
|
|
||||||
// {
|
|
||||||
// return sou_cmd_count > 0;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// /*****************************************************************
|
|
||||||
// 函数名称: chrg_set_sou_reg
|
|
||||||
// 函数描述: 南向通道设置寄存器请求命令
|
|
||||||
// 输入参数: idx:通道 reg:寄存器地址 value:寄存器值
|
|
||||||
// 输出参数: -
|
|
||||||
// 返回说明: -
|
|
||||||
// 其它说明: -
|
|
||||||
// *****************************************************************/
|
|
||||||
// void chrg_set_sou_reg (eIDX_SOU_CH idx, rt_uint16_t reg, rt_uint16_t value)
|
|
||||||
// {
|
|
||||||
// struct chrg_thread_t *pTHR = &chrgthr[IDX_THR_ROLL_SOU];
|
|
||||||
// struct chrg_rollsou_t *pROLL = &chrgrollsou;
|
|
||||||
|
|
||||||
// rt_mutex_take(pTHR->mutex, RT_WAITING_FOREVER);
|
|
||||||
// sou_cmd_enqueue(idx, reg, value);
|
|
||||||
// pROLL->run = RUN_LCD;
|
|
||||||
// rt_mutex_release(pTHR->mutex);
|
|
||||||
// rt_kprintf("ch=:%d,reg=%02x,value=%02x\n",idx,reg,value);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// /*****************************************************************
|
|
||||||
// 函数名称: chrg_send_sou_upadata_data
|
|
||||||
// 函数描述: 南向通道升级命令
|
|
||||||
// 输入参数: idx:通道 reg:寄存器地址 value:寄存器值
|
|
||||||
// 输出参数: -
|
|
||||||
// 返回说明: -
|
|
||||||
// 其它说明: -
|
|
||||||
// *****************************************************************/
|
|
||||||
// void chrg_send_sou_upadata_data (rt_uint8_t *buf,rt_uint16_t leng)
|
|
||||||
// {
|
|
||||||
// struct chrg_thread_t *pTHR = &chrgthr[IDX_THR_ROLL_SOU];
|
|
||||||
// struct chrg_rollsou_t *pROLL = &chrgrollsou;
|
|
||||||
// pROLL->updata_data = buf;
|
|
||||||
// pROLL->leng = leng;
|
|
||||||
// // rt_kprintf("idx=%d,reg=%02x,value=%02x\n",RUN_UPDATAidx,reg,value);
|
|
||||||
// rt_mutex_take(pTHR->mutex, RT_WAITING_FOREVER);
|
|
||||||
// pROLL->run = RUN_UPDATA;
|
|
||||||
// rt_mutex_release(pTHR->mutex);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// ///*****************************************************************
|
|
||||||
// //函数名称: chrg_set_sou_more_reg
|
|
||||||
// //函数描述: 南向通道设置寄存器请求命令
|
|
||||||
// //输入参数: idx:通道 reg:寄存器地址 value:寄存器值 value2:第二个寄存器值
|
|
||||||
// //输出参数: -
|
|
||||||
// //返回说明: -
|
|
||||||
// //其它说明: -
|
|
||||||
// //*****************************************************************/
|
|
||||||
// //void chrg_set_sou_more_reg (eIDX_SOU_CH idx, rt_uint16_t reg, rt_uint16_t value,rt_uint16_t value2)
|
|
||||||
// //{
|
|
||||||
// // struct chrg_thread_t *pTHR = &chrgthr[IDX_THR_ROLL_SOU];
|
|
||||||
// // struct chrg_rollsou_t *pROLL = &chrgrollsou;
|
|
||||||
// // pROLL->more_reg_flag = 1; // 使用多寄存器标志位
|
|
||||||
// // pROLL->ch = idx;
|
|
||||||
// // pROLL->reg = reg;
|
|
||||||
// // pROLL->value = value;
|
|
||||||
// // pROLL->value2 = value2;
|
|
||||||
// // rt_mutex_take(pTHR->mutex, RT_WAITING_FOREVER);
|
|
||||||
// // pROLL->run = RUN_LCD;
|
|
||||||
// // rt_mutex_release(pTHR->mutex);
|
|
||||||
// //}
|
|
||||||
// /*****************************************************************
|
|
||||||
// 函数名称: chrg_roll_sou_thread_entry
|
|
||||||
// 函数描述: 南向通道轮巡请求数据线程体
|
|
||||||
// 输入参数: *data: 本线程信息
|
|
||||||
// 输出参数: -
|
|
||||||
// 返回说明: -
|
|
||||||
// 其它说明: -
|
|
||||||
// *****************************************************************/
|
|
||||||
// rt_uint8_t aaaaaa = 0;
|
|
||||||
// void chrg_roll_sou_thread_entry (void *data)
|
|
||||||
// {
|
|
||||||
// struct chrg_thread_t *pTHR = (struct chrg_thread_t *)data;
|
|
||||||
|
|
||||||
// if (RT_NULL == pTHR) {
|
|
||||||
// return ;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// rt_uint8_t run = 0;
|
|
||||||
// rt_uint8_t index = 0, idx = 0;
|
|
||||||
// rt_err_t ret = RT_EOK;
|
|
||||||
// struct chrg_rollsou_t *pROLL = &chrgrollsou;
|
|
||||||
// struct chrg_thread_t *pTS = &chrgthr[IDX_THR_SOUTH];
|
|
||||||
// struct mb_msg_t *pMB_R = RT_NULL;
|
|
||||||
// rt_uint8_t number = 0;
|
|
||||||
// while (1) {
|
|
||||||
// /* 每轮先非阻塞排空积压消息,防止邮箱满导致 south 线程永久阻塞 */
|
|
||||||
// {
|
|
||||||
// rt_uint8_t drain_cnt = 0;
|
|
||||||
// struct mb_msg_t *pDrain = RT_NULL;
|
|
||||||
// while (drain_cnt < 8) {
|
|
||||||
// ret = rt_mb_recv(pTS->mb, (rt_uint32_t *)&pDrain, 0);
|
|
||||||
// if (ret != RT_EOK) break;
|
|
||||||
// if (pDrain != RT_NULL) {
|
|
||||||
// if (pDrain->payload != RT_NULL) rt_free(pDrain->payload);
|
|
||||||
// rt_free(pDrain);
|
|
||||||
// }
|
|
||||||
// drain_cnt++;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
// rt_mutex_take(pTHR->mutex, RT_WAITING_FOREVER);
|
|
||||||
// run = pROLL->run;
|
|
||||||
// rt_mutex_release(pTHR->mutex);
|
|
||||||
// switch (run) {
|
|
||||||
// // rt_kprintf("-------- ROLL SOU TIME START \n --------");
|
|
||||||
// case RUN_AUTO: {
|
|
||||||
// if(pROLL->mode!=0){
|
|
||||||
|
|
||||||
// }else{
|
|
||||||
// idx = index%(TOTAL_SOU_CHS); // [0, 3]
|
|
||||||
// // rt_kprintf("start_idx = %d",idx);
|
|
||||||
// if (0 == chrgsouth.enable[idx]) { // 通道未启用
|
|
||||||
// index++;
|
|
||||||
// rt_thread_mdelay(5);
|
|
||||||
// continue;
|
|
||||||
// } else { // 通道启用
|
|
||||||
// chrg_led_flashing(IDX_LED3, TIMES_ONE, PULSE_TIME*2, PULSE_TIME*2);
|
|
||||||
// if (idx != (rt_uint8_t)pROLL->idx) {
|
|
||||||
// pROLL->idx = (eIDX_SOU_CH)idx;
|
|
||||||
// chrg_south_switch((eIDX_SOU_CH)idx);
|
|
||||||
// pROLL->part = MB_R_PART1;
|
|
||||||
// }
|
|
||||||
// chrg_eload_refresh(ID_ELOAD, pROLL->part);
|
|
||||||
// if (pROLL->part < TOTAL_MB_R) {
|
|
||||||
// //pROLL->part++;
|
|
||||||
// //if (pROLL->part > MB_R_PART1) { // 仅1条,若需轮巡全部,注释此条件
|
|
||||||
// index++;
|
|
||||||
// //}
|
|
||||||
// } else {
|
|
||||||
// index++;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// break;
|
|
||||||
|
|
||||||
// case RUN_LCD: {
|
|
||||||
// struct chrg_sou_cmd_t cmd;
|
|
||||||
// rt_uint8_t do_cmd = 0;
|
|
||||||
// rt_mutex_take(pTHR->mutex, RT_WAITING_FOREVER);
|
|
||||||
// if (sou_cmd_dequeue(&cmd) == 0) {
|
|
||||||
// do_cmd = 1;
|
|
||||||
// pROLL->ch = cmd.ch;
|
|
||||||
// }
|
|
||||||
// rt_mutex_release(pTHR->mutex);
|
|
||||||
// if (do_cmd) {
|
|
||||||
// chrg_south_switch(cmd.ch);
|
|
||||||
// chrg_eload_write_reg(ID_ELOAD, cmd.reg, cmd.value);
|
|
||||||
// }
|
|
||||||
// rt_mutex_take(pTHR->mutex, RT_WAITING_FOREVER);
|
|
||||||
// if (!sou_cmd_exists()) {
|
|
||||||
// pROLL->run = RUN_AUTO;
|
|
||||||
// }
|
|
||||||
// rt_mutex_release(pTHR->mutex);
|
|
||||||
// }
|
|
||||||
// break;
|
|
||||||
|
|
||||||
// case RUN_CONSOLE: {
|
|
||||||
// chrg_south_switch((eIDX_SOU_CH)pROLL->ch);
|
|
||||||
// chrg_eload_refresh(ID_ELOAD, pROLL->part);
|
|
||||||
// }
|
|
||||||
// break;
|
|
||||||
// case RUN_UPDATA:{
|
|
||||||
// chrg_south_switch((eIDX_SOU_CH)pROLL->ch);
|
|
||||||
// if(pROLL->send_flag==1){
|
|
||||||
// chrg_eload_send_ymodem_data(pROLL->updata_data,pROLL->leng);
|
|
||||||
// pROLL->send_flag = 0;
|
|
||||||
// }
|
|
||||||
// /* 升级模式不下发Modbus邮件,等待south线程捕获ymodem应答后继续 */
|
|
||||||
// rt_thread_mdelay(50);
|
|
||||||
// continue;
|
|
||||||
// }
|
|
||||||
// break;
|
|
||||||
// case RUN_COM: {
|
|
||||||
// chrg_south_switch((eIDX_SOU_CH)pROLL->ch);
|
|
||||||
// chrg_eload_write_reg(ID_ELOAD, pROLL->reg, pROLL->value);
|
|
||||||
// }
|
|
||||||
// break;
|
|
||||||
// case RUN_NONE:
|
|
||||||
// default:
|
|
||||||
// rt_thread_mdelay(5);
|
|
||||||
// continue;
|
|
||||||
// break;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// ret = rt_mb_recv(pTS->mb, (rt_uint32_t *)&pMB_R, 100 ); // 超时 200ms
|
|
||||||
// if ((RT_EOK == ret)&&(RT_NULL != pMB_R)) { // 存在返回数据
|
|
||||||
// if (0 == mb_crc16(pMB_R->payload, pMB_R->length)) {
|
|
||||||
// if (RUN_AUTO != run) { // 恢复自动轮巡或继续执行待发命令
|
|
||||||
// rt_mutex_take(pTHR->mutex, RT_WAITING_FOREVER);
|
|
||||||
// pROLL->run = sou_cmd_exists() ? RUN_LCD : RUN_AUTO;
|
|
||||||
// rt_mutex_release(pTHR->mutex);
|
|
||||||
// }
|
|
||||||
// else { // 自动轮巡态,分析接收的数据
|
|
||||||
// #if DEBUG_SOUTH
|
|
||||||
// rt_kprintf("length = %d",pMB_R->length);
|
|
||||||
// #endif
|
|
||||||
// if(pMB_R->length!=43){//31修改成43,一共19个寄存器*2+4,多读了4位
|
|
||||||
// ret = rt_mb_recv(pTS->mb, (rt_uint32_t *)&pMB_R, 30); // 超时 200ms
|
|
||||||
// #if DEBUG_SOUTH
|
|
||||||
// rt_kprintf("ret = %d\n",ret);
|
|
||||||
// #endif
|
|
||||||
// if ((RT_EOK == ret)&&(RT_NULL != pMB_R)) { // 存在返回数据
|
|
||||||
// chrg_eload_parse(idx, pROLL->part, pMB_R->payload, pMB_R->length);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// else chrg_eload_parse(idx, pROLL->part, pMB_R->payload, pMB_R->length);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// else {
|
|
||||||
// LOG_E("crc failed.");
|
|
||||||
// }
|
|
||||||
|
|
||||||
// if (RT_NULL != pMB_R->payload) {
|
|
||||||
// rt_free(pMB_R->payload);
|
|
||||||
// pMB_R->payload = RT_NULL;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// if (RT_NULL != pMB_R) {
|
|
||||||
// rt_free(pMB_R);
|
|
||||||
// pMB_R = RT_NULL;
|
|
||||||
// }
|
|
||||||
// // rt_thread_mdelay(200); // 间隔 20ms
|
|
||||||
// rt_thread_mdelay(10); // 间隔 200ms
|
|
||||||
// } else { // 设备应答超时
|
|
||||||
// if (RUN_AUTO != run) { // 非自动轮巡
|
|
||||||
// rt_mutex_take(pTHR->mutex, RT_WAITING_FOREVER);
|
|
||||||
// pROLL->run = sou_cmd_exists() ? RUN_LCD : RUN_AUTO; // 切换会自动轮巡或继续执行待发命令
|
|
||||||
// rt_mutex_release(pTHR->mutex);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// // rt_kprintf("-------- ROLL SOU TIME END\n --------");
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
// #if 1
|
|
||||||
// static int south_send(rt_uint8_t argc, char **argv)
|
|
||||||
// {
|
|
||||||
// int ch = 0, pt = 0;
|
|
||||||
|
|
||||||
// if (3 != argc) {
|
|
||||||
// rt_kprintf("help : %s [0-3] [0-1]\r\n", argv[0]);
|
|
||||||
// return -1;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// ch = (rt_uint8_t)atoi(argv[1]);
|
|
||||||
// if ((ch < 0)||(ch >= TOTAL_SOU_CHS)) {
|
|
||||||
// rt_kprintf("help : %s [0-3] [0-1]\r\n", argv[0]);
|
|
||||||
// return -1;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// pt = (rt_uint8_t)atoi(argv[2]);
|
|
||||||
// if ((pt < 0)||(pt >= TOTAL_MB_R)) {
|
|
||||||
// rt_kprintf("help : %s [0-3] [0-1]\r\n", argv[0]);
|
|
||||||
// return -1;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// struct chrg_rollsou_t *pROLL = &chrgrollsou;
|
|
||||||
// pROLL->run = RUN_CONSOLE;
|
|
||||||
// pROLL->ch = (rt_uint8_t)ch;
|
|
||||||
// pROLL->part = (rt_uint8_t)pt;
|
|
||||||
|
|
||||||
|
|
||||||
// return 0;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// MSH_CMD_EXPORT(south_send, south send test);
|
|
||||||
|
|
||||||
// static int south_run (int argc, char **argv)
|
|
||||||
// {
|
|
||||||
// if (2 != argc) {
|
|
||||||
// rt_kprintf("help : %s start|stop\r\n", argv[0]);
|
|
||||||
// return -1;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// struct chrg_rollsou_t *pROLL = &chrgrollsou;
|
|
||||||
|
|
||||||
// if (rt_strcmp(argv[1], "start") == 0) {
|
|
||||||
// pROLL->run = RUN_AUTO;
|
|
||||||
// } else if (rt_strcmp(argv[1], "stop") == 0) {
|
|
||||||
// pROLL->run = RUN_NONE;
|
|
||||||
// } else {
|
|
||||||
// rt_kprintf("help : %s start|stop\r\n", argv[0]);
|
|
||||||
// return -1;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// return 0;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// MSH_CMD_EXPORT(south_run, south auto run);
|
|
||||||
|
|
||||||
// #endif
|
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
文件名称 : chrg_roll_sou.c
|
文件名称 : chrg_roll_sou.c
|
||||||
完成日期 :
|
完成日期 :
|
||||||
|
|||||||
@@ -278,7 +278,6 @@ int chrg_eload_parse (rt_uint8_t idx, rt_uint8_t pt, rt_uint8_t *data, rt_uint16
|
|||||||
pLOAD->Ripple = swap_u16(pP1->Ripple);
|
pLOAD->Ripple = swap_u16(pP1->Ripple);
|
||||||
pSW->Now_voltage = pLOAD->voltage;
|
pSW->Now_voltage = pLOAD->voltage;
|
||||||
pSW->Now_current = pLOAD->current;
|
pSW->Now_current = pLOAD->current;
|
||||||
if(idx == 0)
|
|
||||||
#if LCD_OPEN
|
#if LCD_OPEN
|
||||||
// for(int i = 0;i<4;i++){
|
// for(int i = 0;i<4;i++){
|
||||||
// if(pNOR->sw[i].change_flag == 0x01){
|
// if(pNOR->sw[i].change_flag == 0x01){
|
||||||
@@ -391,4 +390,4 @@ void LCD_SHOW(rt_uint8_t idx, struct eload_p1_t *pP1, struct chrg_eload_t *pLOAD
|
|||||||
case SHOW_DZF: Show_DZF(idx, pLOAD, tmp, online,vzf); pSW->show_step = SHOW_STATUS; break;
|
case SHOW_DZF: Show_DZF(idx, pLOAD, tmp, online,vzf); pSW->show_step = SHOW_STATUS; break;
|
||||||
}
|
}
|
||||||
chrg_lcd_send(tmp);
|
chrg_lcd_send(tmp);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user