CELLID GET

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; }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值