NiceRIL.cpp
上传用户:rx_deng
上传日期:2014-02-22
资源大小:21k
文件大小:5k
源码类别:

Windows Mobile

开发平台:

C/C++

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