新增呼吸模拟器控制部分程序,测试成功
This commit is contained in:
parent
eb69cfe624
commit
7d867ec6b1
@ -113,7 +113,7 @@ void bs_test_task(void* arg)
|
|||||||
while(1)
|
while(1)
|
||||||
{
|
{
|
||||||
/* 调节呼吸模拟器频率 */
|
/* 调节呼吸模拟器频率 */
|
||||||
ModbusRTU_Send_0x05(bs_addr_all[testCount]);
|
bs_bpm_send(bs_addr_all[testCount]);
|
||||||
lv_label_set_text_fmt(ui_pageHome_labelBSInfo,"%s %s",test_rate[testCount],test_info[5]);
|
lv_label_set_text_fmt(ui_pageHome_labelBSInfo,"%s %s",test_rate[testCount],test_info[5]);
|
||||||
vTaskDelay(5000 / portTICK_PERIOD_MS);
|
vTaskDelay(5000 / portTICK_PERIOD_MS);
|
||||||
|
|
||||||
|
|||||||
@ -42,12 +42,21 @@ extern "C" {
|
|||||||
#define SPIRIT_8_STAGE_NUM 8
|
#define SPIRIT_8_STAGE_NUM 8
|
||||||
|
|
||||||
/* 定义呼吸模拟器六个挡位控制所在Modbus地址 */
|
/* 定义呼吸模拟器六个挡位控制所在Modbus地址 */
|
||||||
|
#if 0
|
||||||
#define BS_ADDR_15BPM 0x080B
|
#define BS_ADDR_15BPM 0x080B
|
||||||
#define BS_ADDR_20BPM 0x080C
|
#define BS_ADDR_20BPM 0x080C
|
||||||
#define BS_ADDR_25BPM 0x080D
|
#define BS_ADDR_25BPM 0x080D
|
||||||
#define BS_ADDR_30BPM 0x080E
|
#define BS_ADDR_30BPM 0x080E
|
||||||
#define BS_ADDR_35BPM 0x080F
|
#define BS_ADDR_35BPM 0x080F
|
||||||
#define BS_ADDR_40BPM 0x0810
|
#define BS_ADDR_40BPM 0x0810
|
||||||
|
#else
|
||||||
|
#define BS_ADDR_15BPM 0x080A
|
||||||
|
#define BS_ADDR_20BPM 0x080B
|
||||||
|
#define BS_ADDR_25BPM 0x080C
|
||||||
|
#define BS_ADDR_30BPM 0x080D
|
||||||
|
#define BS_ADDR_35BPM 0x080E
|
||||||
|
#define BS_ADDR_40BPM 0x080F
|
||||||
|
#endif
|
||||||
|
|
||||||
/* 定义枚举用于标记呼吸频率 */
|
/* 定义枚举用于标记呼吸频率 */
|
||||||
typedef enum Bs_test_Rate{
|
typedef enum Bs_test_Rate{
|
||||||
|
|||||||
@ -22,7 +22,7 @@ extern "C" {
|
|||||||
#define SYSTEM_TIME_UPDATE_INTERVAL_SEC (1)
|
#define SYSTEM_TIME_UPDATE_INTERVAL_SEC (1)
|
||||||
|
|
||||||
/* 选择是否进行软件定时器精度测试 */
|
/* 选择是否进行软件定时器精度测试 */
|
||||||
#define SYSTEM_TIME_TEST_ENABLE (1)
|
#define SYSTEM_TIME_TEST_ENABLE (0)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 时间同步函数
|
* @brief 时间同步函数
|
||||||
|
|||||||
@ -230,9 +230,23 @@ void on_buttonClearSD_clicked(lv_event_t * e)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void bs_clicked_1s(lv_timer_t * timer)
|
||||||
|
{
|
||||||
|
uint16_t currentRate = lv_dropdown_get_selected(ui_pageLung_Dropdown1);
|
||||||
|
ModbusRTU_Send_0x05(bs_addr_all[currentRate],false);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/* 下发BS控制指令 */
|
/* 下发BS控制指令 */
|
||||||
void on_buttonSendBS_clicked(lv_event_t * e)
|
void on_buttonSendBS_clicked(lv_event_t * e)
|
||||||
{
|
{
|
||||||
uint16_t currentRate = lv_dropdown_get_selected(ui_pageLung_Dropdown1);
|
uint16_t currentRate = lv_dropdown_get_selected(ui_pageLung_Dropdown1);
|
||||||
ModbusRTU_Send_0x05(bs_addr_all[currentRate]);
|
|
||||||
|
/* 下发控制指令 使能 */
|
||||||
|
ModbusRTU_Send_0x05(bs_addr_all[currentRate],true);
|
||||||
|
|
||||||
|
lv_timer_t* bs_clicked = lv_timer_create(bs_clicked_1s, 1000, NULL);
|
||||||
|
lv_timer_set_repeat_count(bs_clicked, 1);
|
||||||
|
lv_timer_set_period(bs_clicked, 1000);
|
||||||
|
lv_timer_enable(bs_clicked);
|
||||||
}
|
}
|
||||||
@ -344,7 +344,7 @@ void uart2_echoTask(void* arg)
|
|||||||
uart_config_t uart_config = {
|
uart_config_t uart_config = {
|
||||||
.baud_rate = ECHO_UART_BAUD_RATE,
|
.baud_rate = ECHO_UART_BAUD_RATE,
|
||||||
.data_bits = UART_DATA_8_BITS,
|
.data_bits = UART_DATA_8_BITS,
|
||||||
.parity = UART_PARITY_DISABLE,
|
.parity = UART_PARITY_EVEN,
|
||||||
.stop_bits = UART_STOP_BITS_1,
|
.stop_bits = UART_STOP_BITS_1,
|
||||||
.flow_ctrl = UART_HW_FLOWCTRL_DISABLE,
|
.flow_ctrl = UART_HW_FLOWCTRL_DISABLE,
|
||||||
.source_clk = UART_SCLK_DEFAULT,
|
.source_clk = UART_SCLK_DEFAULT,
|
||||||
@ -371,9 +371,12 @@ void uart2_echoTask(void* arg)
|
|||||||
int len = uart_read_bytes(ECHO_UART_PORT_NUM2, data, (BUF_SIZE - 1), 20 / portTICK_PERIOD_MS);
|
int len = uart_read_bytes(ECHO_UART_PORT_NUM2, data, (BUF_SIZE - 1), 20 / portTICK_PERIOD_MS);
|
||||||
|
|
||||||
// Write data back to the UART
|
// Write data back to the UART
|
||||||
uart_write_bytes(ECHO_UART_PORT_NUM2, (const char *) data, len);
|
//uart_write_bytes(ECHO_UART_PORT_NUM2, (const char *) data, len);
|
||||||
|
|
||||||
//ESP_LOGI("uart2_echoTask", "Read %d bytes: '%s'", len, data);
|
//lv_label_set_text(ui_pageLung_labelDataFromBS,(char *)data);
|
||||||
|
lv_label_set_text_fmt(ui_pageLung_labelDataFromBS,"%02x %02x %02x %02x %02x %02x %02x %02x",data[0],data[1],data[2],data[3],data[4],data[5],data[6],data[7]);
|
||||||
|
|
||||||
|
ESP_LOGI("uart2_echoTask", "Read %d bytes: '%s'", len, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -453,13 +456,28 @@ esp_err_t ModbusRTU_Send_0x10(uart_port_t uart_num, struct ModbusRTU_Frame2Reg *
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 封装05指令,修改单个寄存器开关量
|
* @brief 封装呼吸模拟器控制指令
|
||||||
*
|
*
|
||||||
* @param[in] uart_num 串口号
|
* @param[in] ADDR 寄存器地址
|
||||||
* @param[in] frame 需要发送的数据帧
|
* @param[in] frame 需要发送的数据帧
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
esp_err_t ModbusRTU_Send_0x05(uint32_t ADDR)
|
void bs_bpm_send(uint32_t ADDR)
|
||||||
|
{
|
||||||
|
/* 先向该地址下发一个05指令,使能呼吸模拟器,等待1s钟后再关闭 */
|
||||||
|
ModbusRTU_Send_0x05(ADDR,true);
|
||||||
|
vTaskDelay(1000 / portTICK_PERIOD_MS);
|
||||||
|
ModbusRTU_Send_0x05(ADDR,false);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 封装05指令,修改单个线圈开关
|
||||||
|
*
|
||||||
|
* @param[in] ADDR 寄存器地址
|
||||||
|
* @param[in] enable 是否使能
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
esp_err_t ModbusRTU_Send_0x05(uint32_t ADDR,bool enable)
|
||||||
{
|
{
|
||||||
struct ModbusRTU_Frame frame;
|
struct ModbusRTU_Frame frame;
|
||||||
unsigned short crc;
|
unsigned short crc;
|
||||||
@ -472,9 +490,16 @@ esp_err_t ModbusRTU_Send_0x05(uint32_t ADDR)
|
|||||||
frame.DATA[1] = (ADDR & 0xFF);
|
frame.DATA[1] = (ADDR & 0xFF);
|
||||||
|
|
||||||
/* 启动命令 */
|
/* 启动命令 */
|
||||||
frame.DATA[2] = 0xFF;
|
if (enable == true)
|
||||||
frame.DATA[3] = 0x00;
|
{
|
||||||
|
frame.DATA[2] = 0xFF;
|
||||||
|
frame.DATA[3] = 0x00;
|
||||||
|
}else
|
||||||
|
{
|
||||||
|
frame.DATA[2] = 0x00;
|
||||||
|
frame.DATA[3] = 0x00;
|
||||||
|
}
|
||||||
|
|
||||||
crc = CRC16((unsigned char *)&frame, sizeof(frame.ADDR) + sizeof(frame.FUNC) + sizeof(frame.DATA));
|
crc = CRC16((unsigned char *)&frame, sizeof(frame.ADDR) + sizeof(frame.FUNC) + sizeof(frame.DATA));
|
||||||
frame.CRC[1] = (crc & 0xFF);
|
frame.CRC[1] = (crc & 0xFF);
|
||||||
frame.CRC[0] = (crc >> 8);
|
frame.CRC[0] = (crc >> 8);
|
||||||
|
|||||||
@ -234,13 +234,22 @@ esp_err_t ModbusRTU_Send_0x10(uart_port_t uart_num, struct ModbusRTU_Frame2Reg *
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 封装05指令,修改单个寄存器开关量
|
* @brief 封装呼吸模拟器控制指令
|
||||||
*
|
*
|
||||||
* @param[in] uart_num 串口号
|
* @param[in] ADDR 寄存器地址
|
||||||
* @param[in] frame 需要发送的数据帧
|
* @param[in] frame 需要发送的数据帧
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
esp_err_t ModbusRTU_Send_0x05(uint32_t ADDR);
|
void bs_bpm_send(uint32_t ADDR);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 封装05指令,修改单个线圈开关
|
||||||
|
*
|
||||||
|
* @param[in] ADDR 寄存器地址
|
||||||
|
* @param[in] enable 是否使能
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
esp_err_t ModbusRTU_Send_0x05(uint32_t ADDR,bool enable);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 根据主界面内容刷新测试结果
|
* @brief 根据主界面内容刷新测试结果
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user