如何确定 AT 指令使用的COM ?
我想从Windows Mobile 6.0 (dopod p900) 上通过AT指令获得CELLID,(想获得当前位置接收到的所有的CellID信息,而RIL 只能获得一个,通过AT指令来实现,这种思路对吗?)
第一步:我如何找到可以发送AT 指令的串口?
第二步:如何去设置串口?
下面有段代码,是小弟东抄抄,西抄抄的,还不可以用,第一步就串口打不开。
char* GetCNSE( char * comPort){ TCHAR IMEI[24] = {L'\0'}; TCHAR AT_IMEI[] = L"AT+CGSN\n"; //查看产品 IMEI 序列号 TCHAR CGSN[] = L"CGSN"; TCHAR *p; TCHAR tempbuf[64] = { L'\0' }; int i = 0; HANDLE hCom; DCB dcb; DWORD nWritten; DWORD nRead; hCom= CreateFile( L"COM9:" ,GENERIC_READ|GENERIC_WRITE,0,0,OPEN_EXISTING,0,0); if (hCom==NULL || hCom==INVALID_HANDLE_VALUE) { hCom= NULL; return ""; } // BYTE comdevcmd[2]= {0x84, 0x00}; 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"; } Sleep(2000);// WritePort(AT_IMEI, lstrlen(AT_IMEI)); // 写串口函数 WriteFile(hCom, AT_IMEI, lstrlen(AT_IMEI), &nWritten, NULL); Sleep(2000); memset (tempbuf, L'\0', sizeof(tempbuf) >> 1);// i = ReadPort(tempbuf, sizeof(tempbuf) >> 1); //读串口函数 ReadFile(hCom, tempbuf, sizeof(tempbuf), &nRead, NULL); p = wcsstr(tempbuf, CGSN); memcpy(IMEI, p + 7, 15); //这为什么是这样,我也不知道 if (hCom!=NULL) { CloseHandle(hCom); hCom= NULL; } return "OK";}