2008-11-04 73 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中)。