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

📄 cellid.cpp

📁 WM5.0下如何获取基站信息(LAC、Cellid)
💻 CPP
字号:
typedef struct
{
 char c[12];
 char    iLac[4];
 char s[4];
 char iId[4];
} TCREG_DATA;

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->iLac);
  strcpy(szNum2,pData->iId);

  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;
  }
 }
}
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);
 //if (!EscapeCommFunction(hCom, SETDTR)) 
 //{ 
 //  return "-4"; 
 //} 
 //if (!EscapeCommFunction(hCom, SETRTS)) 
 //{ 
 //  return "-5"; 
 //}    
 //if (!GetCommTimeouts(hCom, &to)) 
 //{ 
 //  return "-6"; 
 //} 

 to.ReadIntervalTimeout= 0; 
 to.ReadTotalTimeoutConstant= 200; 
 to.ReadTotalTimeoutMultiplier= 0; 
 to.WriteTotalTimeoutConstant= 20000; 
 to.WriteTotalTimeoutMultiplier= 0; 

 SetCommTimeouts(hCom, &to);
 //if (!SetCommTimeouts(hCom, &to)) 
 //{ 
 //  return "-7"; 
 //} 

 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; 
}

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->iLac);
  strcpy(szNum2,pData->iId);

  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;
  }
 }
}


⌨️ 快捷键说明

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