亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

基于Nokia S60的游戲開發之五

2019-11-18 19:39:51
字體:
來源:轉載
供稿:網友
  在這一講中中,將討論Symbian OS的通訊組件。必須強調的是,從一個游戲開發者的角度來看,通訊技術是非常重要的。 最后介紹如何接收補充的游戲數據。

  通訊體系結構

  智能電話的移動特性和通訊技術的飛躍發展決定了它們對通訊模塊的需求。 全世界都在使用智能電話,但是每個國家或者地區可用的通訊服務可能會有很大的差異。 現有的服務和技術不斷地發展,而且新的技術層出不窮。 這些事實就要求智能電話通訊模塊具有靈活性和擴展性,因此Symbian OS的通訊體系結構是基于這些思想來設計的。 它由幾個小的模塊組成,并且支持可以在運行期間裝載的可插入式模塊。 而且通訊設置可以在系統不重新啟動的情況下就進行更改。

  Symbian OS 6.1版本支持多種通訊技術,圖1中都作了介紹。 特定的智能電話的可用的技術取決于它的硬件解決方案。 例如諾基亞7650或者諾基亞3650沒有串行的數據線,但是可以通過藍牙技術支持串行通訊。


圖1 Series 60通訊技術

  Symbian OS的通訊體系結構基于三個通訊服務器:ETEL、C32和ESOCK。 服務器提供的通訊服務是異步操作,因此它們需要被封裝到活動對象里。一個客戶應用程序一般產生三個不同的活動對象:一個用于傳送數據、一個用于接收數據還有一個用于應用程序端通訊引擎。通訊模塊的關系如圖2所示。


圖2 Symbian OS的通訊組件

  ETEL是一個電話通訊服務器,用于應用程序訪問各種電話硬件和服務,例如GSM手機、模擬調制解調器和傳真通訊服務。 這個服務器使用可動態裝載的插入式模塊--電話通訊服務器模塊(TSYs),把硬件特定的信息轉化為應用程序可理解的格式。 這個服務器的客戶端應用編程接口定義在etel.h頭文件中,它主要由RTelServer、RPhone、RLine和RCall類組成。

  串行通訊服務器

  串行通訊服務器(C32)為它的客戶端提供一個串行端口應用編程接口。這個服務器使用通訊服務器插入式模塊(CSYs)處理實際的通訊協議。Symbian OS提供多個CSY模塊,例如處理RS232和紅外線串行通訊。應用程序開發者還可以使用串行協議模塊應用編程接口來開發自定義CSY模塊,自定義CSY模塊定義在cs_port.h頭文件中。

  串行通訊服務器使用方法都是很相似的,不管是否使用了CSY模塊。首先在初始化階段,客戶端加載所需要的驅動程序,打開服務器并且裝載CSY模塊。在實際的設備已經打開并且配置之后,服務器準備發送并接收數據。最后,需要釋放所有的資源。 串行通訊服務器的客戶端應用編程接口定義在c32comm.h頭文件中,主要由RComm和RCommServ類組成。 下面的代碼是一個紅外線串行通訊初始化階段的示例。

// Load device drivers
TInt err = User::LoadPhysicalDevice( _L("EUART1") );
if ( err != KErrNone && err != KErrAlreadyExists )
 User::Leave( err );
 err = User::LoadLogicalDevice( _L("ECOMM") );
if ( err != KErrNone && err != KErrAlreadyExists )
 User::Leave(err);
 // Start serial communications server of type RCommServ
 User::LeaveIfError( iServer.Connect() );
 // Load CSY module for IrComm
 User::LeaveIfError( iServer.LoadCommModule( _L("IRCOMM") ) );
 // Open port of type RComm
 User::LeaveIfError( iport.Open( iServer, _L(""IRCOMM::0""),ECommExclusive ) );


  上面的示例代碼可以通過加載ECUART CSY模塊來從IRCOMM模式切換到RS232,同時使用COMM:0端口代替IRCOMM:0。 RComm::Open中的ECommExclusive枚舉防止其他的RComm客戶端使用這個端口。

  可以使用RComm:Write和RComm::Read方法向端口寫數據和從端口讀取數據,它們都是使用一個TRequestStatus和一個描述符作為參數。 當傳遞完成時,生成一個事件作為活動對象,這個事件的TRequestStatus被傳送到傳遞方法,這就使活動對象的RunL被調用。描述符參數通常是一個8位描述符,因此如果被傳送的數據是文本的話,這個描述符需要被轉換為Unicode。 數據傳送方法可能還使用其它的一些參數,指定數據傳送的最大長度或者時間等特征。

  對于應用程序來說,使用紅外線進行通訊是一個很簡易的方法,但是支持IrComm的主要原因便于以前的應用程序的轉化,使之可以更容易地使用串行端口來進行通訊。和其它IrDA協議相比,IrComm不利的一面是它不提供所有的IrDA服務。 例如,使用IrComm的最大數據傳送速度只有9600比特/秒,這顯然對于眾多傳送大量數據的終端游戲來說是不夠快的。
  套接字服務器

  套接字服務器(ESOCK)提供一個使用套接字的通訊協議的接口。 對于所有的協議和指定協議行為,客戶端應用編程接口都是相同的。 套接字服務器使用TCP/IP、IrDA和藍牙這些協議模塊,它們可在運行期間動態裝載。 一個協議模塊可能包含多個協議。 例如IrDA模塊可能包含原始的IrMUX、IrTinyTP、IrLAP、IrLMP和IrObex協議。 對應于TSY和CSY模塊的公共協議模塊可以由應用程序開發者開發。

  套接字服務器的客戶端應用編程接口的主要的類是RSocketServ和RSocket。 可以看到它們與RCommServ和Rcomm很相像。 RSocketServ處理一個服務器的會話,提供可用的協議的信息,但是不提供任何數據傳送服務--它們由套接字類RSocket提供。 因為客戶端應用編程接口對于所有協議都是相同的,某種單一協議的屬性和語義與TPRotocolDesc結構是有區別的。RSocketServer::GetProtocolInfo方法可用于讀取當前裝載的協議的信息。 套接字服務器至少需要兩個不同的套接字。 一個用于監聽進入連接請求,另一個用于建立一個連接和傳送數據。 套接字服務器的客戶端應用編程接口定義在es_sock.h頭文件中。

  最吸引游戲開發者眼球的套接字服務器協議是藍牙技術。 它提供了一個相對快速的、近程的解決方案,并且是免費使用的,因此很適合用于開發游戲。 與紅外線通訊相比,藍牙的優勢是它有更大的活動半徑以及在終端之間不需要任何可見的連接。

  如圖3所示藍牙由一個協議組組成。 Symbian OS 6.1版支持藍牙1.0版,并且提供給應用程序完全訪問RFCOMM、L2CAP和SDP協議的權限。 RFCOMM協議模擬串行通訊,因此簡化了從原有應用程序的轉化為使用藍牙技術的過程。 應用程序的通常選擇是使用邏輯鏈路控制和適應協議(L2CAP),提供給應用程序更加強大的函數來控制藍牙連接。 服務發現協議(SDP)允許應用程序查詢服務和服務提供商。通常當創建一個新的連接的時候,SDP搜索要求的終端并且建立連接設置。 Symbian OS還提供一個完整的用戶界面組件來搜索可用的藍牙終端。 它使用Symbian OS的通知框架,在應用程序窗口上產生一個對話類型組件并且把可用的終端作為一個列表來顯示。


圖3 藍牙堆棧

  游戲數據接收

  為了支持游戲接收額外的游戲數據,Series 60能讓第三方游戲使用MIME類型在OS中注冊它們的數據文件格式。 MIME類型被像WML瀏覽器和消息應用程序這樣的通訊應用程序來使用,用于弄清楚一個具有某種特定類型的文件應該被保存在什么路徑。 例如這個文件可以包含用于一個游戲的新的等級、武器或者圖形。
在Series 60中,用于游戲的MIME類型是下面這種格式:application/x-NokiaGameData-<APPLICATION-ID>,這其中的<APPLICATION-ID>是Symbian OS游戲應用程序的UID的最后八個數字。MIME類型在Symbian OS應用程序信息文檔aif文件中聲明:

RESOURCE AIF_DATA
{
 app_uid=0x12345678; // Application UID
 datatype_list =
 {
  DATATYPE
  {
   priority = EDataTypePriorityHigh;
   type = "application/x-NokiaGame-Data-12345678";
  }
 };
}

  DATATYPE結構中的優先級指定當前的應用程序是如何處理這些數據格式。 EDataTypePriorityHigh應用于不能被其它應用程序處理的數據格式。

  接收數據的目的路徑在名為<APPLICATION-ID>.ini的ini文件中指定。 這個文件需要使用Unicode格式,并且它包含SDDataDir=<GAME-PATH>,在這里<GAME-PATH>是用于接收文件的路徑。 這個路徑是相對于默認游戲數據目錄c:/nokia/games的。 當一個游戲被安裝時,ini文件需要被復制到/System/SharedData目錄下,它可以通過在一個游戲的pkg文件中指定路徑來實現。

  Series 60指定一個用于游戲數據文件的遵循MIME類型的標準頭結構。 頭格式的結構在圖4中說明。 Data類型字段可用于指定游戲內部的文件類型。 Name字串是一個Unicode字串,可用于指定一個用戶可見的文本來顯示菜單中的數據選項。 Data ID和Data版本是用于指定文件數據的類型和版本的號碼。 NGDX字段必須包含ASCII字串"NGDX"。


圖4用于游戲數據文件的標準頭


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲天堂视频在线观看| 精品久久久久久中文字幕一区奶水| 欧美高清在线播放| 5566日本婷婷色中文字幕97| 日韩精品在线私人| 欧美性猛交xxxx久久久| 亚洲最大福利视频网站| 中文字幕久久久av一区| www.久久久久| 国产精品久久久av| 国产视频999| 久久777国产线看观看精品| 午夜欧美不卡精品aaaaa| 一区二区av在线| 欧美肥老太性生活视频| 欧美极品美女视频网站在线观看免费| 久久精品男人天堂| 国产精品久久久久久网站| 欧美黑人性猛交| 久久久久久久久久久网站| 91精品久久久久久久久久入口| 欧美激情在线有限公司| 欧美乱妇高清无乱码| 欧美高清电影在线看| 日韩视频在线一区| 日本aⅴ大伊香蕉精品视频| 欧美日韩国产区| 日韩欧美高清视频| 成人日韩在线电影| 亚洲福利视频在线| 成人激情在线播放| 清纯唯美亚洲综合| 亚洲美女www午夜| 欧美日本啪啪无遮挡网站| 欧美日韩国产成人在线| 亚洲经典中文字幕| 国产在线精品播放| 欧美日韩国产成人在线| 欧美大全免费观看电视剧大泉洋| 92国产精品久久久久首页| 亚洲一区二区三区香蕉| 亚洲精品久久久久国产| 久久人人看视频| 国产精品第100页| 欧美日韩精品国产| 国产在线999| 日韩精品在线视频美女| 伊人一区二区三区久久精品| 亚洲曰本av电影| 丝袜亚洲另类欧美重口| 欧美日韩xxxxx| 亚洲精品之草原avav久久| 国产精品高潮呻吟视频| 欧美怡红院视频一区二区三区| 欧美精品在线播放| 日韩在线视频观看| 亚洲国产成人在线视频| 国产精品日日摸夜夜添夜夜av| 岛国av在线不卡| 日本精品免费一区二区三区| 国产精品视频免费在线| 欧美日韩国内自拍| 成人激情视频在线观看| 亚洲精品mp4| 久久偷看各类女兵18女厕嘘嘘| 久久久久久亚洲精品不卡| 国产精品视频免费观看www| 国产一区二区三区在线视频| 精品调教chinesegay| 亚洲va久久久噜噜噜| 精品欧美一区二区三区| 亚洲国产精久久久久久| 亚洲xxxx3d| 国产精品日韩在线观看| 欧美黑人xxx| 久久久女人电视剧免费播放下载| 9.1国产丝袜在线观看| 欧美激情中文字幕在线| 欧美精品性视频| 欧美大荫蒂xxx| 欧美成人午夜激情视频| 欧美在线影院在线视频| 国产在线精品播放| 欧美日韩精品在线| 91精品久久久久久久久久久| 欧美与欧洲交xxxx免费观看| 欧美精品在线第一页| www.久久撸.com| 亚洲аv电影天堂网| 91香蕉嫩草神马影院在线观看| 91色视频在线观看| 亚洲精品国产福利| 欧美性猛交xxxxx水多| 在线视频一区二区| 亚洲第一二三四五区| 亚洲精品国产精品久久清纯直播| 亚洲国内高清视频| 欧美极度另类性三渗透| 国产精品伦子伦免费视频| 成人免费xxxxx在线观看| 久久全球大尺度高清视频| 性色av一区二区三区红粉影视| 亚洲男人天堂视频| 国产精品日本精品| 欧美华人在线视频| 亚洲国产精品系列| 欧美精品激情视频| 亚洲国产精品小视频| 97欧美精品一区二区三区| 成人免费黄色网| 日韩av观看网址| 欧美激情一区二区久久久| 亚洲风情亚aⅴ在线发布| 亚洲高清一区二| 欧美日韩国产第一页| 国产亚洲a∨片在线观看| 国产精品美女免费视频| 亚洲国模精品私拍| 欧美日韩免费区域视频在线观看| 日韩免费不卡av| 国产精品爽爽ⅴa在线观看| 欧美老少做受xxxx高潮| 色噜噜国产精品视频一区二区| 在线播放国产精品| 欧美日韩成人网| 精品国内亚洲在观看18黄| 久久久久久国产精品美女| 亚洲精品免费一区二区三区| 毛片精品免费在线观看| 福利视频一区二区| 久久九九亚洲综合| 超碰91人人草人人干| 日韩一区二区三区在线播放| 黄网动漫久久久| 欧美亚洲午夜视频在线观看| 国产精品成人aaaaa网站| 欧美在线视频一二三| 日韩美女福利视频| 深夜福利日韩在线看| 欧美激情精品久久久久久大尺度| 国产精品国产三级国产aⅴ9色| 国产精品成人av在线| 久久久久久久电影一区| 日本国产精品视频| 国产日韩欧美中文| 亚洲欧美另类在线观看| 91国偷自产一区二区三区的观看方式| 日韩av日韩在线观看| 亚洲精品午夜精品| 日韩美女写真福利在线观看| 日韩精品久久久久久久玫瑰园| 国产精品美女久久久久av超清| 国产精品久久久久久久久| 免费av在线一区| 欧美激情精品久久久久久| 中文字幕日韩欧美在线| 成人看片人aa| 中文综合在线观看| 国产欧美一区二区三区久久人妖| 亚洲成年人在线播放| 欧美男插女视频| www.欧美三级电影.com| 国产不卡视频在线| 91久热免费在线视频|