英創提供的系列ARM9嵌入式主板,包括有EM9000嵌入式主板、EM9260嵌入式主板、EM9160嵌入式主板都是預裝了正版WinCE操作系統,ARM9嵌入式主板的所有通訊接口均配置有標準的WinCE驅動程序。本文以串口通訊和GPRS通訊為例,側重介紹利用GPRS進行數據透明傳輸的方案,該方案通過GPRS自動撥號上網,和遠端網絡數據中心建立TCP連接,從而實現遠端數據中心和應用串口數據之間的透明傳輸功能。
本文以英創的EM9260嵌入式主板為例來介紹GPRS數據透明傳輸的應用方案。在本方案中EM9260中COM2口接GPRS通訊模塊,COM3口作為應用串口。關于EM9260主板接口的詳細介紹請參見“EM9260數據手冊”。
在進行本方案測試時,首先需要建立一個遠端數據中心,該數據中心作為服務器端,運行一個TCPServer的程序,特別需要注意的是該數據中心必須要具有互聯網可訪問的IP地址,GPRS撥號上網后才能訪問該數據中心,互聯網可訪問的IP包括有靜態IP、ADSL撥號上網后的IP等,關于這部分的內容請參見英創網站“GPRS/CDMA應用方案”一文的介紹。第二需要將EM9260主板上的以太網的網關參數設置為0,在訪問外網時以確保系統選路時是通過GPRS訪問,而不至于通過以太網的網關路由訪問。設置的方法可以通過修改userinfo.txt文件內容,如:
[LOCAL_MACHINE]
DefaultGateway='0.0.0.0' // 以太網的缺省網關參數設置為0
IPAddress='192.168.201.170'
SubnetMask='255.255.255.0'
[USER_EXE]
Name='\NandFlash\GPRS232.exe'
Parameters=''
[SYSTEM]
Store='50'
該方案實現代碼為GPRS232項目文件,在該例程中主要包括三部分的內容:GPRS自動撥號上網;作為TCP客戶端的WinSock數據通訊;應用串口數據通訊。其中GPRS自動撥號上網部分在應用文檔 “基于WINCE平臺eVC編程要點之二 — WINCE下的GPRS應用”中有詳細的介紹,這里就不再贅述。
本方案例程中據啟動了兩個接收線程,一個串口通訊接收線程,一個是TCP Socket接收線程,各接收線程分別執行不同功能的回調函數。
// 串口接收線程調用回調函數,處理串口接收到的數據
void CALLBACK OnReceive( )
{
if( ConnState==2 )
{
// 串口接收到的數據通過TCP連接發送到遠端數據中心
m_TCPClient.SendData( m_ceSer.DatBuf, m_ceSer.m_lDatLen );
}
}
// WinSock接收線程調用回調函數,處理TCP連接接收到的數據
void CALLBACK OnRead( )
{
BOOL bResult;
// TCP連接接收到遠端數據中心的數據通過應用串口發送到目標設備
m_ceSer.WritePort( m_TCPClient.RecvBuf, m_TCPClient.m_nRecvLen );
}
// 處理WinSocket關閉操作
void CALLBACK OnClose( )
{
char Buf[100];
int len;
strcpy( Buf,'TCP connect closed' );
len = strlen( Buf );
m_ceSer.WritePort( Buf, len );
}
// WinSock出錯處理,對TCP連接狀態復位,主循環將重新進行撥號、重新建立TCP
// 連接的操作
void CALLBACK OnError( int nErrorCode)
{
ConnState = 0;
}
對本方案感興趣的英創客戶可以向英創技術部分索取相關代碼。
成都英創信息技術有限公司 028-8618 0660