新增呼吸模拟器控制部分程序,测试成功
This commit is contained in:
parent
eb69cfe624
commit
7d867ec6b1
@ -113,7 +113,7 @@ void bs_test_task(void* arg)
|
||||
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]);
|
||||
vTaskDelay(5000 / portTICK_PERIOD_MS);
|
||||
|
||||
|
||||
@ -42,12 +42,21 @@ extern "C" {
|
||||
#define SPIRIT_8_STAGE_NUM 8
|
||||
|
||||
/* 定义呼吸模拟器六个挡位控制所在Modbus地址 */
|
||||
#if 0
|
||||
#define BS_ADDR_15BPM 0x080B
|
||||
#define BS_ADDR_20BPM 0x080C
|
||||
#define BS_ADDR_25BPM 0x080D
|
||||
#define BS_ADDR_30BPM 0x080E
|
||||
#define BS_ADDR_35BPM 0x080F
|
||||
#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{
|
||||
|
||||
@ -22,7 +22,7 @@ extern "C" {
|
||||
#define SYSTEM_TIME_UPDATE_INTERVAL_SEC (1)
|
||||
|
||||
/* 选择是否进行软件定时器精度测试 */
|
||||
#define SYSTEM_TIME_TEST_ENABLE (1)
|
||||
#define SYSTEM_TIME_TEST_ENABLE (0)
|
||||
|
||||
/**
|
||||
* @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控制指令 */
|
||||
void on_buttonSendBS_clicked(lv_event_t * e)
|
||||
{
|
||||
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 = {
|
||||
.baud_rate = ECHO_UART_BAUD_RATE,
|
||||
.data_bits = UART_DATA_8_BITS,
|
||||
.parity = UART_PARITY_DISABLE,
|
||||
.parity = UART_PARITY_EVEN,
|
||||
.stop_bits = UART_STOP_BITS_1,
|
||||
.flow_ctrl = UART_HW_FLOWCTRL_DISABLE,
|
||||
.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);
|
||||
|
||||
// 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
|
||||
|
||||
/**
|
||||
* @brief 封装05指令,修改单个寄存器开关量
|
||||
* @brief 封装呼吸模拟器控制指令
|
||||
*
|
||||
* @param[in] uart_num 串口号
|
||||
* @param[in] ADDR 寄存器地址
|
||||
* @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;
|
||||
unsigned short crc;
|
||||
@ -472,9 +490,16 @@ esp_err_t ModbusRTU_Send_0x05(uint32_t ADDR)
|
||||
frame.DATA[1] = (ADDR & 0xFF);
|
||||
|
||||
/* 启动命令 */
|
||||
frame.DATA[2] = 0xFF;
|
||||
frame.DATA[3] = 0x00;
|
||||
|
||||
if (enable == true)
|
||||
{
|
||||
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));
|
||||
frame.CRC[1] = (crc & 0xFF);
|
||||
frame.CRC[0] = (crc >> 8);
|
||||
|
||||
@ -234,13 +234,22 @@ esp_err_t ModbusRTU_Send_0x10(uart_port_t uart_num, struct ModbusRTU_Frame2Reg *
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief 封装05指令,修改单个寄存器开关量
|
||||
* @brief 封装呼吸模拟器控制指令
|
||||
*
|
||||
* @param[in] uart_num 串口号
|
||||
* @param[in] ADDR 寄存器地址
|
||||
* @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 根据主界面内容刷新测试结果
|
||||
|
||||
Loading…
Reference in New Issue
Block a user