//////////////////////////////////////////////////////////////////////////////// /// 终端交互模块文件 /// /// /// 包含底层驱动初始化及任务创建 /// @file device_term.c /// @author gkl /// @date 2017-05-27创建 /// @version v0.1 //////////////////////////////////////////////////////////////////////////////// // 包含的头文件 #include "device_term.h" #include "comm_resource.h" #include "device_time.h" #include "comm_types.h" #include "app_cfg.h" #include "wdog.h" #include "adc.h" #include "w25q128.h" #include "timer.h" #include "check.h" #include "lwip/inet.h" #include "rotate_bldc.h" #include "rotate_step.h" /// ping测试 /// /// @param none /// @param none /// @return none /// @note 修改日志 /// gkl与2017-06-01创建 ip_addr_t ping_dest_target; void func_ping_test() { char cmmd_buff[20] = {0}; char temp = 0; int ret = 0; term_printf("note: ctrl+c断开ping连接\n\r"); term_printf("请输入目标ip: "); while(1){ ret = term_uart_readln((u_int8_t*)cmmd_buff,sizeof(cmmd_buff),0); if (ret > 0) { if (ret > 5) { cmmd_buff[ret-1] = '\0'; ping_dest_target.addr = ipaddr_addr(cmmd_buff); term_printf("\n"); // 恢复ping任务 OSTaskResume(TASK_PING_THREAD_PRIO); } else { temp = cmmd_buff[0]; if (temp == 0x03){ // 将ping任务挂起 OSTaskSuspend(TASK_PING_THREAD_PRIO); term_printf("\n--> 1ip设置\n--> 2ping测试\n--> r返回\n--> h帮助\r\n"); break; } else { term_printf("\n--> "); } } } } } /// 以太网设置 /// /// 包括ping测试,ip地址设置等功能 /// @param none /// @param none /// @return none /// @note 修改日志 /// gkl与2017-06-01创建 void func_ethernet_setting() { char cmmd_buff[20] = {0}; char temp = 0; int ret = 0; // pdebug(DEBUG_LEVEL_INFO,"\n--> 1ip设置\n--> 2ping测试\n--> r返回\n--> h 帮助\r\n"); term_printf("\n --> 1ip设置\n --> 2ping测试\n --> r返回\n --> h帮助\r\n"); while(1){ ret = term_uart_readln((u_int8_t*)cmmd_buff,sizeof(cmmd_buff),0); if (ret > 0) { temp = cmmd_buff[0]; if (temp == '2'){ func_ping_test(); }else if(temp == 'r'){ term_printf("--> 1设备初始化\n--> 2网络设置\n--> 3传感器调试\n--> q系统复位\n--> h帮助\r\n"); break; }else if(temp == 'h'){ // pdebug(DEBUG_LEVEL_INFO,"\n--> 1ip设置\n--> 2ping测试\n--> r返回\n--> h帮助\r\n"); term_printf("\n --> 1ip设置\n --> 2ping测试\n --> r返回\n --> h帮助\r\n"); }else // pdebug(DEBUG_LEVEL_INFO,"\n--> "); term_printf("\n--> "); } } } /// 传感器调试 /// /// 包括O2,CO,H2S,CH4,环流,温湿度测试等功能 /// @param none /// @param none /// @return none /// @note 修改日志 /// jjj与2017-08-01创建 void func_sensor_test() { char cmmd_buff[2] = {0}; char temp = 0; int ret = 0; // u_int8_t err = 0; term_printf("\n --> 1氧气传感器\n --> 2一氧化碳传感器\n --> 3甲烷传感器\n --> 4硫化氢传感器\n --> 5水位传感器\n --> 6接地电流传感器\n --> 7温湿度传感器\n --> 8FLASH测试\n --> r返回\n --> h帮助\n\r"); // pdebug(DEBUG_LEVEL_INFO,"\n --> 1氧气传感器\n --> 2一氧化碳传感器\n --> 3硫化氢传感器\n --> 4甲烷传感器\n --> 4接地电流传感器\n --> r返回\n --> h帮助\n\r"); while(1){ BSP_OS_TimeDlyMs(100); ret = term_uart_readln((u_int8_t*)cmmd_buff,sizeof(cmmd_buff),0); if (ret > 0){ // OSTmrStart(tmr_delete_term_task, &err); temp = cmmd_buff[0]; if (temp == '1'){ #if CFG_MODULE_O2 fun_o2_test(); #endif }else if(temp == '2'){ #if CFG_MODULE_CO fun_co_test(); #endif }else if(temp == '3'){ #if CFG_MODULE_CH4 fun_ch4_test(); #endif }else if(temp == '4'){ #if CFG_MODULE_H2S fun_h2s_test(); #endif }else if(temp == '5'){ #if CFG_MODULE_WATER fun_water_test(); #endif }else if(temp == '6'){ #if CFG_MODULE_CURRENT fun_current_test(); #endif }else if(temp == '7'){ #if CFG_MODULE_TEMPHUMI fun_temphumi_test(); #endif }else if(temp == '8'){ fun_flash_test(); }else if(temp == 'r'){ term_printf("--> 1设备初始化\n--> 2网络设置\n--> 3传感器调试\n--> q系统复位\n--> h帮助\r\n"); break; }else if (temp == 'h'){ term_printf("\n --> 1氧气传感器\n --> 2一氧化碳传感器\n --> 3甲烷传感器\n --> 4硫化氢传感器\n --> 5水位传感器\n --> 6接地电流传感器\n --> 7温湿度传感器\n --> 8FLASH测试\n --> r返回\n --> h帮助\n\r"); // pdebug(DEBUG_LEVEL_INFO,"\n --> 1氧气传感器\n --> 2一氧化碳传感器\n --> 3硫化氢传感器\n --> 4甲烷传感器\n --> 4接地电流传感器\n --> r返回\n --> h帮助\n\r"); }else term_printf("\n--> "); } } } #if CFG_MODULE_O2 /// 氧气传感器调试 /// /// 包括O2功能 /// @param none /// @param none /// @return none /// @note 修改日志 /// jjj与2017-08-01创建 void fun_o2_test() { int ret = 0; char cmmd_buff[2] = {0}; // u_int8_t err; char temp = 0; SENSOR_POWER_ON; //打开氧气传感器电源 term_printf("\n正在打开传感器电源...\n\r"); BSP_OS_TimeDlyMs(5000); term_printf("\n已打开传感器电源\n\r"); term_printf("\n --> 1读取氧气传感器\n --> r返回\n --> h帮助\n\r"); while(1){ BSP_OS_TimeDlyMs(100); ret = term_uart_readln((u_int8_t*)cmmd_buff,sizeof(cmmd_buff),0); if (ret > 0){ // OSTmrStart(tmr_delete_term_task, &err); temp = cmmd_buff[0]; if (temp == '1'){ term_printf("\n正在读取...\n\r"); BSP_OS_SemWait(&rs485_mutex, 0u); for(u_int8_t i = 0; i < 5; i++){ BSP_OS_TimeDlyMs(10); send_collect_o2_cmd(O2_ADDR);//发送数据采集命令 BSP_OS_TimeDlyMs(150); ret = rs485_uart_read_o2_pack(rs485_read_buff,sizeof(rs485_read_buff)); if (ret > 0){ process_rs485_uart_o2_data_pack((o2_data_pack*)rs485_read_buff); term_printf("\n氧气值:%.2f%",o2_data.o2_value); BSP_OS_SemPost(&rs485_mutex); SENSOR_POWER_OFF; break; } if(i == 4) { term_printf("\n\r采集数据失败\n\r"); BSP_OS_SemPost(&rs485_mutex); SENSOR_POWER_OFF; } } }else if(temp == 'r'){ term_printf("\n --> 1氧气传感器\n --> 2一氧化碳传感器\n --> 3甲烷传感器\n --> 4硫化氢传感器\n --> 5水位传感器\n --> 6接地电流传感器\n --> 7温湿度传感器\n --> 8FLASH测试\n --> r返回\n --> h帮助\n\r"); break; }else if(temp == 'h'){ term_printf("\n --> 1读取氧气传感器\n --> r返回\n --> h帮助\n\r"); }else term_printf("\n--> "); } } } #endif #if CFG_MODULE_CO /// 一氧化碳传感器调试 /// /// 包括co功能 /// @param none /// @param none /// @return none /// @note 修改日志 /// jjj与2017-08-01创建 void fun_co_test() { int ret = 0; char cmmd_buff[2] = {0}; // u_int8_t err; char temp = 0; SENSOR_POWER_ON; //打开氧气传感器电源 term_printf("\n正在打开传感器电源...\n\r"); BSP_OS_TimeDlyMs(5000); term_printf("\n已打开传感器电源\n\r"); term_printf("\n --> 1读取一氧化碳传感器\n --> r返回\n --> h帮助\n\r"); while(1){ BSP_OS_TimeDlyMs(100); ret = term_uart_readln((u_int8_t*)cmmd_buff,sizeof(cmmd_buff),0); if (ret > 0){ // OSTmrStart(tmr_delete_term_task, &err); temp = cmmd_buff[0]; if (temp == '1'){ term_printf("\n正在读取...\n\r"); BSP_OS_SemWait(&rs485_mutex, 0u); for(u_int8_t i = 0; i < 5; i++){ BSP_OS_TimeDlyMs(10); send_collect_co_cmd(CO_ADDR);//发送数据采集命令 BSP_OS_TimeDlyMs(150); ret = rs485_uart_read_co_pack(rs485_read_buff,sizeof(rs485_read_buff)); if (ret > 0){ process_rs485_uart_co_data_pack((co_data_pack*)rs485_read_buff); term_printf("\n一氧化碳值:%.2fppm",co_data.co_value); BSP_OS_SemPost(&rs485_mutex); SENSOR_POWER_OFF; break; } if(i == 4) { term_printf("\n\r采集数据失败\n\r"); BSP_OS_SemPost(&rs485_mutex); SENSOR_POWER_OFF; } } }else if(temp == 'r'){ term_printf("\n --> 1氧气传感器\n --> 2一氧化碳传感器\n --> 3甲烷传感器\n --> 4硫化氢传感器\n --> 5水位传感器\n --> 6接地电流传感器\n --> 7温湿度传感器\n --> 8FLASH测试\n --> r返回\n --> h帮助\n\r"); break; }else if(temp == 'h'){ term_printf("\n --> 1读取一氧化碳传感器\n --> r返回\n --> h帮助\n\r"); }else term_printf("\n--> "); } } } #endif #if CFG_MODULE_CH4 /// 甲烷传感器调试 /// /// 包括ch4功能 /// @param none /// @param none /// @return none /// @note 修改日志 /// jjj与2017-08-01创建 void fun_ch4_test() { int ret = 0; char cmmd_buff[2] = {0}; // u_int8_t err; char temp = 0; SENSOR_POWER_ON; //打开氧气传感器电源 term_printf("\n正在打开传感器电源...\n\r"); BSP_OS_TimeDlyMs(5000); term_printf("\n已打开传感器电源\n\r"); term_printf("\n --> 1读取甲烷传感器\n --> r返回\n --> h帮助\n\r"); while(1){ BSP_OS_TimeDlyMs(100); ret = term_uart_readln((u_int8_t*)cmmd_buff,sizeof(cmmd_buff),0); if (ret > 0){ // OSTmrStart(tmr_delete_term_task, &err); temp = cmmd_buff[0]; if (temp == '1'){ term_printf("\n正在读取...\n\r"); BSP_OS_SemWait(&rs485_mutex, 0u); for(u_int8_t i = 0; i < 5; i++){ BSP_OS_TimeDlyMs(10); send_collect_ch4_cmd(CH4_ADDR);//发送数据采集命令 BSP_OS_TimeDlyMs(150); ret = rs485_uart_read_ch4_pack(rs485_read_buff,sizeof(rs485_read_buff)); if (ret > 0){ process_rs485_uart_ch4_data_pack((ch4_data_pack*)rs485_read_buff); term_printf("\n甲烷值:%.2fppm",ch4_data.ch4_value); BSP_OS_SemPost(&rs485_mutex); SENSOR_POWER_OFF; break; } if(i == 4) { term_printf("\n\r采集数据失败\n\r"); BSP_OS_SemPost(&rs485_mutex); SENSOR_POWER_OFF; } } }else if(temp == 'r'){ term_printf("\n --> 1氧气传感器\n --> 2一氧化碳传感器\n --> 3甲烷传感器\n --> 4硫化氢传感器\n --> 5水位传感器\n --> 6接地电流传感器\n --> 7温湿度传感器\n --> 8FLASH测试\n --> r返回\n --> h帮助\n\r"); break; }else if(temp == 'h'){ term_printf("\n --> 1读取甲烷传感器\n --> r返回\n --> h帮助\n\r"); }else term_printf("\n--> "); } } } #endif #if CFG_MODULE_H2S /// 硫化氢传感器调试 /// /// 包括h2s功能 /// @param none /// @param none /// @return none /// @note 修改日志 /// jjj与2017-08-01创建 void fun_h2s_test() { int ret = 0; char cmmd_buff[2] = {0}; // u_int8_t err; char temp = 0; SENSOR_POWER_ON; //打开氧气传感器电源 term_printf("\n正在打开传感器电源...\n\r"); BSP_OS_TimeDlyMs(5000); term_printf("\n已打开传感器电源\n\r"); term_printf("\n --> 1读取硫化氢传感器\n --> r返回\n --> h帮助\n\r"); while(1){ BSP_OS_TimeDlyMs(100); ret = term_uart_readln((u_int8_t*)cmmd_buff,sizeof(cmmd_buff),0); if (ret > 0){ // OSTmrStart(tmr_delete_term_task, &err); temp = cmmd_buff[0]; if (temp == '1'){ term_printf("\n正在读取...\n\r"); BSP_OS_SemWait(&rs485_mutex, 0u); for(u_int8_t i = 0; i < 5; i++){ BSP_OS_TimeDlyMs(10); send_collect_h2s_cmd(H2S_ADDR);//发送数据采集命令 BSP_OS_TimeDlyMs(150); ret = rs485_uart_read_h2s_pack(rs485_read_buff,sizeof(rs485_read_buff)); if (ret > 0){ process_rs485_uart_h2s_data_pack((h2s_data_pack*)rs485_read_buff); term_printf("\n硫化氢值:%.2fppm",h2s_data.h2s_value); BSP_OS_SemPost(&rs485_mutex); SENSOR_POWER_OFF; break; } if(i == 4) { term_printf("\n\r采集数据失败\n\r"); BSP_OS_SemPost(&rs485_mutex); SENSOR_POWER_OFF; } } }else if(temp == 'r'){ term_printf("\n --> 1氧气传感器\n --> 2一氧化碳传感器\n --> 3甲烷传感器\n --> 4硫化氢传感器\n --> 5水位传感器\n --> 6接地电流传感器\n --> 7温湿度传感器\n --> 8FLASH测试\n --> r返回\n --> h帮助\n\r"); break; }else if(temp == 'h'){ term_printf("\n --> 1读取硫化氢传感器\n --> r返回\n --> h帮助\n\r"); }else term_printf("\n--> "); } } } #endif #if CFG_MODULE_WATER /// 水位传感器调试 /// /// 包括水位功能 /// @param none /// @param none /// @return none /// @note 修改日志 /// jjj与2017-08-01创建 void fun_water_test() { int ret = 0; char cmmd_buff[2] = {0}; // u_int8_t err; char temp = 0; SENSOR_POWER_ON; //打开氧气传感器电源 term_printf("\n正在打开传感器电源...\n\r"); BSP_OS_TimeDlyMs(500); term_printf("\n已打开传感器电源\n\r"); term_printf("\n --> 1读取水位传感器\n --> r返回\n --> h帮助\n\r"); while(1){ BSP_OS_TimeDlyMs(100); ret = term_uart_readln((u_int8_t*)cmmd_buff,sizeof(cmmd_buff),0); if (ret > 0){ // OSTmrStart(tmr_delete_term_task, &err); temp = cmmd_buff[0]; if (temp == '1'){ term_printf("\n正在读取...\n\r"); BSP_OS_SemWait(&rs485_mutex, 0u); for(u_int8_t i = 0; i < 5; i++){ BSP_OS_TimeDlyMs(10); send_collect_water_cmd(WATER_ADDR);//发送数据采集命令 BSP_OS_TimeDlyMs(100); ret = rs485_uart_read_water_pack(rs485_read_buff,sizeof(rs485_read_buff)); if (ret > 0){ process_rs485_uart_water_data_pack((water_data_pack*)rs485_read_buff); term_printf("\n水位值:%.2fm",water_data.water_value); BSP_OS_SemPost(&rs485_mutex); SENSOR_POWER_OFF; break; } if(i == 4) { term_printf("\n\r采集数据失败\n\r"); BSP_OS_SemPost(&rs485_mutex); SENSOR_POWER_OFF; } } }else if(temp == 'r'){ term_printf("\n --> 1氧气传感器\n --> 2一氧化碳传感器\n --> 3甲烷传感器\n --> 4硫化氢传感器\n --> 5水位传感器\n --> 6接地电流传感器\n --> 7温湿度传感器\n --> 8FLASH测试\n --> r返回\n --> h帮助\n\r"); break; }else if(temp == 'h'){ term_printf("\n --> 1读取水位传感器\n --> r返回\n --> h帮助\n\r"); }else term_printf("\n--> "); } } } #endif #if CFG_MODULE_CURRENT /// 水位传感器调试 /// /// 包括水位功能 /// @param none /// @param none /// @return none /// @note 修改日志 /// jjj与2017-08-01创建 void fun_current_test() { int ret = 0; char cmmd_buff[2] = {0}; u_int8_t err; char temp = 0; term_printf("\n --> 1读取接地环流传感器\n --> r返回\n --> h帮助\n\r"); while(1){ BSP_OS_TimeDlyMs(100); ret = term_uart_readln((u_int8_t*)cmmd_buff,sizeof(cmmd_buff),0); if (ret > 0){ temp = cmmd_buff[0]; if (temp == '1'){ term_printf("\n正在读取...\n\r"); DrvPIT_EnableINT(PIT0); OSSemPend(sem_sample_finish,0,&err); if((ADC_Data.A_results >= 0) && (ADC_Data.A_results <= 500)) { term_printf("\nA相电流值值:%.2fA",ADC_Data.A_results); } else { term_printf("\n\rA相数据采集失败\n\r"); } if((ADC_Data.B_results >= 0) && (ADC_Data.B_results <= 500)) { term_printf("\nB相电流值值:%.2fA",ADC_Data.B_results); } else { term_printf("\n\rB相数据采集失败\n\r"); } if((ADC_Data.C_results >= 0) && (ADC_Data.C_results <= 500)) { term_printf("\nC相电流值值:%.2fA",ADC_Data.C_results); } else { term_printf("\n\rC相数据采集失败\n\r"); } }else if(temp == 'r'){ term_printf("\n --> 1氧气传感器\n --> 2一氧化碳传感器\n --> 3甲烷传感器\n --> 4硫化氢传感器\n --> 5水位传感器\n --> 6接地电流传感器\n --> 7温湿度传感器\n --> 8FLASH测试\n --> r返回\n --> h帮助\n\r"); break; }else if(temp == 'h'){ term_printf("\n --> 1读取水位传感器\n --> r返回\n --> h帮助\n\r"); }else term_printf("\n--> "); } } } #endif #if CFG_MODULE_TEMPHUMI /// 温湿度传感器调试 /// /// 包括温湿度功能 /// @param none /// @param none /// @return none /// @note 修改日志 /// jjj与2017-08-01创建 void fun_temphumi_test() { int ret = 0; char cmmd_buff[2] = {0}; char temp = 0; SENSOR_POWER_ON; //打开温湿度传感器电源 term_printf("\n正在打开传感器电源...\n\r"); BSP_OS_TimeDlyMs(2000); term_printf("\n已打开传感器电源\n\r"); term_printf("\n --> 1读取温湿度传感器\n --> r返回\n --> h帮助\n\r"); while(1){ BSP_OS_TimeDlyMs(100); ret = term_uart_readln((u_int8_t*)cmmd_buff,sizeof(cmmd_buff),0); if (ret > 0){ temp = cmmd_buff[0]; if (temp == '1'){ term_printf("\n正在读取...\n\r"); for(char i = 0;i<10;i++) { TempHumi_Data.Tempresults[i] = drv_adc_mid(ADC0_BASE_PTR,16); //ADC0_SE16 TempHumi_Data.Humiresults[i] = drv_adc_mid(ADC1_BASE_PTR,18); //ADC1_SE18 } //0.0032258 = 3.3 / 1024 //1.6667 = 5 / 3 将0~5v电压分压变成0~3v输入adc管脚 //得到的电压根据0~5v对应-40~125℃转换 -40 + 测得电压 /(5 / 165) = -40 + 测得电压 / 0.030303 // TempHumi_Data.Tempresults_f[i] = (TempHumi_Data.Tempresults[i] * 0.0032258 * 1.6667) / 0.030303 - 40; TempHumi_Data.Temp_Data = Middle2(TempHumi_Data.Tempresults) * 0.177422 - 40; //0.0032258 = 3.3 / 1024 //1.6667 = 5 / 3 将0~5v电压分压变成0~3v输入adc管脚 //得到的电压根据0~5v对应0~100%转换 // TempHumi_Data.Tempresults_f[i] = (TempHumi_Data.Tempresults[i] * 0.0032258 * 1.6667) / 0.05; TempHumi_Data.Humi_Data = Middle2(TempHumi_Data.Humiresults) * 0.107528; if((TempHumi_Data.Temp_Data >= -40) && (TempHumi_Data.Temp_Data <= 125)) { term_printf("\n温度值:%.2f°",TempHumi_Data.Temp_Data); } else { term_printf("\n\r温度数据采集失败\n\r"); } if((TempHumi_Data.Humi_Data >= 0) && (TempHumi_Data.Humi_Data <= 100)) { term_printf("\n湿度值:%.2f%",TempHumi_Data.Humi_Data); } else { term_printf("\n\r湿度数据采集失败\n\r"); } SENSOR_POWER_OFF; }else if(temp == 'r'){ term_printf("\n --> 1氧气传感器\n --> 2一氧化碳传感器\n --> 3甲烷传感器\n --> 4硫化氢传感器\n --> 5水位传感器\n --> 6接地电流传感器\n --> 7温湿度传感器\n --> 8FLASH测试\n --> r返回\n --> h帮助\n\r"); break; }else if(temp == 'h'){ term_printf("\n --> 1读取温湿度传感器\n --> r返回\n --> h帮助\n\r"); }else term_printf("\n--> "); } } } #endif /// flash调试 /// /// 包括温湿度功能 /// @param none /// @param none /// @return none /// @note 修改日志 /// jjj与2017-08-01创建 void fun_flash_test() { int ret = 0; char cmmd_buff[2] = {0}; char temp = 0; u_int8_t w_buff[2]={0x55,0xaa}; u_int8_t r_buff[2]={0x00,0x00}; term_printf("\n --> 1开始测试flash\n --> r返回\n --> h帮助\n\r"); while(1){ BSP_OS_TimeDlyMs(100); ret = term_uart_readln((u_int8_t*)cmmd_buff,sizeof(cmmd_buff),0); if (ret > 0){ temp = cmmd_buff[0]; if (temp == '1'){ // 配置IO管脚,初始化flsh芯片 Flash_GPIO_Init(); #ifdef FLASH_W25Q256 Enter4ByteAddrMode(); //new add 进入4Byte模式 #endif #ifdef FLASH_W25Q128 Exit4ByteAddrMode(); //new add 退出4Byte模式 #endif Flash_Erase_Sector(0,0); Flash_Write_MorePage(w_buff,0,2); term_printf("\n写入2个字节:0x%x,0x%x",w_buff[0],w_buff[1]); Flash_Read(r_buff,0,2); term_printf("\n读出2个字节:0x%x,0x%x",r_buff[0],r_buff[1]); if((w_buff[0] == r_buff[0]) && (w_buff[1] == r_buff[1])) { term_printf("\n\rFLASH正常!\n\r"); } else { term_printf("\n\rFLASH异常!\n\r"); } }else if(temp == 'r'){ term_printf("\n --> 1氧气传感器\n --> 2一氧化碳传感器\n --> 3甲烷传感器\n --> 4硫化氢传感器\n --> 5水位传感器\n --> 6接地电流传感器\n --> 7温湿度传感器\n --> 8FLASH测试\n --> r返回\n --> h帮助\n\r"); break; }else if(temp == 'h'){ term_printf("\n --> 1开始测试flash\n --> r返回\n --> h帮助\n\r"); }else term_printf("\n--> "); } } } /// 初始化相关信息 /// /// 包括下载配置文件功能 /// @param none /// @param none /// @return none /// @note 修改日志 /// jjj与2017-08-01创建 void func_device_init() { char cmmd_buff[2] = {0}; char temp = 0; int ret = 0; // u_int8_t err = 0; term_printf("\n --> 1下载配置文件\n --> r返回\n --> h帮助\n\r"); while(1){ BSP_OS_TimeDlyMs(500); ret = term_uart_readln((u_int8_t*)cmmd_buff,sizeof(cmmd_buff),0); if (ret > 0){ temp = cmmd_buff[0]; if (temp == '1'){ term_printf("\n --> 下载配置文件"); // func_cmd_download_cfgfile(HY_PKG_TYPE_CFG_FILE); }else if (temp == '2'){ }else if (temp == '3'){ }else if(temp == '4'){ }else if(temp == '5'){ }else if(temp == '6'){ }else if(temp == 'r'){ term_printf("--> 1设备初始化\n--> 2网络设置\n--> 3传感器调试\n--> q系统复位\n--> h帮助\r\n"); break; }else if(temp == 'h'){ term_printf("\n --> 1下载配置文件\n --> r返回\n --> h帮助\n\r"); }else term_printf("\n--> "); } } } /// 终端交互任务 /// /// 终端交互 /// @param none /// @param none /// @return none /// @note 修改日志 /// gkl与2017-05-26创建 static void task_term (void *p_arg) { char cmmd_buff[10] = {0}; char temp = 0; int ret = 0; p_arg = p_arg; // term_printf("\n\r\n\r...欢迎进入mk60 host命令行模式...\r\n"); // term_printf("\n请输入命令(帮助请输入:help)\r\n"); // term_printf("--> 1设备初始化\n--> 2网络设置\n--> 3传感器调试\n--> q系统复位\n--> h帮助\r\n"); while(1) { ret = term_uart_readln((u_int8_t*)cmmd_buff,sizeof(cmmd_buff),0); if (ret > 0){ temp = cmmd_buff[0]; if (temp == '1'){ //term_printf("\n--> 设备初始化\r\n"); func_device_init(); }else if (temp == '2'){ //term_printf("\n--> 网络设置\r\n"); //func_ethernet_setting(); }else if (temp =='3'){ //term_printf("\n--> 传感器调试\r\n"); //func_sensor_test(); }else if (temp == 'q'){ //term_printf("\n--> 系统重启中...\r\n"); ptz_hori_stop(0); ptz_vert_stop(0); //k60_rest(); }else if(temp == 'h'){ //term_printf("--> 1设备初始化\n--> 2加密芯片调试\n--> 3传感器调试\n--> q系统复位\n--> h帮助\r\n"); }else term_printf("\n--> "); } } } /// 创建终端交互任务 /// /// @param none /// @param none /// @return none /// @note 修改日志 /// gkl与2017-05-26创建 static OS_STK task_term_stk[TASK_TERM_STK_SIZE]; static void task_create_term (void) { CPU_INT08U task_err; CPU_INT08U name_err; task_err = OSTaskCreateExt((void (*)(void *)) task_term, (void *) 0, (OS_STK *)&task_term_stk[TASK_TERM_STK_SIZE - 1], (INT8U ) TASK_TERM_PRIO, (INT16U ) TASK_TERM_PRIO, (OS_STK *)&task_term_stk[0], (INT32U ) TASK_TERM_STK_SIZE, (void *) 0, (INT16U )(OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR)); #if (OS_TASK_NAME_EN > 0) OSTaskNameSet(TASK_TERM_PRIO, "task_term", &name_err); #endif if ((task_err == OS_ERR_NONE) && (name_err == OS_ERR_NONE)) { pdebug(DEBUG_LEVEL_INFO,"create task_term success...\n\r"); } else { pdebug(DEBUG_LEVEL_FATAL,"create task_term failed...\n\r"); } } /// 终端串口初始化 /// /// 初始化终端串口驱动 /// @param none /// @param none /// @return none /// @note 修改日志 /// gkl与2017-05-26创建 void init_term_uart() { // 初始化终端串口 g_term_uart_handle = uart_dev_init(TERM_INDEX, TERMINAL_BAUD, term_in_buff, sizeof(term_in_buff)); } /// 终端交互模块初始化 /// /// 创建任务 /// @param none /// @param none /// @return none /// @note 修改日志 /// gkl与2017-05-26创建 void init_term_module() { pdebug(DEBUG_LEVEL_INFO,"init term module\n\r"); // 创建串口终端交互任务 task_create_term(); pdebug(DEBUG_LEVEL_INFO,"init term module finished\n\r"); }