?? 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 + -