📄 gprsproc.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 + -