CELLID GET

来源:互联网 发布:社交网络电影下载 编辑:程序博客网 时间:2024/05/17 23:51
cellid免费招聘,贴心求职,尽在远大前程(人才网)#include "stdafx.h"#include "pdacellid.h"#include "ril.h"BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ){ switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE;}PDACELLID_API long fnGetCell(LPTSTR outData){HANDLE hCom;char * xpos;char rsltstr[5];DWORD CellId;int bufpos;DCB dcb;COMMTIMEOUTS to;DWORD nWritten;DWORD event;DWORD nRead;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 -1; } if (!GetCommState(hCom, &dcb)) { return -2; } dcb.BaudRate= CBR_115200; dcb.ByteSize= 8; dcb.fParity= false; dcb.StopBits= ONESTOPBIT; if (!SetCommState(hCom, &dcb)) { return -3; } if (!EscapeCommFunction(hCom, SETDTR)) { return -4; } if (!GetCommTimeouts(hCom, &to)) { return -6; } to.ReadIntervalTimeout= 0; to.ReadTotalTimeoutConstant= 200; to.ReadTotalTimeoutMultiplier= 0; to.WriteTotalTimeoutConstant= 20000; to.WriteTotalTimeoutMultiplier= 0; if (!SetCommTimeouts(hCom, &to)) { return -7; } if (!SetCommMask(hCom, EV_RXCHAR)) { return -8; } 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; } buf[bufpos] = 0; mbstowcs(outData,buf,bufpos+1); if ((xpos = strstr(buf,"CREG")) == NULL) { CellId = -19; } else { memcpy(rsltstr,xpos+18,4); rsltstr[4] = 0; if (sscanf(rsltstr,"%X",&CellId) != 1) { CellId = -20; } } if (hCom!=NULL) { CloseHandle(hCom); hCom= NULL; } return CellId;}///////////////////////////////////////////////////////////////////void CALLBACK NotifyCallback(DWORD dwCode, const void *lpData, DWORD cbData, DWORD dwParam){ switch (dwCode & RIL_NCLASS_ALL) { case RIL_NCLASS_MESSAGE: { switch (dwCode & 0xff) { case RIL_NOTIFY_MESSAGE: { RILMESSAGE *prmMsg = (RILMESSAGE *)lpData;// DisplayMessage(prm); switch(prmMsg->dwType) { case RIL_MSG_IN_DELIVER: { break; } default: break; } break; } case RIL_NOTIFY_STATUSMESSAGE: { RILMESSAGE *prm = (RILMESSAGE *)lpData; break; } } break; } }}void CALLBACK ResultCallback(DWORD dwCode, HRESULT hrCmdID, const void *lpData, DWORD cbData, DWORD dwParam){}PDACELLID_API long fnGetCell2(LPTSTR outData){HANDLE hCom;HRIL hRil;char * xpos;char rsltstr[5];DWORD CellId;DWORD erc, erc2;int bufpos;DCB dcb;COMMTIMEOUTS to;DWORD nWritten;DWORD nRead;char outbuf[20], buf[256]; // BYTE comdevcmd[2]= {0x84, 0x00}; DWORD dwNotificationClasses = 0xFF0000; DWORD g_dwParam = 0x55AA55AA; erc = RIL_Initialize(1, ResultCallback, NotifyCallback, dwNotificationClasses, g_dwParam, &hRil); if (erc != 0) return erc; erc = RIL_GetSerialPortHandle(hRil,&hCom); if (erc != 0) { erc2 = RIL_Deinitialize(hRil); return erc; } if (hCom==NULL || hCom==INVALID_HANDLE_VALUE) { hCom= NULL; erc = RIL_Deinitialize(hRil); return -1; } if (!GetCommState(hCom, &dcb)) { erc = RIL_Deinitialize(hRil); return -2; } dcb.BaudRate= CBR_115200; dcb.ByteSize= 8; dcb.fParity= false; dcb.StopBits= ONESTOPBIT; if (!SetCommState(hCom, &dcb)) { erc = RIL_Deinitialize(hRil); return -3; } if (!EscapeCommFunction(hCom, SETDTR)) { erc = RIL_Deinitialize(hRil); return -4; }// if (!EscapeCommFunction(hCom, SETRTS))// {// erc = RIL_Deinitialize(hRil);// return -5;// } if (!GetCommTimeouts(hCom, &to)) { erc = RIL_Deinitialize(hRil); return -6; } to.ReadIntervalTimeout= MAXDWORD; to.ReadTotalTimeoutConstant= 1000; to.ReadTotalTimeoutMultiplier= MAXDWORD; to.WriteTotalTimeoutConstant= 2000; to.WriteTotalTimeoutMultiplier= 0; if (!SetCommTimeouts(hCom, &to)) { erc = RIL_Deinitialize(hRil); return -7; } if (!SetCommMask(hCom, EV_RXCHAR+EV_ERR+EV_BREAK)) { erc = RIL_Deinitialize(hRil); return -8; } bufpos = 0; strcpy(outbuf,"AT+creg=2/r"); if (!WriteFile(hCom, outbuf, 10, &nWritten, NULL)) { erc = RIL_Deinitialize(hRil); return -10; } if (nWritten != 10) { erc = RIL_Deinitialize(hRil); return -11; } while(1) { if (!ReadFile(hCom, buf+bufpos, 256 - bufpos, &nRead, NULL)) { erc = RIL_Deinitialize(hRil); return -13; } if (nRead == 0) break; bufpos += nRead; if (bufpos >= 256) break; } if (bufpos == 0) { erc = RIL_Deinitialize(hRil); return -130; } strcpy(outbuf,"AT+creg?/r"); if (!WriteFile(hCom, outbuf, 9, &nWritten, NULL)) { erc = RIL_Deinitialize(hRil); return -14; } if (nWritten != 9) { erc = RIL_Deinitialize(hRil); return -15; } bufpos = 0; while(1) { if (!ReadFile(hCom, buf+bufpos, 256 - bufpos, &nRead, NULL)) { erc = RIL_Deinitialize(hRil); return -17; } if (nRead == 0) break; bufpos += nRead; if (bufpos >= 256) break; } if (bufpos == 0) { erc = RIL_Deinitialize(hRil); return -131; } buf[bufpos] = 0; mbstowcs(outData,buf,bufpos+1); if ((xpos = strstr(buf,"CREG")) == NULL) { CellId = -19; } else { memcpy(rsltstr,xpos+18,4); rsltstr[4] = 0; if (sscanf(rsltstr,"%X",&CellId) != 1) { CellId = -20; } } if (hCom!=NULL) { CloseHandle(hCom); hCom= NULL; } erc = RIL_Deinitialize(hRil); return CellId;}
原创粉丝点击