欢迎加入开源鸿蒙 PC 社区:
https://harmonypc.csdn.net

欢迎在 PC 社区平台申请新建项目:
https://atomgit.com/OpenHarmonyPCDeveloper

摘要

芯逻辑(XinLogic)是开源图形化编程环境 MyOpenLab 的 HarmonyOS PC / 2in1 适配版,1.0.0 已完成鸿蒙 PC 真机终验收与发布构建,首次送审按审核意见修复后重新出包,等待再次提交。它不把 Swing 程序封装成鸿蒙应用,也不引入 Java 运行时,而是用 C++ 重写 .vlogic 编解码与仿真核心,再用 ArkUI 复刻原版工作台布局。1.0 不申请 ohos.permission.INTERNET,不要求登录,不上传工程。本文说明它的产品边界、核心能力,以及在鸿蒙电脑上的实际用法。

在这里插入图片描述

1. 为什么先做鸿蒙电脑

上游 MyOpenLab 是事件驱动的图形化编程环境,广泛用于树莓派、Arduino 的工控与教学程序,积累了大量 .vlogic 工程。这些工程原本只能在桌面 Java 环境里打开。鸿蒙电脑上真正缺的是:

  • 键鼠、多窗口、右键菜单,而不是触屏优先的交互
  • 直接打开本地 .vlogic 文件,而不是先导入到某个云端仓库
  • 既有工程的可用性:旧版本文件能打开、能编辑、保存后不丢数据
  • 离线仿真:不联网也能跑通电路逻辑
  • 崩溃恢复和未保存保护,而不是静默丢失

芯逻辑把这些作为 1.0 范围。平板、手机、云同步、在线元素仓库、AI 辅助明确不做。也不把「鸿蒙第一个图形化编程 IDE」当作宣传点,因为这个结论没有完整市场清查支撑。

2. 产品形态

项目1.0 选择
平台仅 HarmonyOS PC / 2in1
包名com.von.myopenlab
应用市场名称芯逻辑(based on MyOpenLab)
上游MyOpenLab 3.12.7(GPLv3,快照 57d08b32)
存储模型本地 .vlogic 文件,用户选择位置
网络不申请 INTERNET
权限不申请任何敏感权限
运行核心C++ 便携核心 libmyopenlab.so(N-API 桥接)+ ArkUI 外壳
文件格式.vlogic 自定义二进制容器,格式版本 1.982–3.90
内置元素35 个

它不是把上游 Swing/AWT 代码打包装进鸿蒙容器。工程里没有任何 Java 运行时、没有动态类加载、没有脚本执行。.vlogic 的解析与序列化、元素注册表、编辑操作、仿真引擎全部在 C++ 侧实现,ArkTS 只负责界面和文件选择器。

界面布局按原版复刻作为硬约束:顶部工具栏、左栏元素列表与属性编辑器、中部元素栏与双画布、右栏信息与校验、控制台浮层、状态栏。原版没有的功能不加,比如画布缩放和元素栏搜索。

3. 安装与权限

  1. 在华为应用市场搜索「芯逻辑(based on MyOpenLab)」。
  2. 确认设备是鸿蒙电脑或二合一形态,不要按平板安装预期来用。
  3. 首次打开或保存工程时,系统文件选择器弹出,只授权你明确选中的那个文件或目录。
  4. 应用没有任何权限弹窗。

它不申请定位、通讯录、相机、麦克风、剪贴板、网络权限。文件读写全部走系统安全访问机制(DocumentViewPicker),拿到的是用户显式选择后的一次性 URI。最近项目列表记录的就是这些 URI,存在应用沙箱里;如果重启后授权已失效,会提示重新选择,而不是静默失败。

4. 基本使用路径

4.1 新建与放置元素
  1. 点「新建」,进入空白工作台,标题为「未命名.vlogic」。
  2. 中栏元素栏点分类下钻,例如「全部分类 / Numerik /」,再点 Constant (int)。
  3. 在画布点击放置。元素会按 10px 栅格吸附。
  4. 左栏元素列表出现编号条目,选中后在「属性」区修改 Value。
  5. 点「保存」,首次保存走系统文件选择器,输出 .vlogic。

元素栏覆盖 35 种内置元素,合计 11 个分类(Numerik、Numerisch、Boolean、Abfragen、CounterTimer、String、Node、Verteiler、Input、Output、Dekoratoren)。元素栏跟随当前 Tab 过滤:Circuit 下是 10 个分类的逻辑侧元素,Frontpanel 下只有 Boolean、Dekoratoren、Input、Numerisch、Output 5 个分类的面板元素。

元素清单不是凭感觉挑的,是按上游官方示例的使用频率定的:统计 Examples/ 子树共引用 301 个不同元素目录,官方示例里 IntConst、Addierer、LED、Button、Anzeige 出现频率最高。原定 16 个基础元素不足以打开任何一个官方示例而不出现只读占位,因此清单扩到 35 个。

这里有个不太显眼但会影响浏览体验的细节:注册表实际有 42 个目录键,比 35 多出来的部分是上游的历史别名路径——同一个元素在旧版本里登记在不同目录下,比如 LED 同时存在于 FrontElements/2Boolean/LED 和 FrontElements/Output/LED,显示名都是 LED Red。旧工程用哪个路径存的,就得按哪个路径读回来,所以两个键都要注册。代价是元素栏里会出现同名条目,放置后的行为完全一致。

在这里插入图片描述

4.2 打开既有工程
  1. 点「打开」→「从文件选择…」,或从下拉里选最近项目。
  2. 解析成功后自动执行一次校验,右栏列出结果。
  3. 如果工程里含有 1.0 未支持的元素,状态栏给出迁移报告:4 个元素未支持(只读保留,可保存不丢失)。
  4. 「另存为」不会覆盖原文件。

这里有一条硬要求:未支持的元素必须原样写回。实现上是把这些元素的原字节连同记录一起保留,不做结构重建。验证方式是拿 595 个样本(20 个自建 fixture + 575 个上游参考工程,覆盖格式版本 1.982–3.90)做解析后重新序列化,逐字节比对,595/595 完全一致。真机上打开一份 1.982 格式的旧工程,另存为覆盖后与原文件逐字节相同——包括那 4 个未注册元素的原始记录。

在这里插入图片描述

4.3 双画布

原版的 Circuit 和 Frontpanel 是两个联动视图,芯逻辑用 Tab 切换:

Tab内容
Circuit逻辑电路:常量、运算、比较、逻辑门、定时、分发、连线
Frontpanel面板:LED、数值显示、按钮、拨动开关、滑块、文本输入、标签

两个 Tab 编辑的是同一份文档。放置双面元素(比如 LED)时,Circuit 侧出现逻辑元素,Frontpanel 侧自动生成配对的面板元素,两侧通过 circuitElementID / panelElementID 单向指向建立关联。删除其中一侧会解除配对引用并清理该元素上的连线,另一侧保留为独立元素,不会留下指向已删元素的悬空引用。

在这里插入图片描述

5. 功能怎么用

连线
  • 从输出引脚拖到输入引脚,拖动过程中只允许合法落点
  • 校验三件事:数据类型匹配、方向正确、目标引脚未被占用
  • 引脚按数据类型着色,连线用统一深灰,选中后变红;端点跟随元素位置动态重绘
  • 右键连线可删除
属性编辑
  • 单选:左栏「属性」区直接改,数值型有上下界校验,越界输入被拦截
  • 多选:框选多个元素后只显示共同可编辑属性,混合值有专门显示,布尔属性支持批量切换
  • 「项目属性」改标题和 Circuit / Front 画布尺寸,「变量」管理工程级变量
仿真运行

工具栏提供四态控制:运行、暂停、继续、停止。

  • 运行中 LED 按状态点亮,数值和文本显示实时刷新
  • 面板上的按钮、拨动开关、滑块、文本输入可以直接交互,值注入后立即驱动电路
  • 暂停后画布仍可交互,「继续」从断点恢复,不是重新开始
  • 放置元素和删除元素会先停止运行,避免运行中改动电路造成状态错乱
  • 运行中复制、粘贴、微调被禁用,需要先停止

仿真引擎是事件驱动的:导线队列加时钟推进,带类型推导。有一条安全线是事件风暴保护——如果工程里存在没有延迟的反馈回路,事件会在几毫秒内积压到二十万条,引擎直接拦截、停止并提示,而不是把界面拖死。

诊断
  • 「校验」检查连线端点是否指向存在的元素、引脚序号是否越界、方向是否为输出到输入、元素 ID 是否重复,结果分 error / warning / info 三级并带元素编号
  • 「控制台」显示运行日志,点「导出日志」写到你选择的位置,含工程统计与运行记录
可靠性
  • 编辑停止 2 秒后自动写恢复副本(.vlogic 字节 + 元数据),存在应用沙箱
  • 异常退出后下次启动出现恢复横幅,可选择「恢复」或「忽略」
  • 保存成功后自动清理恢复副本
  • 撤销 / 重做覆盖放置、移动、删除、连线、属性修改、粘贴
  • 复制粘贴保留内部连线和双面配对关系,名称自动重编号
  • 窄窗口自动收起侧栏,保留画布与运行控制

在这里插入图片描述

6. 快捷键

命令默认
撤销Ctrl+Z
重做Ctrl+Y
复制Ctrl+C
粘贴Ctrl+V
全选Ctrl+A
删除选中Delete
取消放置Esc
微调 1pxShift+↑ / ↓ / ← / →

快捷键需要画布获得焦点才生效,鼠标点击画布任意位置即可。文件类操作(新建、打开、保存、另存为、校验、运行)目前走工具栏按钮,菜单快捷键是后续项,不应当成已完成能力来写。

7. 已知边界

  1. 没有真串口和 USB。1.0 不实现、也不申请相关权限,因为当前没有硬件可测。上游的 Interface/*(Firmata、RS232、Modbus、Raspberry)和 MCU/* 元素打开后是只读占位。真实硬件接入排在 V2,走系统串口 API。
  2. 未支持元素只读。V1 元素清单是 35 个,超出清单的元素显示为占位节点,可以看、可以保存,但不能编辑其内部行为。这是设计取舍,不是加载失败。
  3. 没有网络能力。不申请 INTERNET 权限,因此没有云同步、在线元素仓库、在线更新和 AI 功能。
  4. 仅适配 2in1。deviceTypes 只声明 2in1,原生库只构建 arm64-v8a。手机和平板不在 1.0 范围。
  5. 没有做文件双击关联。.vlogic 双击后不会自动用芯逻辑打开,需要从应用内「打开」选择文件。
  6. 快捷键只覆盖画布编辑。见第 6 节。

8. 结语

芯逻辑的 1.0 目标很窄:让既有的 .vlogic 工程在鸿蒙电脑上能打开、能改、能跑仿真,保存后文件不丢一个字节。如果你的工作流是「工程文件在自己手里,用键盘和鼠标在桌面上搭电路、点运行、看面板」,它就是按这个路径设计的。

应用市场名称:芯逻辑(based on MyOpenLab)。包名:com.von.myopenlab。开源仓库:https://gitcode.com/OpenHarmonyPCDeveloper/ohos_myopenlab。

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐