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

📄 net.cpp

📁 采用cb平台开以
💻 CPP
📖 第 1 页 / 共 2 页
字号:
** name:		WNetDial
** function:  	拨号连接,从移动网络取得IP地址
** parameter:	PARAM 拨号参数:APN
** ret: 		
** modify:		
** comment:	 	如果卡要求密码,则需要在此函数前调用WNetUidPwd()设置相应的PIN/密;
********************************************************************************/
unsigned char WNetLink(unsigned char *PARAM)
{
	return gNet.WNetLink(PARAM);
}
/*******************************************************************************
** name:		WNetConnect
** function:  	与应用服务器建立网络连接
** parameter: 	DIP:应用服务器的ip地址;  Dport:应用服务器的ip端口号
** ret: 		
** modify:		
** comment: 	
********************************************************************************/
unsigned char WNetConn(unsigned char *DIP, unsigned char * DPORT)
{
	return gNet.WNetConn(DIP, DPORT);
}

/*******************************************************************************
** name:	 	WNetTxd
** function:  	把数据发送到网络
** parameter: 	buff:数据发送内容;  len:发送长度
** ret: 
** modify:
** comment:		
********************************************************************************/
unsigned char WNetTxd(unsigned char *buff,unsigned short len)
{
	return gNet.WNetTxd(buff,len);
}

/*******************************************************************************
** name:		WNetRxd
** function:  	接受数据
** parameter: 	buff:接收到的内容;  len;接收数据的长度;	 Ms:等待超时值
** ret: 
** modify:
** comment:		
********************************************************************************/
unsigned int WNetRxd(unsigned char *buff,unsigned short *len,unsigned short MS)
//unsigned short WNetRxd(unsigned char *buff,unsigned short *len,unsigned short MS)
{
	return gNet.WNetRxd(buff,len,MS);
}

/*******************************************************************************
** name:   	WNetCloseConn
** function: 	关闭与应用服务器的连接
** parameter: 	none
** ret: 		
** modify:
** comment:  	
********************************************************************************/
unsigned char WNetCloseConn(void)
{
	return gNet.WNetCloseConn();
}

/*******************************************************************************
** name:  		WNetCloseLink
** function:  	断开网络连接
** parameter:	none
** ret:  		
** modify:
** comment:
********************************************************************************/
unsigned char WNetCloseLink(void)
{
	return gNet.WNetCloseLink();
}


/*******************************************************************************
** name: 		WNetCheckSim
** function: 	检测SIM卡是否存在
** parameter:	none
** ret: 
** modify:
** comment:	 	
********************************************************************************/
unsigned char WNetCheckSim(void)
{
	return gNet.WNetCheckSim();
}

/*******************************************************************************
** name: 		WNetCheckSignal
** function: 	取得本地GSM信号强度值
** parameter:	none
** ret: 
** modify:
** comment:	 	
********************************************************************************/
unsigned char WNetCheckSignal(void)
{
	return gNet.WNetCheckSignal();
}

/*******************************************************************************
** name: 		WNetCheckLink
** function:   	与网络连接状态查询
** parameter:	none
** ret: 
** modify:
** comment:	  	
********************************************************************************/
unsigned char WNetCheckLink(void)
{
	return gNet.WNetCheckLink();
}

/*******************************************************************************
** name: 		WNetCheckConn
** function:   	与应用服务器连接状态查询
** parameter:	none
** ret: 
** modify:
** comment:	  	
********************************************************************************/
unsigned char WNetCheckConn(void)
{
	return gNet.WNetCheckConn();
}

/*******************************************************************************
** name:		WNetUidPwd
** function:   	输入个人UID及PWD
** parameter:
** ret: 
** modify:
** comment:	  	
********************************************************************************/
unsigned char WNetUidPwd(unsigned char *UID,unsigned char *PWD)
{
	return gNet.WNetUidPwd(UID, PWD);
}

/*******************************************************************************
** name:		WNetGetVer
** function:   	取得模块软件版本号;
** parameter:
** ret: 
** modify:
** comment:	  	
********************************************************************************/
unsigned char WNetGetVer(unsigned char *ver)
{
	return gNet.WNetGetVer(ver);
}

#endif














/*******************************************************************************
** name:  bp_GPRS_SetupCSCA
** function:  设置服务中心号码
** parameter: *Number --- 号码字符串
** ret: 	   1--成功   0--失败
** modify:
** comment:
********************************************************************************/

unsigned char bp_GPRS_SetupCSCA(char *Number)
{
	unsigned char pos,cRet;

	pos = 0;
	memset(cmd,0,50);
	memcpy(cmd+pos,"AT+CSCA=\"",9);

	pos += 9;
	memcpy(cmd+9,Number,strlen(Number));
	pos += strlen(Number);
	cmd[pos] = '"';
	pos += 1;
	cmd[pos] = '\r';
	pos += 1;

	if (pos >= 50)
		//return ERR_LENGTH_NUMBER;
		return 0xe1;

	CdmaSendPck(cmd,strlen(cmd));
	cRet = CdmaRcvPck(rsp,50,9000,1);
	if (cRet)
		return TRUE;
	else
	//	delay_1ms(200);
		return FALSE;
	
}	


#if 0
/*******************************************************************************
** name: bp_GPRS_DelMessage
** function: 删除某条已读短信
** parameter: none
** ret:   1  -- 成功		0 -- 失败
** modify:
** comment:	删除短信为最近阅读的短信
********************************************************************************/
unsigned char bp_GPRS_DelSMS(void)
{
	//列举序列号
	unsigned char re,i,pos;
	
	re = bp_GPRS_SMSCout(2);

#ifdef CMDOUT
	DebugPrint("re is %x\r\n",(int)re);
#endif 
	if (re == 0)
		return FALSE;
	
	//开始删除
	memset(cmd,0,100);
	pos = 0;
	memcpy(cmd+pos,"AT+CMGD=",8);
	pos += 8;
	for(i=0; i<(LEN_UNREAD_INDEX/2); i++)
	{
		if(unReadIndex[i][0] != 0)
			break;
	}
	if (i == (LEN_UNREAD_INDEX/2))
		return FALSE;                     //没有短信息
	
	if (unReadIndex[i][0] == 0x20) {
		cmd[pos] = unReadIndex[i][1];
		pos++;
	} else {
		memcpy(cmd+pos,unReadIndex[i],2);
		pos += 2;
	}
	memcpy(cmd+pos,"\r\n",2);
	pos += 2;
	cmd[pos] = 0;

	CdmaSendPck(cmd,strlen(cmd));	
	re = CdmaRcvPck(rsp,100,3000,0);
	if (strstr(rsp,"OK"))
		return TRUE;
	else 
		return FALSE;
}

/*******************************************************************************
** name: bp_GPRS_SMSCout
** function:  检查短信个数
** parameter: mode 短信类型  0--未读短信  1--所有短信	2--已读短信
** ret: 	  re 返回短信个数
** modify:
** comment:	  对于已发送短信、未发送短信不做查询,
********************************************************************************/
unsigned char bp_GPRS_SMSCout(unsigned char mode)
{  
	unsigned char re, msgbuf[1024]; //512
	unsigned char xdata *sPo;
	char *Rs;

	if (mode > 2) 
		return 0xff;
	
	memset(unReadIndex,0,LEN_UNREAD_INDEX);
	memset(msgbuf,0,1024);

	switch (mode)
	{
		case 0:

#ifdef MOTO_GPRS		
			CdmaSendPck("AT+MMGL=\"REC UNREAD\"\r",21);
#endif

#ifdef HUAWEI_GPRS
			CdmaSendPck("AT%MGL=\"REC UNREAD\"\r", 20);
#endif			
			re = MsgRcvPck(msgbuf,3072);
			if (re==0 || re==0xff)
				return 0xff;				
			break;
		case 1:	
			CdmaSendPck("AT+CPMS?\r",9);			
			re = MsgRcvPck(msgbuf,3072);
			if (re == 0) 		
				return 0xff;

			sPo = msgbuf;
			Rs = strstr(sPo,"SM");	 //有些格式不一致,会造成读卡错误
			Rs = Rs + 4;
			re = atol((char *)Rs);

#ifdef CMDOUT
			DebugPrint("rs :%s\r\n",Rs);
			DebugPrint("re: %x\r\n",(int)re);						
			DebugPrint("sPo: %s\r\n",sPo);
#endif
			return re;
		case 2:
#ifdef MOTO_GPRS		
			CdmaSendPck("AT+MMGL=\"REC READ\"\r",19);
#endif
#ifdef HUAWEI_GPRS
			CdmaSendPck("AT%MGL=\"REC READ\"\r",18);			
#endif			
			re = MsgRcvPck(msgbuf,3072);
			if (re == 0) {
#ifdef CMDOUT
				DebugPrint("unread re is %d\r\n",(int)re);
#endif
				return 0xff;
			}
			break;
				
	}

	re = 0;
	sPo = msgbuf;
	while (1)
	{
		Rs = strstr(sPo,"MGL:");
	
		if (Rs == GPRS_NULL) {
			return re;
		} else {
			sPo = Rs + 6;
			Rs = strstr(sPo,",");
			memcpy(unReadIndex[re],Rs-2,2);
			re++;
		}
		
	}	
	

}

/*******************************************************************************
** name: bp_GPRS_URMessage
** function: 阅读一条未读短信西
** parameter: dat -- 短信内容
** ret: 
** modify:
** comment:
********************************************************************************/

//读一条未读的短信息
unsigned int bp_GPRS_ReadSMS(char *dat)
{
	char  *Res,*Res1;
	unsigned char *sPo;
	unsigned int pos,pos1;
	unsigned char i,iii;
	unsigned int sum; 
	unsigned char temp;
	unsigned short ret,len;
	unsigned char *p,*q;
	unsigned char msgbuf[256];

	
	pos = 0;
	memset(rsp,0,200);
	memcpy(rsp+pos,"AT+CMGR=",8);
	pos += 8;

	for (i=0; i<(LEN_UNREAD_INDEX/2); i++)
	{
		if (unReadIndex[i][0] != 0)
			break;
	}
	if (i == (LEN_UNREAD_INDEX/2))
		return 0;                     //没有短信息
	
	if (unReadIndex[i][0] == 0x20)
	{
		rsp[pos] = unReadIndex[i][1];
		pos++;
	} else {
		memcpy(rsp+pos,unReadIndex[i],2);
		pos += 2;
	}
	
	memcpy(rsp+pos,"\r\n",2);
	pos += 2;
	rsp[pos] = 0;
	
	CdmaSendPck(rsp,strlen(rsp));
	//ret = CdmaRcvPck(msgbuf,500,1);
	ret = CdmaRcvPck(msgbuf,256,9000,1);
	if (!ret)
		return FALSE;

	sPo = msgbuf,
	Res = strstr(sPo,"+CMGR");     ////
	if (Res == GPRS_NULL)
		return 0;

	sPo = Res+5;
	Res = strstr(sPo,"\x0d\x0a");
	if (Res == GPRS_NULL)
		return 0;

	sPo = Res+2;
	Res1 = strstr(sPo,"\x0d\x0a");
	if (Res1 == GPRS_NULL)
		return 0;

	memset(rsp,0,200);

	pos = Res1-Res-2;
	len = pos/2;

	AsciiToHex(sPo,rsp,pos);

	pos = 0;
	pos1 = 0;
	dat[pos] = 'D';
	pos += 1;
	dat[pos] = '+';
	pos += 1;

	//目标地址码
	pos1 = 2;
	p = strstr(msgbuf,",");
 	if (p == NULL)
		return FALSE;
	p += 5;

   	q = strstr(p,",");
  	if (p == NULL)
		return FALSE;
	memcpy(dat+pos,p,q-p-1);

	pos += (q-p)-1;

	//恢复地址
	dat[pos] = 'T';
	pos++;
	dat[pos] = '+';
	pos++;

	q++;
	p = strstr(q,"\"");
 	if(p == NULL)
		return FALSE;

	p++;
   	q = strstr(p,",");
  	if (p == NULL)
		return FALSE;
	memcpy(dat+pos,p,q-p);
	pos += (q-p);
		

	//用户信息
	dat[pos] = 'M';
	pos++;
	pos1++;
	
	pos1 = 0;
	iii = len;
	sum = uni2gb((unsigned short *)rsp+pos1, dat+pos, (int)iii);
	
	temp = pos;

	pos += sum+2;
	dat[pos] = 0;
	f_cs = 0;	
	f_cs2 = 0;
	rf_cs = 0;
	TDA8007cs = 0;

	return pos;

}


/*******************************************************************************
** name:	WNetSendCmd
** function:  发送命令函数
** parameter: cmd 发送命令  rsp 接受返回数据
** ret: 	   1--失败 0--成功
** modify:
** comment:
********************************************************************************/
unsigned char WNetSendCmd(unsigned char *cmd,unsigned char *rsp)
{
	unsigned char ret;
	int len;
	
	len = strlen((char*)cmd);
	if (len==0 || len>100)
		return 0xff;
	if (cmd[strlen((char *)cmd)-1] != '\r')
		return 0xff;
	ret = CdmaSendPck(cmd,strlen((char*)cmd));
	if (!ret)
		return 0xff;	

	ret = CdmaRcvPck(rsp,64,1,0); 
#ifdef CMDOUT
	DebugPrint("cmd return is %s\r\n", rsp);
#endif
	if (!ret)		   //不作“OK”判断,因为有些命令没返回
		return 0xff;	
	return 0x00;
}

#endif

⌨️ 快捷键说明

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