admin 管理员组

文章数量: 1086019

android 基站id获取,C++ 获取CELL

转的,不知道LZ是否看过

利用COM口来获取CELLID,并不保证所有的设备都支持。

测试平台:

VS2005 + WM 6.0

开发语言:

C++

typedef

struct

{

char CountryCode[12];

char AreaCode[4];

char NetworkCode[4];

char CellID[4];

} TCREG_DATA;

获取基站信息:

复制到剪贴板  C/C++代码

void Get_Cellid(void)

{

char m_sTemp[12] = {0};

strcat(m_sTemp,"COM");

for(int i = 9; i > 0; -- i)

{

char ch1;

_itoa(i,&ch1,10);

strcat(m_sTemp,&ch1);

strcat(m_sTemp,":");

TCREG_DATA* pData = (TCREG_DATA*)GetCREG(m_sTemp);

if(!pData)

continue;

char szNum1[8] = {0};

char szNum2[8] = {0};

strcpy(szNum1,pData->AreaCode);

strcpy(szNum2,pData->CellID);

int iLac = (int)strtol(szNum1,NULL,16);

int iId  = (int)strtol(szNum2,NULL,16);

if (iLac && iId)

{

sprintf(m_sCell.LAC,"%06d", iLac );

sprintf(m_sCell.ID,"%06d", iId  );

break;

}

}

}

获取串口:

复制到剪贴板  C/C++代码

char* GetCREG( char * comPort )

{

HANDLE hCom;

int bufpos;

DCB dcb;

COMMTIMEOUTS to;

DWORD nWritten;

DWORD event;

DWORD nRead;

static

char outbuf[20], buf[256];

BYTE comdevcmd[2]= {0x84, 0x00};

WCHAR m_sCom[12] = {0};

mbstowcs(m_sCom,comPort,strlen(comPort));

hCom= CreateFile( m_sCom ,GENERIC_READ|GENERIC_WRITE,0,0,OPEN_EXISTING,0,0);

if (hCom==NULL || hCom==INVALID_HANDLE_VALUE)

{

hCom= NULL;

return NULL;

}

if (!GetCommState(hCom, &dcb))

{

return

"ERROR:GetCommState Failed";

}

dcb.BaudRate= CBR_115200;

dcb.ByteSize= 8;

dcb.fParity= false;

dcb.StopBits= ONESTOPBIT;

if (!SetCommState(hCom, &dcb))

{

return

"ERROR:SetCommState Failed";

}

EscapeCommFunction(hCom, SETDTR);

EscapeCommFunction(hCom, SETRTS);

GetCommTimeouts(hCom, &to);

to.ReadIntervalTimeout= 0;

to.ReadTotalTimeoutConstant= 200;

to.ReadTotalTimeoutMultiplier= 0;

to.WriteTotalTimeoutConstant= 20000;

to.WriteTotalTimeoutMultiplier= 0;

SetCommTimeouts(hCom, &to);

if (!SetCommMask(hCom, EV_RXCHAR))

{

return

"-8";

}

DWORD rildevresult=0,nReturned=0;

if (!DeviceIoControl (hCom,0xAAAA5679L, comdevcmd, sizeof(comdevcmd),0,0,0,0))

{

return

"-9";

}

bufpos = 0;

strcpy(outbuf,"AT+creg=2\r");

if (!WriteFile(hCom, outbuf, 10, &nWritten, NULL))

{

return

"-10";

}

if (nWritten != 10)

{

return

"-11";

}

if (!WaitCommEvent(hCom, &event, NULL))

{

return

"-12";

}

while(1)

{

if (!ReadFile(hCom, buf+bufpos, 256 - bufpos, &nRead, NULL))

{

return

"-13";

}

if (nRead == 0)

break;

bufpos += nRead;

if (bufpos >= 256)

break;

}

strcpy(outbuf,"AT+creg?\r");

if (!WriteFile(hCom, outbuf, 9, &nWritten, NULL))

{

return

"-14";

}

if (nWritten != 9)

{

return

"-15";

}

if (!WaitCommEvent(hCom, &event, NULL))

{

return

"-16";

}

while(1)

{

if (!ReadFile(hCom, buf+bufpos, 256 - bufpos, &nRead, NULL))

{

return

"-17";

}

if (nRead == 0)

break;

bufpos += nRead;

if (bufpos >= 256)

break;

}

puts(buf);

rildevresult = 0;

if (!EscapeCommFunction(hCom, CLRDTR))

{

return

"-4";

}

if (hCom!=NULL)

{

CloseHandle(hCom);

hCom= NULL;

}

char* cregResponse = strpbrk( buf, "CREG\0" );

return cregResponse;

}

本文标签: android 基站id获取 C 获取CELL