Windows CE操作系統的遠程訪問服務RAS(Remote Access Server)功能,允許用戶從遠程地點將自己的計算機設備連接到一個計算機網絡,一旦建立了連接,就可以像與局域網中一樣與其他計算機進行通訊。英創公司ARM系列工控主板,預裝了正版WinCE5.0操作系統,支持采用RAS撥號方式,通過GPRS或3G信道,把設備直接接入到Internet。關于GPRS撥號建立的文章,請參考《基于WINCE平臺eVC編程要點之二——WinCE下的GPRS 應用》,本文介紹如何自動建立一個3G撥號連接并實現自動撥號。
1、自動創建3G撥號連接
創建3G撥號連接與創建GPRS撥號連接一樣,需要添加一個RASEntry到RAS 的電話薄中,并將其保存在注冊表中。RASEntry中需要設置作為調制解調器的設備屬性(端口設置、撥號選項)以及指定電話號碼和用戶驗證參數。在EM9000 嵌入式主板上,直接支持WinCE 桌面系統,用戶可以通過界面中“控制面板”手動添加3G撥號連接。具體的設置方法請參見技術文檔《EM9000 3G通訊網絡設置》一文,這里不再贅述。而EM9160、EM9260 嵌入式主板沒有支持WinCE 的界面,為了方便用戶的使用,英創專門設計了自動創建3G撥號連接的程序3GEntry.exe,用戶將相應的配置文件3GEntry.txt放在與3GEntry.exe同一目錄中,可以通過Telnet登錄到ARM工控主板,運行一次3GEntry.exe,即可自動創建3G 的撥號連接。需要注意的是3GEntry.exe只需運行一次即可。
英創公司針對不同3G模塊和不同的3G運營商提供了相對應的配置文件3GEntry.txt,在3GEntry.txt中保存了RASEntry所需要的配置信息,用戶一般不需要修改配置文件,以免建立撥號連接失敗。
2、自動運行3G撥號連接
在建立撥號連接后,需要調用RasDial(…)函數來建立PPP連接,一但建立了PPP連接,就可以像在局域網上一樣,調用標準WinSockets API進行網絡應用層的處理與遠端主機通信了。
RasDial是操作系統提供的一個自動撥號函數,用于在RAS客戶端與RAS服務器之間建立連接。RasDial函數可通過帶入參數來設置為同步調用或異步調用,當RasDial函數作為同步調用時,函數將阻塞,直到連接建立或產生錯誤時,函數才返回,同步調用的優點是編程簡單,缺點是不能獲得連接過程的狀態信息。
當RasDial執行異步調用時,進行連接的同時,函數調用會立即返回,然后通過窗口消息來監視撥號連接的狀態。在進行RAS連接時,異步調用RasDial是優選方法,因為可以對連接過程進行監視。下面是異步調用RasDial,通過Windows消息來監視撥號連接的程序片段。
int nFlag = 0; // 定義全局變量,用于判斷連接是否建立
// 異步調用RasDial,函數馬上返回,需通過監視Windows消息判斷連接狀態
RasDial (NULL, NULL, &RasDialParams, 0xFFFFFFFF, v_hWnd, &hRasConn);
if(nFlag == 1 )
{
// 連接建立,可進行網絡應用層處理
}
// Windows消息處理函數
LRESULT CALLBACK WndProc (HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
RASCONNSTATE RasState = (RASCONNSTATE)wParam;
switch (Msg)
{
case WM_RASDIALEVENT : // 收到撥號連接消息
OutputMessage (TEXT(‘RasDial: ’));
switch (RasState)
{
case RASCS_OpenPort: // 正在打開端口
OutputMessage (TEXT(‘On open port’));
break;
case RASCS_PortOpened: // 端口已打開
OutputMessage (TEXT(‘Port is opened’));
break;
case RASCS_ConnectDevice: // 正在連接設備
OutputMessage (TEXT(‘On Connect Device’));
break;
case RASCS_Connected : // 連接已建立
OutputMessage (TEXT(‘Connected’));
nFlag = 1; // 置標志位
break;
case RASCS_Disconnected : // 連接斷開
OutputMessage (TEXT(‘Disconnected’));
nFlag = 0; // 置標志位
break;
default :
break;
}
break;
default:
return DefWindowProc(hWnd, Msg, wParam, lParam);
}
return FALSE;
}
本文介紹的自動創建撥號連接和自動撥號的方法與英創主板是否擁有圖形顯示界面無關,可以應用于英創所有ARM9工控主板上。
-
WINDOWS
+關注
關注
4文章
3551瀏覽量
88858 -
嵌入式主板
+關注
關注
7文章
6085瀏覽量
35430
發布評論請先 登錄
相關推薦
評論