1.JB发送: TvManager.getInstance().setTvosCommonCommand("字符串"); 2.SN接收: U16* MSrv_Control_common::SetTvosCommonCommand(c**t char* pCharCommand, int* u8length) 3.SN->JB: BOOL MSrv_Control_common::SetTvosInterfaceCMD(c**t char* pCharCommand) 果SUPERNOVA需要向UI请求显示一些信息,需要通过发消息的形式,举例说明:
有信号到无信号时候,显示NOSIGNAL过程,如下:
在函数Msrv_Control_TV:noSignalCheck_Handle中,检测到无信号的时候,会执行语句
Postenvt(0,EV_SIGNAL_UNLOCK,0),此消息UI会接受到而显示出无信号的菜单,我们对此只需要结果,中间怎么发消息,UI层为什么能得到消息,我们不用关心。
Supernova与UI层的连接我们只关心结果,如何实现的我们不用知道,既中间层,MSTAR也做了打包处理,这样我们就无法连接不在SERVER定义的函数,如果UI层需要调用中间层没有定义的函数,我们可以通过万能接口通过传递字符串的形式来实现,举例如下:
UI层调用语句:
try{
sourcestatus = TvManager.setTvosCommonCommand("SetAutoSleepOffStatus");字符串可以任意填写
}
catch (TvCommonException e) {
e.printStackTrace();
}
字符串可以任意填写,这样SUPERNOVA里面定义的函数
MSrv_Control_DVB:setTvosCommonCommand就会响应,程序如下填写:
MSrv_Control_common.cpp
U16* MSrv_Control_common::SetTvosCommonCommand(c**t char* pCharCommand, int* u8length)
#define TVOS_COMMON_CMD_SET_AUTOSLEEP0FF_STATUS "SetAutoSleepOffStatus"
Else if((pCharCommand) && (strncmp(pCharCommand, TVOS_COMMON_CMD_SET_AUTOSLEEP0FF_STATUS, strlen(pCharCommand)) == 0))
{ 写入要执行SUPERNOVA里面的任意函数都可以调用了
}
注意字符串,两边要保持一致。
|