扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
在本页阅读全文(共5页)
在这一讲中中,将讨论Symbian OS的通讯组件。必须强调的是,从一个游戏开发者的角度来看,通讯技术是非常重要的。 最后介绍如何接收补充的游戏数据。
串行通讯服务器
串行通讯服务器(C32)为它的客户端提供一个串行端口应用编程接口。这个服务器使用通讯服务器插入式模块(CSYs)处理实际的通讯协议。Symbian OS提供多个CSY模块,例如处理RS232和红外线串行通讯。应用程序开发者还可以使用串行协议模块应用编程接口来开发自定义CSY模块,自定义CSY模块定义在cs_port.h头文件中。// 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文件中声明:
|
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者