news 2026/10/6 8:05:01

『ISOBUS 入门』第 12 节 虚拟终端 VT:对象池、消息流与交互实现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
『ISOBUS 入门』第 12 节 虚拟终端 VT:对象池、消息流与交互实现

农具不带屏幕之后,界面的所有权发生了转移:农具负责描述「界面上有什么」,终端负责把它渲染出来并把操作者的动作回传。这条路走通了,一台拖拉机才能用一个终端操作不同品牌的农具。

1. 会话是怎么建立起来的

一次完整的会话可以拆成六步,每一步都有对应的消息:

  1. 建立工作集。农具 ECU 先声明自己是某个工作集的成员,并携带自己的 NAME。终端据此建立工作集,后续的对象池都从属于这个工作集。
  2. 查询终端能力。农具需要知道终端能做什么,才能决定上传什么样的界面。查询内容包括:终端版本、可用内存、软键数量、硬件配置、支持的对象类型、支持的语言与字体。
  3. 上传对象池。农具把界面描述分片发给终端。对象池是可变长度数据,超过 8 字节的部分走传输协议,每帧携带 7 字节有效载荷。
  4. 结束上传并等待确认。农具发送「对象池结束」消息,终端回一条响应,其中包含成功或错误信息。这一步是分水岭:只有收到成功的响应,后续的掩膜激活才有意义。
  5. 激活显示。农具选择活动工作集,再指定当前显示的数据掩膜;终端开始渲染。
  6. 运行期交互。数值更新、掩膜切换、软键事件、输入事件在两端之间往返;同时双方用「工作集维护」与「终端状态」消息保活。
    这套顺序解释了几类现场现象的成因。上传后屏幕空白,多数出现在第 4 步的错误响应被忽略、或者第 5 步没有执行;显示了一部分对象,通常是第 2 步的探测没做,上传了终端不支持的对象类型;运行一段时间后自动回到终端主界面,则是第 6 步的保活中断,终端按超时清掉了工作集。

2. 对象池的结构

对象池是一棵有父子的对象树,根是工作集,下面挂掩膜,掩膜下面挂容器与具体控件。写实现时最常用到的对象可以分成五类:

容器与掩膜。工作集(Working Set)代表一个农具应用;数据掩膜(Data Mask)是主显示页面;软键掩膜(Soft Key Mask)定义一排可编程按键;告警掩膜(Alarm Mask)用于高优先级提示。软键掩膜与数据掩膜是分开的,切换数据掩膜时可以不改软键掩膜,也可以成对切换——后者是实践中更常见的做法,因为软键语义通常跟随页面。

输出对象。数值、字符串、线、矩形、椭圆、多边形等,负责显示状态。它们不响应输入,只被更新。

输入对象。数值输入、字符串输入、列表选择等,负责采集操作者输入。输入对象的焦点由会话控制:可以让某个对象直接进入编辑状

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/6 8:04:42

Codex 自定义 API 配置不生效?很多人把 model_provider 写错位置了

你明明已经在项目中添加了 .codex/config.toml,也写好了 model_provider、base_url 和模型名,但 Codex 启动后仍然连接原来的服务,甚至继续报 401、404 或 model not found。 这种情况不一定是 API Key 或中转线路出了问题。一个很容易忽略的…

作者头像 李华
网站建设 2026/10/6 8:01:55

【毕业设计】智能儿童书桌控制系统的设计与实现

❤小编介绍:小编所在团队为图灵学术中心,我们专注于Java领域,提供程序设计开发、源码分享、技术指导及定制服务。凭借丰富经验和专业团队,满足客户多样化需求。从精准选题到顺利毕业,我们致力于助力大家的技术成长&…

作者头像 李华
网站建设 2026/10/6 8:00:34

LeetCode 1576: 替换所有的问号(模拟) —— 题解

👋 欢迎阅读 🎯 欢迎来到「替换所有的问号」题解之旅! 本文将带你从"给问号填上不撞邻居的字母"这一直观场景出发,深入理解贪心 边界防护的巧妙运用,并掌握如何逐个问号试填 26 个字母来构造出合法的最终字…

作者头像 李华
网站建设 2026/10/6 7:59:17

飞控linux系统环境配置

1、CMake 安装(1)方法1:apt 安装(最简单,推荐日常使用)sudo apt update sudo apt install -y cmake cmake --version缺点:Ubuntu 20.04 源里的 CMake 版本较旧(约 3.16)&…

作者头像 李华