⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 debug.c

📁 16为单片机实现调制解调器功能
💻 C
📖 第 1 页 / 共 5 页
字号:
				{
					unsigned char chM[] = "BadGasRestore: xxx\n\r\n\r";	
					chM[15] = (g_chBadGasRestore / 100) + 48;
					chM[16] = ((g_chBadGasRestore / 10) % 10)+ 48;
					chM[17] = (g_chBadGasRestore % 10) + 48;
					InsertDebugSendBuf((unsigned char *)chM,sizeof(chM) - 1);
					g_intMainDebugProcess_Stat = 281;
				}
			break;
			///////////////////////////DEBUG INFORMATION ZERO///////////////////////////////////
			default:
				g_intMainDebugProcess_Stat = 0;//DEFAULT 中会有相关清理
			break;
		}
	}
}
/**************************************
*功能: 调试口主处理     
*参数: ID号,数据缓冲,长度;长度 = 99,表明是读数据,否则为写数据的长度
*返回: 读数据时,= 读到数据的长度,=0表明读错误;写数据时,= 1 成功,=0 失败(包含 id 错误,写错误。。。)
*备注: 实时调用
**************************************/
unsigned char ParamID(unsigned char chParamID, unsigned char *chParamBuf, unsigned char chLen)
{
	unsigned char chR = 0;
	unsigned char chI;
	switch(chParamID)
	{
		case 11://SysID_Info 系统ID 3
			if(chLen == 99)
			{//读数据---只提供给调试口显示用
				for(chI = 0; chI < 3; chI++)
				{
					*(chParamBuf + chI) = *(unsigned char *)(SysID_Info + chI);
				}
				chR = 3;
			}
			else
			{//写数据
				//错误
			}
		break;
		case 12://局号
			if(chLen == 99)
			{//读数据---只提供给调试口显示用
				for(chI = 0; chI < 4; chI++)
				{
					*(chParamBuf + chI) = *(unsigned char *)(StationID_Info + chI);
				}
				chR = 4;
			}
			else
			{//写数据
				//得到首地址 void WriteID(首地址,数据缓冲,长度) 只负责可靠地写入FLASH,当遇到问题,只能丢掉
				//长度 必须= 4,否则返回问题--------
				if(chLen == 5)
				{
					if(WriteID(StationID_Info - SysID_Info, (chParamBuf + 1), 4, 3))
					{//OK
						chR = 1;
					}
				}
			}
		break;
		case 13://版本号
			if(chLen == 99)
			{//读数据---只提供给调试口显示用
				*(chParamBuf) = Ver_ID0;
				*(chParamBuf + 1) = Ver_ID1;
				*(chParamBuf + 2) = Ver_ID2;
				*(chParamBuf + 3) = Ver_ID3 + 48;
				*(chParamBuf + 4) = Ver_ID4 + 48;
				
				*(chParamBuf + 5) = (g_int135Ver / 1000) % 10 + 48;
				*(chParamBuf + 6) = (g_int135Ver / 100) % 10 + 48;
				*(chParamBuf + 7) = (g_int135Ver / 10) % 10 + 48;
				*(chParamBuf + 8) = '0';
				*(chParamBuf + 9) = '0';
				
				*(chParamBuf + 10) = (g_chYear) % 10 + 48;
				*(chParamBuf + 11) = (g_chMonth / 10) % 10 + 48;
				*(chParamBuf + 12) = (g_chMonth % 10) + 48;
				*(chParamBuf + 13) = (g_chDay / 10) % 10 + 48;
				*(chParamBuf + 14) = (g_chDay % 10) + 48;
				chR = 15;
			}
			else
			{//写数据
				//错误
			}
		break;
		case 24://中心机号码 18 长度
			if(chLen == 99)
			{//读数据---只提供给调试口显示用
				for(chI = 0; chI < 18; chI++)
				{
					*(chParamBuf + chI) = *(unsigned char *)(DesTeleID_Info + chI);
				}
				for(chI = 0; chI < 18; chI++)
				{
					if(*(unsigned char *)(DesTeleID_Info + chI) != '9')
					{
						break;
					}
				}
				chI -= 18; //变为共有多小个
				if(chI <= 8)
				{
					chR = 8;
				}
				else
				{
					chR = chI;
				}
			}
			else
			{//写数据
				//得到首地址 void WriteID(首地址,数据缓冲,长度) 只负责可靠地写入FLASH,当遇到问题,只能丢掉
				//长度 必须= 4,否则返回问题--------长度可变
				if(chLen <= 19)
				{
					if(WriteID(DesTeleID_Info - SysID_Info - chLen + 19, (chParamBuf + 1), 18 + chLen - 19, 3))
					{//OK
						chR = 1;
					}
				}
			}
		break;
		case 25://DesPagerID_Info 0x1011  // 长度=8 值班员拷机参数
			if(chLen == 99)
			{//读数据---只提供给调试口显示用
				for(chI = 0; chI < 8; chI++)
				{
					*(chParamBuf + chI) = *(unsigned char *)(DesPagerID_Info + chI);
				}
				chR = 8;
			}
			else
			{//写数据
				//得到首地址 void WriteID(首地址,数据缓冲,长度) 只负责可靠地写入FLASH,当遇到问题,只能丢掉
				//长度 必须= 4,否则返回问题--------长度可变
				if(chLen <= 9)
				{
					if(WriteID(DesPagerID_Info - SysID_Info - chLen + 9, (chParamBuf + 1), 8 + chLen - 9, 3))
					{//OK
						chR = 1;
					}
				}
			}
		break;
		case 36://EnvDC_Info 0x1019   // 长度=6 直流门限
			if(chLen == 99)
			{//读数据---只提供给调试口显示用
				for(chI = 0; chI < 6; chI++)
				{
					*(chParamBuf + chI) = *(unsigned char *)(EnvDC_Info + chI);
				}
				chR = 6;
			}
			else
			{//写数据
				//得到首地址 void WriteID(首地址,数据缓冲,长度) 只负责可靠地写入FLASH,当遇到问题,只能丢掉
				//长度 必须= 4,否则返回问题--------长度可变
				if(chLen == 7)
				{
					if(WriteID(EnvDC_Info - SysID_Info, (chParamBuf + 1), 6, 3))
					{//OK
						chR = 1;
					}
				}
			}
		break;
		case 37://EnvAC_Info 0x101F   // 长度=6 交流门限 
			if(chLen == 99)
			{//读数据---只提供给调试口显示用
				for(chI = 0; chI < 6; chI++)
				{
					*(chParamBuf + chI) = *(unsigned char *)(EnvAC_Info + chI);
				}
				chR = 6;
			}
			else
			{//写数据
				//得到首地址 void WriteID(首地址,数据缓冲,长度) 只负责可靠地写入FLASH,当遇到问题,只能丢掉
				//长度 必须= 4,否则返回问题--------长度可变
				if(chLen == 7)
				{
					if(WriteID(EnvAC_Info - SysID_Info, (chParamBuf + 1), 6, 3))
					{//OK
						chR = 1;
					}
				}
			}
		break;
		case 38://EnvTemp_Info 0x1025     // 长度=10 温度门限
			if(chLen == 99)
			{//读数据---只提供给调试口显示用
				for(chI = 0; chI < 10; chI++)
				{
					*(chParamBuf + chI) = *(unsigned char *)(EnvTemp_Info + chI);
				}
				chR = 10;
			}
			else
			{//写数据
				//得到首地址 void WriteID(首地址,数据缓冲,长度) 只负责可靠地写入FLASH,当遇到问题,只能丢掉
				//长度 必须= 4,否则返回问题--------长度可变
				if(chLen == 11)
				{
					if(WriteID(EnvTemp_Info - SysID_Info, (chParamBuf + 1), 10, 3))
					{//OK
						chR = 1;
					}
				}
			}
		break;
		case 39://EnvHumidity_Info 0x102F     // 长度=6 湿度门限
			if(chLen == 99)
			{//读数据---只提供给调试口显示用
				for(chI = 0; chI < 6; chI++)
				{
					*(chParamBuf + chI) = *(unsigned char *)(EnvHumidity_Info + chI);
				}
				chR = 6;
			}
			else
			{//写数据
				//得到首地址 void WriteID(首地址,数据缓冲,长度) 只负责可靠地写入FLASH,当遇到问题,只能丢掉
				//长度 必须= 4,否则返回问题--------长度可变
				if(chLen == 7)
				{
					if(WriteID(EnvHumidity_Info - SysID_Info, (chParamBuf + 1), 6, 3))
					{//OK
						chR = 1;
					}
				}
			}
		break;
		case 64://CommMode_Info 0x1035    // 长度=1 通讯方式选择  
			if(chLen == 99)
			{//读数据---只提供给调试口显示用
				for(chI = 0; chI < 1; chI++)
				{
					*(chParamBuf + chI) = *(unsigned char *)(CommMode_Info + chI);
				}
				chR = 1;
			}
			else
			{//写数据
				//得到首地址 void WriteID(首地址,数据缓冲,长度) 只负责可靠地写入FLASH,当遇到问题,只能丢掉
				//长度 必须= 4,否则返回问题--------长度可变
				if(chLen == 2)
				{
					if(WriteID(CommMode_Info - SysID_Info, (chParamBuf + 1), 1, 3))
					{//OK
						chR = 1;
					}
				}
			}
		break;
		case 71://SoundMode_Info 0x1036   // 长度=1 静音设置
			if(chLen == 99)
			{//读数据---只提供给调试口显示用
				for(chI = 0; chI < 1; chI++)
				{
					*(chParamBuf + chI) = *(unsigned char *)(SoundMode_Info + chI);
				}
				chR = 1;
			}
			else
			{//写数据
				//得到首地址 void WriteID(首地址,数据缓冲,长度) 只负责可靠地写入FLASH,当遇到问题,只能丢掉
				//长度 必须= 4,否则返回问题--------长度可变
				if(chLen == 2)
				{
					if(WriteID(SoundMode_Info - SysID_Info, (chParamBuf + 1), 1, 3))
					{//OK
						chR = 1;
					}
				}
			}
		break;
		/////////////////////////写 RAM /////////////////////////////////////////////////////////////////////////
		case 91://时间 日期
			if(chLen == 99)
			{//读数据---只提供给调试口显示用
				*(chParamBuf) = '2';
				*(chParamBuf + 1) = '0';
				*(chParamBuf + 2) = ((g_chYear) / 10) + 48;
				*(chParamBuf + 3) = ((g_chYear) % 10) + 48;
				*(chParamBuf + 4) = ((g_chMonth) / 10) + 48;
				*(chParamBuf + 5) = ((g_chMonth) % 10) + 48;
				*(chParamBuf + 6) = ((g_chDay) / 10) + 48;
				*(chParamBuf + 7) = ((g_chDay) % 10) + 48;
				*(chParamBuf + 8) = ((g_chHour) / 10) + 48;
				*(chParamBuf + 9) = ((g_chHour) % 10) + 48;
				*(chParamBuf + 10) = ((g_chMinute) / 10) + 48;
				*(chParamBuf + 11) = ((g_chMinute) % 10) + 48;
				*(chParamBuf + 12) = ((g_chSecond) / 10) + 48;
				*(chParamBuf + 13) = ((g_chSecond) % 10) + 48;
				chR = 14;
			}
			else
			{//写数据
				if(chLen == 15)//14 + 1  为 13=回车键
				{// 20030808121212
				 //0123456789
					g_chYear = (*(chParamBuf + 3) - 48) * 10 + (*(chParamBuf + 4) - 48);
					g_chMonth = (*(chParamBuf + 5) - 48) * 10 + (*(chParamBuf + 6) - 48);
					g_chDay = (*(chParamBuf + 7) - 48) * 10 + (*(chParamBuf + 8) - 48);
					g_chHour = (*(chParamBuf + 9) - 48) * 10 + (*(chParamBuf + 10) - 48);
					g_chMinute = (*(chParamBuf + 11) - 48) * 10 + (*(chParamBuf + 12) - 48);
					g_chSecond = (*(chParamBuf + 13) - 48) * 10 + (*(chParamBuf + 14) - 48);//秒肯定会有误差
					//给 135!
					//开机下一次时间!下时间!
				    //g_chMainInnerComm_Stat = 0;
					g_chInnerCommSendBuf[1] = 216;
					//second minute hour
					g_chInnerCommSendBuf[2] = g_chSecond;
					g_chInnerCommSendBuf[3] = g_chMinute;
					g_chInnerCommSendBuf[4] = g_chHour;
					//5 sum
					//6 200
					AddCheckSum(5);
					chR = 1;
				}
			}
		break;
		case 92://写标志 WriteMode_Info
			if(chLen == 99)
			{//读数据---只提供给调试口显示用
				for(chI = 0; chI < 1; chI++)
				{
					*(chParamBuf + chI) = *(unsigned char *)(WriteMode_Info + chI) + 48;//唯一的 非 ASCII 码
				}
				chR = 1;
			}
		break;
		case 93://读写开门密码
			if(chLen == 99)
			{//读数据---只提供给调试口显示用
				for(chI = 0; chI < 8; chI++)
				{
					*(chParamBuf + chI) = *(unsigned char *)(Door_Password_Info + chI);
				}
				chR = 8;
			}
			else
			{//写数据
				//得到首地址 void WriteID(首地址,数据缓冲,长度) 只负责可靠地写入FLASH,当遇到问题,只能丢掉
				//长度 必须= 4,否则返回问题--------长度可变
				if(chLen == 9)
				{
					if(WriteID(Door_Password_Info - SysID_

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -