C
监控:验证渲染输出
Monitor 示例演示了您可以从外部 Monitor 进程验证 指示器 示例应用程序的渲染输出。对于指示器中每个安全关键型 QML 类型,Monitor 会从布局文件中读取预期的 CRC (循环冗余校验) 值,并将其与实际的 CRC 值进行比较。您可以在 Qt Creator 的 应用程序输出 面板中查看验证状态。
您可以在主机环境和目标平台上运行 Monitor 示例。此外,输出验证支持在 OpenWFD 平台适配 中。
以下时序图显示了 Monitor、指示器和 OpenWFD 之间的通信。当您启动 Monitor 时,它通过 TCP/IP 套接字连接到指示器进程。TCP/IP 实现使用 POSIX API。大多数操作系统提供 POSIX,但在 Windows 中,您必须使用 Cygwin 或 WindowsSubsystem for Linux (WSL) 等。
在指示器中启用输出验证
在您可以使用 Monitor 之前,您需要在指示器示例中启用输出验证功能。将以下定义添加到 Indicators.pro 文件:
DEFINES += USE_OUTPUTVERIFIER
在修改项目文件后,选择 构建 > 运行 构建 и 运行 Indicators。有关构建示例的详细说明,请参阅 构建 Qt 安全渲染器 中的主题。
通常,Monitor 可以验证已启用输出验证功能的任何 Qt 安全渲染器应用程序的渲染输出。有关更多信息,请参阅 使用 OutputVerifier 类。
运行 Monitor 示例
要构建 и 运行 Monitor,请选择 构建 > 运行。您可以在 构建 Qt 安全渲染器 中的主题下找到构建示例的详细说明。您还可以使用 make 工具从命令行构建 Monitor 示例。以下是如何使用 Indicators 控制器构建 Monitor 的示例:
make -f Makefile_gcc qsrMonitor-indicators
您可以从命令行通过运行 qsrMonitor-indicators 二进制文件来启动 Monitor。您可以使用以下命令行选项:
选项 | 描述 |
---|---|
-i | Qt安全渲染器进程 |
-p | 端口号。 |
在桌面应用程序中,默认端口是 32112。在 QNX 中,您需要运行 消息代理 示例。消息代理监听 32123 端口并将事件转发到 Qt 安全渲染器进程。
您可以通过将其他应用程序窗口移至指示器示例及其安全关键型UI元素顶部来测试输出验证。当渲染失败或成功时,相应的验证状态将出现在 Qt Creator 的应用程序输出面板中。
修改 Monitor 示例
您可以修改控制器功能。示例控制器按照预定义的顺序更改 UI 状态。在实际应用中,您必须根据系统状态(例如从 canbus 触发)更改 Qt 安全渲染器状态。
控制结构有两种示例。有关更多信息,请参阅文件 demostates.c 和 indicators.c。
默认的错误处理将错误打印到标准输出。可以通过实现回调函数来更改默认错误处理逻辑。请参阅 monitorLoop
函数中的示例实现。
要更改连接方法(例如,从TCP/IP更改为SPI(串行外设接口)或CAN(控制器局域网)总线),您需要实现 connection_stub.c 并创建一个代理,该代理从接口接收数据,并使用特定平台的消息队列将事件发送到Qt安全渲染器进程。
示例文件
文件
- saferenderer/monitor/inc/connection.h
- saferenderer/monitor/inc/controller.h
- saferenderer/monitor/inc/endian.h
- saferenderer/monitor/inc/errorcode.h
- saferenderer/monitor/inc/eventProcessor.h
- saferenderer/monitor/inc/itemstatedata.h
- saferenderer/monitor/inc/message.h
- saferenderer/monitor/inc/qsafechecksum.h
- saferenderer/monitor/inc/qsafeglobal.h
- saferenderer/monitor/monitor.pro
在某些Qt许可证下提供。
了解更多信息。