вы можете проверить свой порт сообщений на наличие событий 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.
function onOfflineChanged()
if(m.top.offline)
' your code here
end if
end function
вот и все.
Для большей корректности следует проверять его статус сразу после запуска приложения. Вы могли бы сделать это с
scene.offline = not m.deviceInfo.GetLinkStatus()
перед входом в цикл while (true).
person
Rúben Freitas
schedule
15.05.2019