{"version":"0.1.0","code":"0000","result":true,"message":"处理成功","errdetail":"","timestamp":1671508995750,"data":{"id":71713981,"title":"17.5.1 通道代理","slug":"feprm9","format":"lake","bookId":26046811,"body":null,"body_draft":null,"body_html":"

数据流示意图

说明:BL提供了两种通道模式,上文已经介绍过内置通道,本文主要介绍通道代理模式的实现和对接。

出于安全性考虑,部分项目希望由上层自行管理设备间的消息通信,因此可以使用多屏提供的通道代理能力完成AutoSDK多屏消息的输入输出。

时序图

通道管理



应用实例:一致性概述

核心接口

int32_t com.autonavi.gbl.consis.model.ChannelService.init(ChannelInitParam initParam)

int com.autonavi.gbl.consis.model.ChannelService.addChannelProxy(IChannelProxyAdapter proxy)

int com.autonavi.gbl.consis.model.ChannelService.removeChannelProxy(IChannelProxyAdapter proxy)

int com.autonavi.gbl.consis.observer.IChannelProxyAdapter.writeData(byte[] data)

int com.autonavi.gbl.consis.model.ChannelService.HandleMessage(byte[] data, IChannelProxyAdapter proxy)


     说明:函数详情,请复制函数名称到在线API搜索

调用示例

/*< 获取通道服务实例 */\nChannelService mChannelService = (ChannelService)ServiceMgr.getServiceMgrInstance().getBLService(SingleServiceID.ChannelServiceID);\nif (mChannelService == null) {\n    return false;\n}\n\n/*< 从配置文件等获取当前进程的主副屏属性 */\nboolean isMaster = getConfig("isMasterDisplay");\n\nChannelInitParam initParam = new ChannelInitParam();\ninitParam.isMaster = isMaster;\ninitParam.useInnerChannel = false;\n...//initParam其他参数配置\nmChannelService.init(initParam);\n\nif (isMaster)\n{\n\t/*< 创建主屏通道代理 */\n    IChannelProxyAdapter proxyMain = new IChannelProxyAdapter();\n    ...\n\n    mChannelService.addChannelProxy(proxyMain);\n}\nelse\n{\n\t/*< 创建副屏通道代理 */\n    IChannelProxyAdapter proxy = new IChannelProxyAdapter();\n    \n\t/*< HMI在副屏自建通道连接到主屏 */\n    ...\n\n\t/*< 添加通道到副屏 */\n    mChannelService.appendChannelTransProxy(proxy);\n}
","body_lake":null,"pub_level":null,"status":"0","updated_at":"2022-08-08 02:32:06","deleted_at":null,"nameSpace":"mnlcaa/v610","browseCount":70,"collectCount":0,"estimateDate":4,"docStatus":0,"permissions":true,"overView":false}}