вы можете проверить ваш порт сообщений на события linkStatus на BrightScript и отразить его состояние в вашей сцене SG.
Вот пример:
Добавьте поле в scene.xml в качестве интерфейса состояния связи между brs и SG, например
<field id="offline" type="boolean" value="false" alwaysNotify="true" onChange="onOfflineChanged" />
Затем в main.brs создайте экземпляр roDeviceInfo (в случае, если его еще нет) и назначьте тот же порт сообщения, который вы уже используете:
m.deviceInfo = CreateObject("roDeviceInfo")
m.deviceInfo.setMessagePort(m.port)
Включить события статуса ссылки в вашем экземпляре roDeviceInfo
m.deviceInfo.EnableLinkStatusEvent(true)
чтобы иметь возможность получать roDeviceInfoEvent
события при ожидании новых сообщений от вашего roMessagePort.
Каждый раз, когда вы получаете сообщение от своего порта, проверяйте его тип и присваивайте новое значение linkStatus полю сцены, созданному на первом шаге
if msgType = "roDeviceInfoEvent" and msg.isStatusMessage() then scene.offline = not msg.getInfo().linkStatus
Обратный вызов должен быть объявлен в scene.brs file
function onOfflineChanged()
if(m.top.offline)
' your code here
end if
end function
и все.
Для дополнительной корректности вы должны проверить его статус, как только приложение будет запущено. Вы можете сделать это с
scene.offline = not m.deviceInfo.GetLinkStatus()
перед входом в цикл while (true).