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