首先的, ublox G350 它可以對 UART 的波型做相位修正的工作, 也就是 baud auto-detect, 所以這裡並沒有 UART 的通訊與控制等.
首先的要在 control-panel 裡設定網路 (Network and Dial-up Connections), 設定撥號 (Make new Connection),
- 設定電話簿名稱 (註: 這個名字十分重要, 請盡可能用英文名), Dial-up connection, next.
- 選擇好 COM (device properites 有些該注意的設定像 baud, data bits, parity, stop bits, flow-control 要注意, 還有第二頁的 "Extra settings" 請一定要在這裡設定好 APN 名稱指令, 如 +cgdcont=1,"IP","internet" ), next.
- 設定 phone number, 一般用 *99#, 但並不是所有的電信業者都一模一樣, 請注意.
因為在 code 裡面是呼叫電話簿來使用, 所以電話簿本身的設定正不正確, 直接影響 GPRS 能不能正常連線.
再來是 code.
//pwEntryName 就是電話簿名稱, 所以前面提這個名字非常重要.
//pRasConn 是之後連線狀況取得與斷線會用上的 handle, 必需保留.
int RAS_Dial(TCHAR pwEntryName[20], HRASCONN *pRasConn)
{
RASDIALPARAMS tRasDialParams = { 0 };
int nERR = 0;
tRasDialParams.dwSize = sizeof(RASDIALPARAMS);
_tcscpy_s(tRasDialParams.szEntryName, 20, pwEntryName);
RasGetEntryDialParams(pwEntryName, 0, 0);
nERR = (int)RasDial(0, 0, &tRasDialParams, (DWORD)-1, 0, pRasConn);
return nERR;
}
int RAS_HangUp(HRASCONN tRasConn)
{
return (int)RasHangUp(tRasConn);
}
int RAS_GetConnectState(HRASCONN tRasConn)
{
RASCONNSTATUS tStatus = { 0 };
RasGetConnectStatus(tRasConn, &tStatus);
if(tStatus.rasconnstate == RASCS_Connected)
{
return 1;
}
return 0;
}
其中比較奇怪的在 RasDial 這裡的 hwnd 要直接給它 null 不能傳入 cWnd 裡的 hwnd 參數, 否則無法工作, 這個不知道是為什麼.
純筆記.
2003/06/23 update:
如果覺的沒有撥號圖示感覺好像少了什麼似的, 的話, 來試試第二個方法. 第二個方法比較簡單:
rnapp.exe -m -n -p -eDIALUPNAME
DIALUPNAME 就是在電話簿裡取的名字.
以下就是可有可無的東西了, 但是很多...
這樣做通常還要再搭配另一個東西, windows-message receiver, 專門去接收 WM_NETCONNECT 這個訊息, 在 MFC 底下可以設定一個很簡單的訊息接收器, 像這樣:
.h
------------
#ifndef WM_NETCONNECT
#define WM_NETCONNECT 0x3feL
#endif
#ifndef RAS_MaxEntryName
#define RAS_MaxEntryName 20
#endif
typedef struct tagRNAAppInfo {
DWORD dwSize;
DWORD hWndRNAApp;
DWORD Context;
DWORD ErrorCode;
TCHAR RasEntryName[RAS_MaxEntryName+1];
} RNAAPP_INFO, *PRNAAPP_INFO;
class Ctheapp : public CWnd
{
afx_msg LRESULT msg_NetConnect(WPARAM, LPARAM);
}
------------
.cpp
------------
BEGIN_MESSAGE_MAP(Ctheapp, CWnd)
ON_MESSAGE(MSG_UI_INIT, msg_NetConnect)
END_MESSAGE_MAP()
LRESULT Ctheapp::msg_NetConnect(WPARAM wParam, LPARAM lParam)
{
BOOL bConnect = (BOOL)wParam;
PRNAAPP_INFO pInfo = (PRNAAPP_INFO)lParam;
if(bConnect)
wprintf(L"connect to %s\n", pInfo->RasEntryName);
else
wprintf(L"%s Disconnect\n", pInfo->RasEntryName);
return 0;
}
------------