📄 niceril.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 + -