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

📄 wavecom.c

📁 q24Wavecom的C程序代码
💻 C
📖 第 1 页 / 共 4 页
字号:
				}
				//============================================
				case cnATcmd_ECHO:			// 设置回响参数'OK'应答
				{
					break;
				}
				//============================================
				case cnATcmd_CMGF:			// 选择PDU格式'OK'应答
				{
					break;
				}
				//============================================
				case cnATcmd_CSMS:			// 设置符合Phase II标准'OK'应答
				{
					break;
				}
				//============================================
				case cnATcmd_CNMI:			// 设置短信输出位置信息'OK'应答
				{
					break;
				}
				//============================================
				case cnATcmd_CREG:			// 查询注册信息'OK'应答
				{
					StationRun(MsgModelOk,TRUE);
					break;
				}
				//============================================
				case cnATcmd_CMGR:			// 读取短消息'OK'应答
				{
					//StationRun(MsgReadSMS,true);
					break;
				}
				//============================================
				case cnATcmd_CMGD:			// 删除短消息'OK'应答
				{
					StationRun(MsgDelSMS,true);
					break;
				}
				//============================================
				case cnATcmd_CMGS:			// 发送短消息'OK'应答
				{
					StationRun(MsgSendSMS,true);
					break;
				}
				//============================================
				case cnATcmd_CSCA:			// 设置短信中心'OK'应答
				{
					break;
				}
				//============================================
				case cnATcmd_CMGL:			// 罗列所以短消息'OK'应答
				{
					break;
				}
				//============================================
				case cnATcmd_ATE:			// 设置AT命令不回送'OK'应答
				{
					StationRun(MsgModelOk,true);
					break;
				}
				//============================================
				case cnATcmd_NeedPIN:		// 查询SIM卡PIN状态'OK'应答
				{
					break;
				}
				//============================================
				case cnATcmd_PINClck:		// 设置SIM卡锁PIN码'OK'应答
				{
					break;
				}
				//============================================
				case cnATcmd_InputPIN:		// 输入PIN码'OK'应答
				{
					StationRun(MsgInPutPINOK,TRUE);
					break;
				}
				//============================================
				case cnATcmd_ChangePIN:		// 更改PIN码'OK'应答
				{
					StationRun(MsgModelOk,TRUE);
					break;
				}
				//============================================
				case cnATcmd_PINUnClck:		// SIM卡PIN码解锁'OK'应答
				{
					StationRun(MsgModelOk,TRUE);
					break;
				}
				//============================================
				case cnATcmd_CHGBackPIN:	// PIN码更改回默认值'OK'应答
				{
					break;
				}
				//============================================
				case cnATcmd_SaveCfg:		// 用户设置参数存储'OK'应答
				{
					break;
				}
				//============================================
				case cnATcmd_PowerOff:		// 用户关机'OK'应答
				{
					break;
				}
				//============================================
				case cnATcmd_CheckBatt:		// 检查电池电压'OK'应答
				{
					StationRun(MsgModelOk,TRUE);
					break;
				}
				//============================================
				case cnATcmd_SetCallWaitting:	// 设置呼叫等待'OK'应答
				{
					StationRun(MsgSetCallWait,true);
					break;
				}
				//============================================
				case cnATcmd_CancelCallWaittng:		// 取消呼叫等待设置'OK'应答
				{
					StationRun(MsgCancelCallWait,true);
					break;
				}
				//============================================
				case cnATcmd_Answer2ndCall:			// 接听呼叫等待的第2个电话'OK'应答
				{
					StationRun(MsgAnswer2ndCall,true);
					break;
				}
				//============================================
				case cnATcmd_Cancel2ndCall:			// 挂断呼叫等待的第2个电话'OK'应答
				{
					StationRun(MsgCancel2ndCall,true);
					break;
				}
				//============================================
				case cnATcmd_SetCallForward0:		// 设置呼叫转移'OK'应答
				case cnATcmd_SetCallForward1:		// 设置呼叫转移'OK'应答
				case cnATcmd_SetCallForward2:		// 设置呼叫转移'OK'应答
				case cnATcmd_SetCallForward3:		// 设置呼叫转移'OK'应答
				{
					//StationRun(MsgSetCallForward,true);
					EepromRead(cnCallForwardTempLen,&ATcmdAckData,LoadEEpromAddr(cnCallForwardTemp));
					EepromWrite(cnCallForwardLen,&ATcmdAckData,LoadEEpromAddr(cnCallForward));	// 存储转移设置状态
					break;
				}
				//============================================
				case cnATcmd_CancelCallForward:		// 取消呼叫转移设置'OK'应答
				{
					//StationRun(MsgCancelCallForward,true);
					break;
				}
				//============================================
				case cnATcmd_SendCCLK:				// 设置模块时钟'OK'应答
				{
					StationRun(MsgSetRealTime,true);
					break;
				}
				//============================================
				case cnATcmd_CCEDMain:				// 查询主基站好'OK'应答
				{
					StationRun(MsgCCEDMain,TRUE);
					break;
				}
				//============================================
				case cnATcmd_CCEDSub:				// 查询从属基站好'OK'应答
				{
					StationRun(MsgCCEDSub,TRUE);
					break;
				}
				//============================================
				default: break;
			}
			break;
		}
		
		//<><><><><><><><><><><><><><><><><><><><><><><><><><><><>
		case cnRxATcmd_ATAck_RING:			// 收到振铃信号
		{
			bATcmdAckType = true;			// 模块主动输出的参数
			
			StationRun(MsgRvRing,NULL);
			break;
		}
		
		//<><><><><><><><><><><><><><><><><><><><><><><><><><><><>
		//新来电号码分析
		case cnRxATcmd_ATAck_CLIP:	// +CLIP: "05925186308",161,,,,0
		{
			RvNewCID:
			bATcmdAckType = true;			// 模块主动输出的参数
			
			ATcmdAckIdataPtr = SeekCharInString('"',ATcmdAckIdataPtr);	// 找+CLIP:后的双引号
			FillTempBuf();

			i = 0x00;
			F0 = true;
			while(*(++ATcmdAckIdataPtr) != '"')				// 转换字符串,EEprom的存储格式:5029156803F8
			{
				F0 = !F0;
				ATcmdAckData = *ATcmdAckIdataPtr & 0x0F;
				if(F0)
				{
					ATcmdAckData <<= 4;
					ATcmdAckData |= 0x0F;
					TempBuf[i] &= ATcmdAckData;
					++i;
				}
				else
				{
					ATcmdAckData |= 0xF0;
					TempBuf[i] &= ATcmdAckData;
				}
			}
			
			ATcmdAckData = &TempBuf[0];
			StationRun(MsgRvCID,ATcmdAckData);				// 新来电处理
			break;
		}
		
		//<><><><><><><><><><><><><><><><><><><><><><><><><><><><>
		//读取模块实时时钟分析
		case cnRxATcmd_ATAck_CCLK:	// +CCLK: "94/05/06,22:10:00"
		{
			ATcmdAckIdataPtr = SeekCharInString('"',ATcmdAckIdataPtr);
			ATcmdAckDataPtr = &RealTime.Year;
			for(i = 6; i > 0; i--)	// 年/月/日,时:分:秒(共六位长度)
			{
				*ATcmdAckDataPtr = DecToHexByte((*++ATcmdAckIdataPtr << 4) | (*(++ATcmdAckIdataPtr) & 0x0F));
				++ATcmdAckDataPtr;
				++ATcmdAckIdataPtr;
			}
//			RefreshDispTime();		// RealTime.c 重新全部刷新Idle下时钟
			bWaitOKAck = true;
			break;
		}
		
		//<><><><><><><><><><><><><><><><><><><><><><><><><><><><>
		case cnRxATcmd_ATAck_NOCarrier:
		case cnRxATcmd_ATAck_NOANSWER:
		case cnRxATcmd_ATAck_BUSY:
		case cnRxATcmd_ATAck_NODIALTONE:
		{
			StationRun(MsgEndTalking,NULL);			//更改为发消息上去
			//PostATcmd(cnATcmd_ATH,NULL);
			break;
		}
		
		//<><><><><><><><><><><><><><><><><><><><><><><><><><><><>
		case cnRxATcmd_ATAck_Error:
		{
			switch(ATcmdTxArray[0].ATcmdNo & 0x7F)		//普通指令出现ERROR,重发3次
			{											//Del SMS 不处理	
				case cnATcmd_CMGD:			// 删除短消息'ERROR'应答
				{
					StationRun(MsgDelSMS,false);
					break;
				}
				//============================================
				case cnATcmd_CMGS:			// 发送短消息'ERROR'应答
				{
					StationRun(MsgSendSMS,false);
					break;
				}
				//============================================
				case cnATcmd_CMGR:			// 读取短消息'ERROR'应答
				{
					StationRun(MsgReadSMS,false);
					break;
				}
				//============================================

				case cnATcmd_InputPIN:		// SIM卡输入PIN码'ERROR'应答 不处理
				{
					StationRun(MsgPINState,cnInputPINError);
					break;
				}
	
				//============================================
				case cnATcmd_PINClck:		// 设置SIM卡锁PIN码'ERROR'应答
				{
					StationRun(MsgPINState,cnClckPINError);
					break;
				}
				//============================================
				case cnATcmd_ChangePIN:		// SIM卡更改PIN码'ERROR'应答
				{
					StationRun(MsgPINState,cnChangePINError);
					break;
				}
				//============================================
				case cnATcmd_PINUnClck:		// 设置SIM卡PIN码解锁'ERROR'应答
				{
					StationRun(MsgPINState,cnUnClckPINError);
					break;
				}
				//============================================
				case cnATcmd_CHGBackPIN:	// 更改SIM卡PIN码为默认值'ERROR'应答
				{
					StationRun(MsgPINState,cnCHGBackPINError);
					break;
				}
				//============================================
				case cnATcmd_CCID:			// 查询SIM卡ID号'ERROR',重发了7次
				{
					if ((ATcmdTxPara & 0xf0) > 0xa0)
						StationRun(MsgNoSIMCard,false);			//重发了7次,认为无SIMCard 		
					else
						bATcmdNeedResend = true;;		// 普通指令出现ERROR,重发该命令		
					break;
				}
				//============================================
				default:
				{
					if ((ATcmdTxPara & 0xf0) > 0x40)
						StationRun(MsgModelError,false);			//重发了3次,认为系统出错,需要复位WAVCOM 		
					else
						bATcmdNeedResend = true;;		// 普通指令出现ERROR,重发该命令		
				}
			}
			break;
		}
/*
			{
				case cnATcmd_CMGI:			// 查询厂家代码'ERROR'应答
				{
					break;
				}
				//============================================
				case cnATcmd_ATA:			// 接听电话'ERROR'应答
				{
					StationRun(MsgATACall,false);	// 接听电话失败,发失败消息
					break;
				}
				//============================================
				case cnATcmd_ATH:			// 挂断电话'ERROR'应答
				{
					StationRun(MsgATHCall,false);	// 挂断电话失败,发失败消息
					break;
				}
				//============================================
				case cnATcmd_ATD:			// 拨号'ERROR'应答
				{
					StationRun(MsgDialACall,false);
					break;
				}
				//============================================
				case cnATcmd_VTS:			// 发DTMF 'ERROR'应答
				{
					StationRun(MsgDTMF,false);
					break;
				}
				//============================================
				case cnATcmd_IPR:			// 设置波特率'ERROR'应答
				{
					break;
				}
				//============================================
				case cnATcmd_CSQ:			// 查询信号强度'ERROR'应答
				{
					break;
				}
				//============================================
				case cnATcmd_CLIP:			// 设置允许输出来电号码'ERROR'应答
				{

⌨️ 快捷键说明

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