GetCREG.txt
上传用户:lun929
上传日期:2022-05-21
资源大小:1k
文件大小:5k
源码类别:

GPS编程

开发平台:

Visual C++

  1. 标题:AT命令获取基站小区方法
  2. 出处:巳度
  3. 时间:Wed, 03 Feb 2010 21:05:06 +0000
  4. 作者:eyeman
  5. 地址:http://www.sduw.com/read.php?21
  6. 内容:
  7. #include "stdafx.h"
  8. #include 
  9. char* GetCREG( char * comPort );
  10. char* GetCSQ( char * comPort );
  11. char* GetCREG( char * comPort )
  12.    HANDLE hCom; 
  13.    int bufpos; 
  14.    DCB dcb; 
  15.    COMMTIMEOUTS to; 
  16.    DWORD nWritten; 
  17.    DWORD event; 
  18.    DWORD nRead; 
  19.    static char outbuf[20], buf[256]; 
  20.     
  21.    BYTE comdevcmd[2]= {0x84, 0x00}; 
  22.    hCom= CreateFile( L"COM2:" ,GENERIC_READ|GENERIC_WRITE,0,0,OPEN_EXISTING,0,0); 
  23.    if (hCom==NULL || hCom==INVALID_HANDLE_VALUE) 
  24.    { 
  25.      hCom= NULL; 
  26.      return ""; 
  27.    } 
  28.    if (!GetCommState(hCom, &dcb)) 
  29.    { 
  30.      return "ERROR:GetCommState Failed"; 
  31.    } 
  32.    dcb.BaudRate= CBR_115200; 
  33.    dcb.ByteSize= 8; 
  34.    dcb.fParity= false; 
  35.    dcb.StopBits= ONESTOPBIT; 
  36.    if (!SetCommState(hCom, &dcb)) 
  37.    { 
  38.      return "ERROR:SetCommState Failed"; 
  39.    } 
  40.    EscapeCommFunction(hCom, SETDTR);
  41.    EscapeCommFunction(hCom, SETRTS);
  42.    GetCommTimeouts(hCom, &to);
  43.    //if (!EscapeCommFunction(hCom, SETDTR)) 
  44.    //{ 
  45.    //  return "-4"; 
  46.    //} 
  47.    //if (!EscapeCommFunction(hCom, SETRTS)) 
  48.    //{ 
  49.    //  return "-5"; 
  50.    //}    
  51.    //if (!GetCommTimeouts(hCom, &to)) 
  52.    //{ 
  53.    //  return "-6"; 
  54.    //} 
  55.    to.ReadIntervalTimeout= 0; 
  56.    to.ReadTotalTimeoutConstant= 200; 
  57.    to.ReadTotalTimeoutMultiplier= 0; 
  58.    to.WriteTotalTimeoutConstant= 20000; 
  59.    to.WriteTotalTimeoutMultiplier= 0; 
  60.    SetCommTimeouts(hCom, &to);
  61.    //if (!SetCommTimeouts(hCom, &to)) 
  62.    //{ 
  63.    //  return "-7"; 
  64.    //} 
  65.    if (!SetCommMask(hCom, EV_RXCHAR)) 
  66.    { 
  67.      return "-8"; 
  68.    } 
  69.    DWORD rildevresult=0,nReturned=0; 
  70.  
  71.    if (!DeviceIoControl (hCom,0xAAAA5679L, comdevcmd, sizeof(comdevcmd),0,0,0,0)) 
  72.    { 
  73.      return "-9"; 
  74.    } 
  75.    bufpos = 0; 
  76.    strcpy(outbuf,"AT+creg=2r"); 
  77.    if (!WriteFile(hCom, outbuf, 10, &nWritten, NULL))    
  78.    { 
  79.      return "-10"; 
  80.    } 
  81.    if (nWritten != 10) 
  82.    { 
  83.      return "-11"; 
  84.    } 
  85.    if (!WaitCommEvent(hCom, &event, NULL)) 
  86.    { 
  87.      return "-12"; 
  88.    } 
  89.    while(1) 
  90.    { 
  91.      if (!ReadFile(hCom, buf+bufpos, 256 - bufpos, &nRead, NULL)) 
  92.      { 
  93.        return "-13"; 
  94.      } 
  95.      if (nRead == 0) 
  96.        break; 
  97.      bufpos += nRead; 
  98.     
  99.     
  100.      if (bufpos >= 256) 
  101.        break; 
  102.    } 
  103.    strcpy(outbuf,"AT+creg?r"); 
  104.    if (!WriteFile(hCom, outbuf, 9, &nWritten, NULL))    
  105.    { 
  106.      return "-14"; 
  107.    } 
  108.    if (nWritten != 9) 
  109.    { 
  110.      return "-15"; 
  111.    } 
  112.    if (!WaitCommEvent(hCom, &event, NULL)) 
  113.    { 
  114.      return "-16"; 
  115.    } 
  116.    while(1) 
  117.    { 
  118.      if (!ReadFile(hCom, buf+bufpos, 256 - bufpos, &nRead, NULL)) 
  119.      { 
  120.        return "-17"; 
  121.      } 
  122.      if (nRead == 0) 
  123.        break; 
  124.      bufpos += nRead; 
  125.      if (bufpos >= 256) 
  126.        break; 
  127.    } 
  128.    puts(buf); 
  129.    rildevresult = 0;  
  130.    if (!EscapeCommFunction(hCom, CLRDTR)) 
  131.    { 
  132.      return "-4"; 
  133.    } 
  134.    if (hCom!=NULL) 
  135.    { 
  136.      CloseHandle(hCom); 
  137.      hCom= NULL; 
  138.    } 
  139.   char* cregResponse = strpbrk( buf, "CREG" );
  140.    return cregResponse; 
  141. }
  142. char* GetCSQ( char * comPort )
  143.    HANDLE hCom; 
  144.    int bufpos; 
  145.    DCB dcb; 
  146.    COMMTIMEOUTS to; 
  147.    DWORD nWritten; 
  148.    DWORD event; 
  149.    DWORD nRead; 
  150.    static char outbuf[20], buf[256]; 
  151.     
  152.    BYTE comdevcmd[2]= {0x84, 0x00}; 
  153.    hCom= CreateFile( L"COM2:" ,GENERIC_READ|GENERIC_WRITE,0,0,OPEN_EXISTING,0,0); 
  154.    if (hCom==NULL || hCom==INVALID_HANDLE_VALUE) 
  155.    { 
  156.      hCom= NULL; 
  157.      return ""; 
  158.    } 
  159.    if (!GetCommState(hCom, &dcb)) 
  160.    { 
  161.      return "ERROR:GetCommState Failed"; 
  162.    } 
  163.    dcb.BaudRate= CBR_115200; 
  164.    dcb.ByteSize= 8; 
  165.    dcb.fParity= false; 
  166.    dcb.StopBits= ONESTOPBIT; 
  167.    if (!SetCommState(hCom, &dcb)) 
  168.    { 
  169.      return "ERROR:SetCommState Failed"; 
  170.    } 
  171.    EscapeCommFunction(hCom, SETDTR);
  172.    EscapeCommFunction(hCom, SETRTS);
  173.    GetCommTimeouts(hCom, &to);
  174.    to.ReadIntervalTimeout= 0; 
  175.    to.ReadTotalTimeoutConstant= 200; 
  176.    to.ReadTotalTimeoutMultiplier= 0; 
  177.    to.WriteTotalTimeoutConstant= 20000; 
  178.    to.WriteTotalTimeoutMultiplier= 0; 
  179.    SetCommTimeouts(hCom, &to);
  180.    if (!SetCommMask(hCom, EV_RXCHAR)) 
  181.    { 
  182.      return "-8"; 
  183.    } 
  184.    DWORD rildevresult=0,nReturned=0; 
  185.  
  186.    if (!DeviceIoControl (hCom,0xAAAA5679L, comdevcmd, sizeof(comdevcmd),0,0,0,0)) 
  187.    { 
  188.      return "-9"; 
  189.    } 
  190.    bufpos = 0; 
  191.   strcpy(outbuf,"AT+CSQr"); 
  192.    if (!WriteFile(hCom, outbuf, 9, &nWritten, NULL))    
  193.    { 
  194.      return "-14"; 
  195.    } 
  196.    if (nWritten != 9) 
  197.    { 
  198.      return "-15"; 
  199.    } 
  200.    if (!WaitCommEvent(hCom, &event, NULL)) 
  201.    { 
  202.      return "-16"; 
  203.    } 
  204.    while(1) 
  205.    { 
  206.      if (!ReadFile(hCom, buf+bufpos, 256 - bufpos, &nRead, NULL)) 
  207.      { 
  208.        return "-17"; 
  209.      } 
  210.      if (nRead == 0) 
  211.        break; 
  212.      bufpos += nRead; 
  213.      if (bufpos >= 256) 
  214.        break; 
  215.    } 
  216.    puts(buf); 
  217.    rildevresult = 0;  
  218.    if (!EscapeCommFunction(hCom, CLRDTR)) 
  219.    { 
  220.      return "-4"; 
  221.    } 
  222.    if (hCom!=NULL) 
  223.    { 
  224.      CloseHandle(hCom); 
  225.      hCom= NULL; 
  226.    } 
  227.    char* csqResponse = strpbrk( buf, "CSQ" );
  228.    return csqResponse; 
  229. }
  230. Generated by Bo-blog 2.1.1 Release