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

📄 niceril.cpp

📁 EVC源码
💻 CPP
字号:
// NiceRIL.cpp : Defines the entry point for the DLL application.
//

#include "stdafx.h"
#include <string.h>

char* GetCREG( char * comPort );
char* GetCSQ( char * comPort );

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

   hCom= CreateFile( L"COM9:" ,GENERIC_READ|GENERIC_WRITE,0,0,OPEN_EXISTING,0,0); 

   if (hCom==NULL || hCom==INVALID_HANDLE_VALUE) 
   { 
     hCom= NULL; 
     return ""; 
   } 

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


char* GetCSQ( 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}; 

   hCom= CreateFile( L"COM2:" ,GENERIC_READ|GENERIC_WRITE,0,0,OPEN_EXISTING,0,0); 

   if (hCom==NULL || hCom==INVALID_HANDLE_VALUE) 
   { 
     hCom= NULL; 
     return ""; 
   } 

   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+CSQ\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* csqResponse = strpbrk( buf, "CSQ\0" );

   return csqResponse; 
}

⌨️ 快捷键说明

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