MW22-02A/APP/Device/device_Other/device_term.c

823 lines
31 KiB
C
Raw Normal View History

2025-05-21 01:55:40 +00:00
////////////////////////////////////////////////////////////////////////////////
/// 终端交互模块文件
///
///
/// 包含底层驱动初始化及任务创建
/// @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");
}