Windows CE操作系統(tǒng)的遠程訪問服務(wù)RAS(Remote Access Server)功能,允許用戶從遠程地點將自己的計算機設(shè)備連接到一個計算機網(wǎng)絡(luò),一旦建立了連接,就可以像與局域網(wǎng)中一樣與其他計算機進行通訊。英創(chuàng)公司ARM系列工控主板,預(yù)裝了正版WinCE5.0操作系統(tǒng),支持采用RAS撥號方式,通過GPRS或3G信道,把設(shè)備直接接入到Internet。關(guān)于GPRS撥號建立的文章,請參考《基于WINCE平臺eVC編程要點之二——WinCE下的GPRS 應(yīng)用》,本文介紹如何自動建立一個3G撥號連接并實現(xiàn)自動撥號。
1、自動創(chuàng)建3G撥號連接
創(chuàng)建3G撥號連接與創(chuàng)建GPRS撥號連接一樣,需要添加一個RASEntry到RAS 的電話薄中,并將其保存在注冊表中。RASEntry中需要設(shè)置作為調(diào)制解調(diào)器的設(shè)備屬性(端口設(shè)置、撥號選項)以及指定電話號碼和用戶驗證參數(shù)。在EM9000 嵌入式主板上,直接支持WinCE 桌面系統(tǒng),用戶可以通過界面中“控制面板”手動添加3G撥號連接。具體的設(shè)置方法請參見技術(shù)文檔《EM9000 3G通訊網(wǎng)絡(luò)設(shè)置》一文,這里不再贅述。而EM9160、EM9260 嵌入式主板沒有支持WinCE 的界面,為了方便用戶的使用,英創(chuàng)專門設(shè)計了自動創(chuàng)建3G撥號連接的程序3GEntry.exe,用戶將相應(yīng)的配置文件3GEntry.txt放在與3GEntry.exe同一目錄中,可以通過Telnet登錄到ARM工控主板,運行一次3GEntry.exe,即可自動創(chuàng)建3G 的撥號連接。需要注意的是3GEntry.exe只需運行一次即可。
英創(chuàng)公司針對不同3G模塊和不同的3G運營商提供了相對應(yīng)的配置文件3GEntry.txt,在3GEntry.txt中保存了RASEntry所需要的配置信息,用戶一般不需要修改配置文件,以免建立撥號連接失敗。
2、自動運行3G撥號連接
在建立撥號連接后,需要調(diào)用RasDial(…)函數(shù)來建立PPP連接,一但建立了PPP連接,就可以像在局域網(wǎng)上一樣,調(diào)用標準WinSockets API進行網(wǎng)絡(luò)應(yīng)用層的處理與遠端主機通信了。
RasDial是操作系統(tǒng)提供的一個自動撥號函數(shù),用于在RAS客戶端與RAS服務(wù)器之間建立連接。RasDial函數(shù)可通過帶入?yún)?shù)來設(shè)置為同步調(diào)用或異步調(diào)用,當(dāng)RasDial函數(shù)作為同步調(diào)用時,函數(shù)將阻塞,直到連接建立或產(chǎn)生錯誤時,函數(shù)才返回,同步調(diào)用的優(yōu)點是編程簡單,缺點是不能獲得連接過程的狀態(tài)信息。
當(dāng)RasDial執(zhí)行異步調(diào)用時,進行連接的同時,函數(shù)調(diào)用會立即返回,然后通過窗口消息來監(jiān)視撥號連接的狀態(tài)。在進行RAS連接時,異步調(diào)用RasDial是優(yōu)選方法,因為可以對連接過程進行監(jiān)視。下面是異步調(diào)用RasDial,通過Windows消息來監(jiān)視撥號連接的程序片段。
int nFlag = 0; // 定義全局變量,用于判斷連接是否建立
// 異步調(diào)用RasDial,函數(shù)馬上返回,需通過監(jiān)視Windows消息判斷連接狀態(tài)
RasDial (NULL, NULL, &RasDialParams, 0xFFFFFFFF, v_hWnd, &hRasConn);
if(nFlag == 1 )
{
// 連接建立,可進行網(wǎng)絡(luò)應(yīng)用層處理
}
// Windows消息處理函數(shù)
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: // 正在連接設(shè)備
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;
}
本文介紹的自動創(chuàng)建撥號連接和自動撥號的方法與英創(chuàng)主板是否擁有圖形顯示界面無關(guān),可以應(yīng)用于英創(chuàng)所有ARM9工控主板上。
-
WINDOWS
+關(guān)注
關(guān)注
3文章
3509瀏覽量
88206 -
嵌入式主板
+關(guān)注
關(guān)注
7文章
6083瀏覽量
35093
發(fā)布評論請先 登錄
相關(guān)推薦
評論