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

📄 gprsproc.cpp

📁 采用cb平台开以
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "UartPort.h"
#include "GprsNet.h"
#include "Gprsproc.h"

#include "stdarg.h"
#include "stdio.h"
#include "stdarg.h"
#include "string.h"

char * xltResultStr(unsigned char icode);
char *xltCode2Str(unsigned char icode);
//---------------------------------------------------------------------------

#pragma package(smart_init)

#define GLEN				1024
#define MAX_TEST_NUM		(1)
unsigned char GPRS_func(void)
{
	unsigned char  cRet;
	unsigned char  testtimes=0, signal[MAX_TEST_NUM], testresult[MAX_TEST_NUM];
	unsigned char  failloc[MAX_TEST_NUM], failorok[MAX_TEST_NUM];
	unsigned char  testagainflag=0;
	unsigned short len;
	int i, j;
	//unsigned short times;
	//WnetParam      wparam;
	unsigned char  msg[255], *p;

	unsigned char  sendbuffer[128];
	unsigned char  rxbuffer[128];

testagain_label:
	memset(failloc,   0, sizeof(failloc));
	memset(failorok,  0, sizeof(failorok));
	memset(testresult,0, sizeof(testresult));
	memset(signal,    0, sizeof(signal));
	testtimes=0;
	testagainflag=0;

	DebugPrint("GPRS测试 V1.84");		//2008.01.31

testcontinue_label:
	while(testtimes<MAX_TEST_NUM)
	{

		DebugPrint("\r\n=========== 第 %d 次================",(unsigned int)testtimes+1);

		memset(rxbuffer,0,33);
		for(i=0;i<32;i++)
		{
			sendbuffer[i]=(char)i;
		}

		DebugPrint("初始化GPRS");
		cRet=WNetInit();
		if (cRet!=N_RESULT_SUCCESS)
		{
			//faile
			DebugPrint("模块初始化失败!");
			sprintf(msg, "故障代码:0x%02X", cRet);
			DebugPrint(msg);
			return 0;
		}

		memset(msg, 0, sizeof(msg));
		cRet=WNetGetVer(msg);
		DebugPrint(msg);

		//////////////////////////////////////////////////////////////////////////
		DebugPrint("检测SIM卡是否存在...");
		cRet=WNetCheckSim();

		failloc[testtimes]=0;
		testresult[testtimes]=cRet;
		if (cRet!=N_RESULT_SUCCESS) {
			DebugPrint("请关机, 插卡后再测. ");
			sprintf(msg, "故障代码:0x%02X", cRet);
			DebugPrint(msg);
			return 0;
		}
		sprintf(msg, ",SIM卡存在",(unsigned int)testtimes+1);
		DebugPrint(msg);

		////////////////////////////////

		cRet=WNetCheckSignal();
		sprintf(msg,"GSM信号值   %d  ",(int)cRet);
		DebugPrint(msg);
		signal[testtimes]=cRet;

		DebugPrint("取公网IP...");

		cRet=WNetLink("CMNET");
		failloc[testtimes]=1;
		testresult[testtimes]=cRet;
		if(cRet==N_RESULT_SUCCESS){
			DebugPrint("取公网IP    成功");
		} else {
			DebugPrint("取公网IP    失败");
			//WNetCloseLink();
			goto EXITGPRS;
		}

        //*
		////////////////////////////////
		DebugPrint("连接通讯...");
		DebugPrint("连接东华");

		cRet=WNetConn("211.148.213.241","5000");
		//cRet=WNetConn("211.148.213.241","50");
		//cRet=WNetConn("121.14.89.14","50");
		failloc[testtimes]=2;
		testresult[testtimes]=cRet;
		
		sprintf(msg, "连接东华    %s", xltResultStr(cRet));
		DebugPrint(msg);
		

		if (cRet!=N_RESULT_SUCCESS)
		{
			DebugPrint("\r\n   连接东华失败,返回值%d", cRet);

			failorok[testtimes]=1;
			if (signal[testtimes]>10) goto tesths_label;
			else goto EXITGPRS;
		}

		DebugPrint("发送数据...");
		cRet=WNetTxd(sendbuffer,32);
		failloc[testtimes]=3;
		testresult[testtimes]=cRet;

		if(cRet!=N_RESULT_SUCCESS)
		{
			DebugPrint("发送数据    失败");
			goto EXITGPRS;
		} else {
			DebugPrint("发送数据    成功");
			////////////////////////////////
			DebugPrint("接收数据...");

			memset(rxbuffer, 0, sizeof(rxbuffer));
			len=32;
			cRet=WNetRxd(rxbuffer, &len, 8000);

			failloc[testtimes]=4;
			testresult[testtimes]=cRet;

			if(cRet!=N_RESULT_SUCCESS)
			{
				DebugPrint("接收数据    失败");
				goto EXITGPRS;
			}
            else
            {
				p=strstr((char *)rxbuffer,(char *)sendbuffer);
				if(NULL!=p)
				{
					DebugPrint("接收收据    成功");
				} else {
					DebugPrint("接收数据    失败");
					goto EXITGPRS;
				}
			}
		}


		////////////////////////////////
		DebugPrint("关闭连接...");

		if (WNetCloseConn()==N_RESULT_SUCCESS)
    		DebugPrint("关闭连接    成功");
        else
    		DebugPrint("关闭连接    失败");
        //    */
tesths_label:
               //*/
		DebugPrint("连接合数");
		cRet=WNetConn("58.246.66.61","32000");

		sprintf(msg, "连接合数    %s", xltResultStr(cRet));
		DebugPrint(msg);

		if (cRet!=N_RESULT_SUCCESS)
		{
			DebugPrint("\r\n   连接合数失败,返回值%d", cRet);

			if (failorok[testtimes]==1)
				failloc[testtimes]=7;
			else {
				failloc[testtimes]=5;
				testresult[testtimes]=cRet;
			}
			goto EXITGPRS;
		}

		DebugPrint("发送数据...");
		cRet=WNetTxd(sendbuffer,32);

		if(cRet!=N_RESULT_SUCCESS)
		{
			DebugPrint("发送数据    失败");
			goto EXITGPRS;
		}
        else
        {
			DebugPrint("发送数据    成功");
			DebugPrint("接收数据...");
        }

		//DebugPrint("接收握手信号...");
		//memset(rxbuffer, 0, sizeof(rxbuffer));
        memset(rxbuffer, 0, sizeof(rxbuffer));
		len=32;
		cRet=WNetRxd(rxbuffer, &len, 8000);
		if (cRet==N_RESULT_SUCCESS)
        {
		    if (strstr((char *)rxbuffer,(char *)sendbuffer))
			//if (memcmp(rxbuffer, "COM", 3)==0) {
            {

				DebugPrint("接收握手信号成功.");
			}
            else
            {
				DebugPrint("接收握手信号失败.");
			}
		}
        else
        {
			DebugPrint("接收握手信号失败.");
		}
      //  */
		DebugPrint("关闭连接...");

		if (WNetCloseConn()==N_RESULT_SUCCESS)
    		DebugPrint("关闭连接    成功");
        else
    		DebugPrint("关闭连接    失败");


		DebugPrint("关闭公网...");

		if (WNetCloseLink()==N_RESULT_SUCCESS)
    		DebugPrint("关闭公网    成功");
        else
    		DebugPrint("关闭公网    失败");

		testtimes++;

	}

    /*
	for (i=0; i<MAX_TEST_NUM; i++)
	{
		if (failorok[i]==1) goto EXITGPRS;
	}

	////////////////////////////////
	WNetCloseConn();
	WNetCloseLink();
    */
	DebugPrint("-------测试完成--------");
	return 0;

EXITGPRS:
//	WNetCloseConn();
//	WNetCloseLink();

	if (testtimes<MAX_TEST_NUM)
	{
		failorok[testtimes]=1;
		testtimes++;
		goto testcontinue_label;
		//continue;
	} else {
		//显示失败信息并允许再测试;
		testtimes++;
		testagainflag=0;
		DebugPrint("序 位置  代码 信号值");

		DebugPrint("\r\n --- GPRS测试结果 --- ");
		DebugPrint("\r\n序 位置  代码 信号值 ");

		j=1;
		for (i=0; i<MAX_TEST_NUM; i++)
		{
			if(failorok[i]==1)
			{
				memset(msg, 0, sizeof(msg));
				sprintf(msg,"%d %-7s  %02X    %d",(unsigned int)i+1, xltCode2Str(failloc[i]), (unsigned int)testresult[i], (unsigned int)signal[i]);
				if (signal[i]<10)
				{
					//允许再测试
					testagainflag=1;
				}

				DebugPrint("\r\n%s", msg);
				j++;
			}
		}
	}
}
//---------------------------------------------------------------------------
char * xltResultStr(unsigned char icode)
{
	switch(icode){
	default:
	case N_RESULT_ERR:
		return ("失败");
	case N_RESULT_GETSTAT:
		return ("掉线");
	case N_RESULT_GETERROR://			(0x02)
		return ("收到ERROR");
	case N_RESULT_RECVTIMEOUT://		(0x03)		
		return ("接收超时");
	case N_RESULT_OFFLINE://			(0x04)		
		return ("已掉线");
	case N_RESULT_RECVINVALID://		(0x05)		
		return ("内容非法");
	case N_RESULT_GPRSNOTREG://			(0x06)		
		return ("未附着");
	case N_RESULT_NOTGETOK://			(0x07)		//未收到OK字符
		return ("无OK符");

	case N_RESULT_SUCCESS://			(0xff)
		return ("成功");
	}
}

char *xltCode2Str(unsigned char icode)
{
	switch (icode)
	{
	case 0:
		return ("查卡");
	break;

	case 1:
		return ("取IP");
	break;

	case 2:
		return ("连接1");	
	break;

	case 3:
		return ("发送");
	break;

	case 4:
		return ("接收");
	break;

	case 5:
		return ("连接2");
	break;
	case 7:
		return ("连接1&2");
	break;
	case 10:
		return ("信号低");
	}
	return (" ");
}


⌨️ 快捷键说明

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