芯逻辑:面向 HarmonyOS PC 的图形化编程工作台
欢迎加入开源鸿蒙 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. 安装与权限
- 在华为应用市场搜索「芯逻辑(based on MyOpenLab)」。
- 确认设备是鸿蒙电脑或二合一形态,不要按平板安装预期来用。
- 首次打开或保存工程时,系统文件选择器弹出,只授权你明确选中的那个文件或目录。
- 应用没有任何权限弹窗。
它不申请定位、通讯录、相机、麦克风、剪贴板、网络权限。文件读写全部走系统安全访问机制(DocumentViewPicker),拿到的是用户显式选择后的一次性 URI。最近项目列表记录的就是这些 URI,存在应用沙箱里;如果重启后授权已失效,会提示重新选择,而不是静默失败。
4. 基本使用路径
4.1 新建与放置元素
- 点「新建」,进入空白工作台,标题为「未命名.vlogic」。
- 中栏元素栏点分类下钻,例如「全部分类 / Numerik /」,再点
Constant (int)。 - 在画布点击放置。元素会按 10px 栅格吸附。
- 左栏元素列表出现编号条目,选中后在「属性」区修改
Value。 - 点「保存」,首次保存走系统文件选择器,输出
.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.0 未支持的元素,状态栏给出迁移报告:
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 |
| 微调 1px | Shift+↑ / ↓ / ← / → |
快捷键需要画布获得焦点才生效,鼠标点击画布任意位置即可。文件类操作(新建、打开、保存、另存为、校验、运行)目前走工具栏按钮,菜单快捷键是后续项,不应当成已完成能力来写。
7. 已知边界
- 没有真串口和 USB。1.0 不实现、也不申请相关权限,因为当前没有硬件可测。上游的
Interface/*(Firmata、RS232、Modbus、Raspberry)和MCU/*元素打开后是只读占位。真实硬件接入排在 V2,走系统串口 API。 - 未支持元素只读。V1 元素清单是 35 个,超出清单的元素显示为占位节点,可以看、可以保存,但不能编辑其内部行为。这是设计取舍,不是加载失败。
- 没有网络能力。不申请 INTERNET 权限,因此没有云同步、在线元素仓库、在线更新和 AI 功能。
- 仅适配 2in1。
deviceTypes只声明2in1,原生库只构建arm64-v8a。手机和平板不在 1.0 范围。 - 没有做文件双击关联。
.vlogic双击后不会自动用芯逻辑打开,需要从应用内「打开」选择文件。 - 快捷键只覆盖画布编辑。见第 6 节。
8. 结语
芯逻辑的 1.0 目标很窄:让既有的 .vlogic 工程在鸿蒙电脑上能打开、能改、能跑仿真,保存后文件不丢一个字节。如果你的工作流是「工程文件在自己手里,用键盘和鼠标在桌面上搭电路、点运行、看面板」,它就是按这个路径设计的。
应用市场名称:芯逻辑(based on MyOpenLab)。包名:com.von.myopenlab。开源仓库:https://gitcode.com/OpenHarmonyPCDeveloper/ohos_myopenlab。
更多推荐



所有评论(0)