2008-11-04 72 views
1

我想獲得的CellID使用AT命令,但我沒有得到來自調制解調器任何迴應,我的代碼看起來像下面,我發送AT + CCED命令,但從來沒有得到任何迴應。的Windows Mobile 6的AT命令

HANDLE hCom; 
char * xpos; 
char rsltstr[5]; 
DWORD returnValue; 
DWORD LAC; 
DWORD CellId; 
int bufpos; 
DCB dcb; 
COMMTIMEOUTS to; 
DWORD nWritten; 
DWORD event; 
DWORD nRead; 
char outbuf[20], buf[256]; 

hCom = CreateFile(L"\\\.\\COM9:",GENERIC_READ|GENERIC_WRITE,0,0,OPEN_EXISTING,0,0); 
if (hCom==NULL || hCom==INVALID_HANDLE_VALUE) 
{ 
    TCHAR szBuf[80]; 
    DWORD dw = GetLastError(); 

    // get the most uptodate cells 
    _stprintf(szBuf, TEXT("CreateFile failed with error %d."), dw); 

    MessageBox(0, szBuf, TEXT("Error"), MB_OK); 

    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; 
} 

bufpos = 0; 

strcpy(outbuf,"AT+CCED=0,5\r"); 

if (!WriteFile(hCom, outbuf, strlen(outbuf), &nWritten, NULL)) 
{ 
    return -10; 
} 

if (nWritten != strlen(outbuf)) 
{ 
    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) // <---- it alweys break here 
     break; 


    bufpos += nRead; 


    if (bufpos >= 256) 
     break; 


} 

回答

1

我不知道如何使用AT命令的東西來獲得小區ID,但你可以使用RIL接口來獲得小區ID。這可能是比使用AT命令簡單(除非你想遠程怎麼做呢?)

http://msdn.microsoft.com/en-us/library/ms890075.aspx

您使用RIL_GetCellTowerInfo函數來獲得當前手機信號塔ID。

1

我的問題是,在一些devicec RIL iterface方法返回E_NOTIMPL並沒有什麼作品,所以我因子評分,我可以直接與移動調制解調器與托爾克AT命令。

沒有任何人有解決這樣的問題,我與它現在的戰鬥了一個多星期。

+0

我有相同的挑戰。我的HTC Diamond沒有響應RIL_GetCellTowerInfo(..),所以我一直在尋找整個星期來嘗試找到獲取CellID和LAC數據的解決方案。 我一直想試試AT命令的方法。 您是否有幸成功獲取這些信息? – 2009-05-16 22:05:45

+0

沒有,我還是用上面的代碼 – michael 2009-05-23 13:36:22

2

首先,嘗試使用L「COM9:」作爲CreateFile的第一個參數。

看看這個頁面:Device File Names

1

顯然我不能發表評論..所以: @Sebastian:我在2種機型HTC鑽石+的HTC Touch Pro的+的ATT引信運行Ril_GetCellTowerInfo。它適用於所有4部手機。如果您需要更多幫助,我很樂意分享一些工作代碼(在VB.NET中)。