当前位置: 首页 > article >正文

低代码平台开发串口调试助手

项目介绍

      串口调试助手是一款用于串口通信调试的工具,它可以帮助开发人员发送和接收串口数据,主要用于嵌入式开发、工业控制、物联网设备开发等领域。

主要功能包括:

  1. 数据收发:可以实时发送和接收串口数据,并显示在界面上。

  2. 数据可视化:支持以十六进制形式显示数据,方便调试。

  3. COM口管理:仅支持桌面端使用,轻松管理多个串口设备。

该工具以图形化界面呈现,操作简单,适用于需要进行串口通信测试和调试的场景。

平台支持
  • Windows

  • macOS

AiFlutter市场链接:串口调试助手

串口调试助手源码下载:源码下载

平台实现步骤

一、注册登录

打开 低代码平台登录网页 ,使用微信快捷登录或者扫描二维码登录。

二、创建项目

1. 点击【新增项目】>【手动添加】,在平台内部创建项目

2. 在跳出的弹窗中输入项目名称、项目描述,建议结合项目功能描述命名,便于检索

3. 输入完成后点击确定

三、页面设计

效果图

实现流程

1. 点击已经创建好的项目进入到操作界面,默认会存在一个HomePage页面,操作界面相关详情可查看教程 操作界面, 在【页面管理】中单击HomePage页面,在右侧的属性编辑器中配置页面描述和功能详情,内容如下

名称内容
页面描述

整个页面的布局可以是垂直分区的,上半部分是数据接收区,下半部分是数据发送区。

功能详情

1. 在页面初始化时,扫描串口设备,将得到的串口设备列表进行存储并渲染页面

2. 用户在下拉菜单中选择串口设备进行连接

3. 接收数据,连接成功后,会监听数据流并将收到的数据进行存储

4. 发送数据,用户在输入框中输入16进制数据后点击发送即可

5. 实时渲染,一旦有数据过来则进行一次页面构建,保证数据实时刷新

6. 支持设备插拔,设备插拔后依然能够识别到设备并进行连接,不需要重新启动程序

2. 在【页面管理】中单击HomePage页面,在右侧的属性编辑器中添加页面变量

需要定义的变量如下

变量名称变量类型是否为数组默认值变量描述
serialPortVar与串口设备通信的封装类对象
dataString发送串口数据的内容
resMap用来存储串口设备数据的载体
_dropDownValueStringCOM1COM口下拉框选中值
availablePortsString当前系统可用的COM口列表

操作成功如下

3. 添加页面初始化动作,在右侧的属性编辑器中点击【动作】> 【打开】

在操作流程编辑器中,页面初始化 事件下点击号添加事件,再点击号添加动作,动作按顺序依次添加如下

(1)动作类型 --【硬件动作】,硬件类型 --【串口】,操作类型 --【拔出监听】,添加customCode1自定义代码块并选择

(2)动作类型 --【自定义代码块】,添加自定义代码块customCode1并选择

customCode1内容如下

void function(){if(Platform.isAndroid){return;}// 桌面串口初始化availablePorts = SerialPort.availablePorts;print("availablePorts==== ${availablePorts}");if (availablePorts.isEmpty) {return;}_dropDownValue = availablePorts[0];setState(() {});
}

操作成功如下

4. 开启顶部导航栏

(1)点击页面编辑窗口右上角的【顶部导航栏】并开启,配置顶部导航栏背景色为 #FF006FFF

(2)从【小部件面板】> 【常用元素】中选择【文本小部件】拖入到顶部导航栏中间位置中,然后在右侧的属性编辑器中配置属性,属性信息如下:

属性名称属性内容
文本内容串口调试助手
文本颜色#FFFFFFFF
文本大小18

5. 页面内容设计

(1)从【小部件面板】> 【常用元素】中选择【容器小部件】拖入到页面编辑窗口内的上下布局中,然后在右侧的属性编辑器中配置属性,属性信息如下:

属性名称属性内容
无限大
700
背景颜色#00C8C8C8
内边距10

​​​​(2)从【小部件面板】> 【常用元素】中选择【上下布局小部件】拖入到页面编辑窗口内的【容器小部件】中

(3)从【小部件面板】> 【常用元素】中选择【左右布局小部件】拖入到【上下布局小部件】中

(4)从【小部件面板】> 【表单元素】中选择【下拉菜单小部件】拖入到【左右布局小部件】中,然后在右侧的属性编辑器中配置属性,属性信息如下:

属性名称属性内容
第一个选择框绑定变量_dropDownValue
第二个选择框绑定变量avaliablePorts

(5)从【小部件面板】> 【基本元素】中选择【条件生成器小部件】拖入到【左右布局小部件】中,然后在右侧的属性编辑器中选择变量serialPort

(6)当条件 serialPort == null,勾选展示此界面,从【小部件面板】> 【常用元素】中选择【按钮小部件】拖入到【条件生成小部件】中,然后在右侧的属性编辑器中配置属性,属性信息如下:

属性名称属性内容
50
40
背景颜色#FF006FFF

从【小部件面板】> 【常用元素】中选择【文本小部件】拖入到【按钮小部件】中,然后在右侧的属性编辑器中配置属性,属性信息如下:

属性名称属性内容
文本内容连接
字体颜色#FFFFFFFF

按钮动作面板中打开动作流程编辑器,单击 事件下点击号添加事件,再点击号添加动作,动作按顺序依次添加如下

  1. 动作类型 --【自定义代码块】,添加customCode3自定义代码块并选择

  2. 动作类型 --【硬件动作】,硬件类型 --【串口】,操作类型 --【接收数据】,添加customCode2自定义代码块并选择

customCode2内容如下

void function(param){// 数据接收 res.add({"type":  "接收","data":   param.join(),"time": DateFormat("HH:mm:ss").format(DateTime.now()),  });          setState(() {});
}

customCode3内容如下

void function(){try {serialPort?.close();serialPort = SerialPort(_dropDownValue);if (serialPort == null) {print("打开串口失败");EasyLoading.showError("打开串口失败");        return;}SerialPortConfig config = serialPort?.config ?? SerialPortConfig();config.baudRate = 115200; serialPort?.openReadWrite();serialPort?.config = config;print("打开串口成功");} catch (e) {print("打开串口失败");serialPort?.close();serialPort = null;EasyLoading.showError("检测到串口故障,错误:UnsupportedOperationError ${e.toString().substring(e.toString().length - 10)}");}setState(() {});
}

(7)当条件 serialPort != null,勾选展示此界面,从【小部件面板】-> 【常用元素】中选择【按钮小部件】拖入到左右布局小部件中,然后在右侧的属性编辑器中配置属性,属性信息如下:

属性名称属性内容
50
40
背景颜色#FFF44336

 从【小部件面板】-> 【常用元素】中选择【文本小部件】拖入到【按钮小部件】中,然后在右侧的属性编辑器中配置属性,属性信息如下:

属性名称属性内容
文本内容断开
字体颜色#FFFFFFFF

按钮动作面板中打开动作流程编辑器,单击 事件下点击号添加事件,再点击号添加动作,信息如下

  • 动作类型 --【自定义代码块】,添加customCode4自定义代码块并选择

customCode4代码内容如下

void function(){serialPort?.close();serialPort = null;setState(() {});
}

操作成功如下

(8)再次从【小部件面板】> 【常用元素】中选择【容器小部件】拖入到页面编辑窗口内的【上下布局】中,然后在右侧的属性编辑器中配置属性,属性信息如下:

属性名称属性内容
无限大
40
背景颜色#00C8C8C8

(9)从【小部件面板】> 【常用元素】中选择【文本小部件】拖入到【容器小部件】中,然后在右侧的属性编辑器中配置属性,属性信息如下:

属性名称属性内容
文本内容数据收发内容

(10)从【小部件面板】> 【基本元素】中选择【容器小部件】拖入到页面编辑窗口内的【上下布局】中,然后在右侧的属性编辑器中配置属性,属性信息如下:

属性名称属性内容
无限大
300
背景颜色#00C8C8C8

(11)从【小部件面板】> 【布局元素】中选择【列表布局小部件】拖入到【容器小部件】中,然后在右侧的属性编辑器中配置属性,属性信息如下:​​

属性名称属性内容
绑定变量res
无限大
无限大

(12)从【小部件面板】> 【常用元素】中选择【文本小部件】拖入到【列表布局小部件】中,然后在右侧的属性编辑器中配置属性,属性信息如下:

属性名称属性内容
文本内容${res[index]['time']}${res[index]['type']}: ${res[index]['data']}
最大行数3

操作成功如下

(13)从【小部件面板】> 【常用元素】中选择【容器小部件】拖入到【上下布局小部件】中,然后在右侧的属性编辑器中配置属性,属性信息如下:

属性名称属性内容
无限大
40
背景颜色#00C8C8C8

 从【小部件面板】> 【常用元素】中选择【文本小部件】拖入到【容器小部件】中,然后在右侧的属性编辑器中配置属性,属性信息如下:

属性名称属性内容
文本内容发送数据内容

(14)从【小部件面板】> 【常用元素】中选择【按钮小部件】拖入到【上下布局小部件】中,然后在右侧的属性编辑器中配置属性,属性信息如下:

属性名称属性内容
200
40
背景颜色#FF006FFF
圆角10

打开动作流程编辑器,单击 事件下点击号添加事件,再点击号添加动作,信息如下

  • 动作类型 --【自定义代码块】,添加customCode5自定义代码块并选择

customCode5内容如下

void function(){if (data.isEmpty) {EasyLoading.showError("请输入发送数据内容");return;}sendDataSerial(data);res.add({"data": data,"time": DateFormat("HH:mm:ss").format(DateTime.now()),"type": "发送",});setState(() {});
}

(15)从【小部件面板】> 【常用元素】中选择【文本小部件】拖入到【按钮小部件】中,然后在右侧的属性编辑器中配置属性,属性信息如下:

属性名称属性内容
文本内容发送数据
字体颜色#FFFFFFFF

操作成功如下

相关文章:

低代码平台开发串口调试助手

项目介绍 串口调试助手是一款用于串口通信调试的工具,它可以帮助开发人员发送和接收串口数据,主要用于嵌入式开发、工业控制、物联网设备开发等领域。 主要功能包括: 数据收发:可以实时发送和接收串口数据,并显示在界…...

怎么配置一个kubectl客户端访问多个k8s集群

怎么配置一个kubectl客户端访问多个k8s集群 为什么有的客户端用token也访问不了k8s集群,因为有的是把~/.kube/config文件,改为了~/.kube/.config文件,文件设置成隐藏文件了。 按照kubectl的寻找配置的逻辑,kubectl找不到要访问集群…...

C语言分支结构详解

一、引言 在 C 语言中,分支结构是程序控制流的重要组成部分。它允许程序根据不同的条件执行不同的代码块,从而实现更灵活和复杂的逻辑。分支结构使得程序能够根据输入、变量的值或其他条件来做出决策,决定程序的执行路径。 二、if 语句 基…...

Redisson实战:分布式系统中的五大典型应用场景

引言 在分布式系统架构中,数据一致性、高并发控制和资源协调是开发者面临的核心挑战。Redisson作为基于Redis的Java客户端,不仅提供了丰富的分布式对象和服务,还简化了分布式场景下的编程模型。本文将通过实际代码示例,解析Redis…...

12N60-ASEMI无人机专用功率器件12N60

编辑:LL 12N60-ASEMI无人机专用功率器件12N60 型号:12N60 品牌:ASEMI 封装:TO-220F 最大漏源电流:12A 漏源击穿电压:600V 批号:最新 RDS(ON)Max:0.68…...

长城智驾重复造轮子

左手新能源,右手智驾,这是长城当下最在意的两块业务。 从去年8月首款具备高阶智能驾驶功能SUV全新蓝山上市之后,长城在传播端的重点就是围绕智驾、无图方案打造智驾标签。 先是在广州国际车展上,整个展厅只展出全新蓝山&#xf…...

云原生之认识DDD

一、DDD是什么? 领域驱动设计(DDD) 做为一种软件工程的方法论,它可以帮助我们设计高质量的软件,或者说任何工程的设计都需要方法论,不论是城市设计、建筑设计、室内设计。 比如没有方法论的情况下楼是可以盖起来的,或许整个楼道和窗户上挂满了电话线、闭路线、电线?下水…...

continue插件实现IDEA接入本地离线部署的deepseek等大模型

文章目录 前言一、IDEA安装continue二、continue部署本地大模型三、continue聊天窗口使用deepseek R1四、continue批量接入硅基流动的模型API 前言 亲爱的家人们,创作很不容易,若对您有帮助的话,请点赞收藏加关注哦,您的关注是我…...

代码随想录算法训练营第一天:数组part1

今日学习的文章链接和视频链接 ● 自己看到题目的第一想法 ● 看完代码随想录之后的想法 ● 自己实现过程中遇到哪些困难 ● 今日收获,记录一下自己的学习时长 状态 思路理解完成 30% 代码debug完成 60% 代码模板总结并抽象出来 100% 题目 704 二分查找 题目链接…...

滚珠螺杆在数控机床中如何降低摩擦系数?

对数控机床这样要求加工精度高而且加工精度能保持长期稳定的设备来说是必须的,而且具有较低的传动阻力也同时为更高速的传动打下基础。使用滚珠螺杆,也是数控机床加工效率高的一个重要原因,为了减少数控机床的滚珠螺杆出现摩擦,可…...

【现代深度学习技术】循环神经网络05:循环神经网络的从零开始实现

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PyTorch深度学习 ⌋ ⌋ ⌋ 深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础上,结合当代大数据和大算力的发展而发展出来的。深度学习最重…...

Python实现技能记录系统

Python实现技能记录系统 来自网络,有改进。 技能记录系统界面如下: 具有保存图片和显示功能——允许用户选择图片保存,选择历史记录时若有图片可预览图片。 这个程序的数据保存在数据库skills2.db中,此数据库由用Python 自带的…...

前端基础之《Vue(10)—过滤器》

一、过滤器 1、作用 用于数据处理。 2、全局过滤器 使用Vue.filter(名称, val>{return newVal})定义。 在任何组件中都可以直接使用。 3、局部过滤器 使用选项,filters: {}定义,只能在当前组件中使用。 4、过滤器在Vue 3.0中已经淘汰了 5、过滤器…...

Linux常见指令介绍下(入门级)

1. head head就和他的名字一样,是显示一个文件头部的内容(会自动排序),默认是打印前10行。 语法:head [参数] [文件] 选项: -n [x] 显示前x行。 2. tail tail 命令从指定点开始将文件写到标准输出.使用t…...

VIC-3D非接触全场应变测量系统用于小尺寸测量之电子元器件篇—研索仪器DIC数字图像相关技术

在5G通信、新能源汽车电子、高密度集成电路快速迭代的今天,电子元件的尺寸及连接工艺已进入亚毫米级竞争阶段,这种小尺寸下的力学性能评估对测量方式的精度有更高的要求,但传统应变测量手段常因空间尺寸限制及分辨率不足难以捕捉真实形变场。…...

字典与集合——测试界的黑话宝典与BUG追捕术

主题:“字典是测试工程师的暗号手册,集合是BUG的照妖镜” 一、今日目标 ✅ 掌握字典的「键值对暗号体系」与集合的「去重妖法」✅ 开发《测试工程师黑话词典》,让新人秒变老司机✅ 统计自动化测试结果中的高频BUG类型(附赠甩锅指…...

下篇:深入剖析 BLE GATT / GAP / SMP 与应用层(约5000字)

引言 在 BLE 协议栈的最上层,GAP 定义设备角色与连接管理,GATT 构建服务与特征,SMP 负责安全保障,应用层则承载具体业务逻辑与 Profile。掌握这一层,可实现安全可靠的设备发现、配对、服务交互和定制化业务。本文将详解 GAP、GATT、SMP 三大模块,并通过示例、PlantUML 时…...

事务详细介绍

一、简介 1、什么是事务 事务是指一组操作,这些操作要么全部成功执行,要么全部不执行,保证数据的完整性和一致性。事务广泛应用于数据库管理系统、分布式系统和企业级应用中; 2、事务的特性 事务具有四个基本特性,…...

PostgreSQL 中的权限视图

PostgreSQL 中的权限视图 PostgreSQL 提供了多个系统视图来查询权限信息,虽然不像 Oracle 的 DBA_SYS_PRIVS 那样集中在一个视图中,但可以通过组合以下视图获取完整的系统权限信息。 一 主要权限相关视图 Oracle 视图PostgreSQL 对应视图描述DBA_SYS_…...

Python-36:饭馆菜品选择问题

问题描述 小C来到了一家饭馆,这里共有 nn 道菜,第 ii 道菜的价格为 a_i。其中一些菜中含有蘑菇,s_i 代表第 ii 道菜是否含有蘑菇。如果 s_i 1,那么第 ii 道菜含有蘑菇,否则没有。 小C希望点 kk 道菜,且希…...

27、Session有什么重⼤BUG?微软提出了什么⽅法加以解决?

Session的重大BUG 1、进程回收导致Session丢失 原理: IIS的进程回收机制会在系统繁忙、达到特定内存阈值等情况下,自动回收工作进程(w3wp.exe)。由于Session数据默认存储在进程内存中,进程回收时这些数据会被清除。 …...

图论---Bellman-Ford算法

适用场景:有边数限制 ->(有负环也就没影响了),存在负权边,O( n * m ); 有负权回路时有的点距离会是负无穷,因此最短路存在的话就说明没有负权回路。 从1号点经过不超过k条边到每个点的距离…...

复杂性决策-思维训练

思维训练 1.模式识别 观察、复杂、不确定、波动、模糊 –找出必要和非必要因素 –识别重大威胁和机遇 2.系统分析 为复杂情景构建系统心智模型 利用模型识别模式做出预测,指定有效策略 3.心智敏锐度 利用不同层次的分析探索挑战的能力,对其他利益相关方在…...

云智融合普惠大模型AI,政务服务重构数智化路径

2025年是“十四五”收官之年,数字政府和政务数智化作为“数字中国”建设的重点,已经取得了显著成效。根据《联合国电子政务调查报告2024》,我国电子政务发展指数全球排名第35位,与2022年相比提升8个名次;其中&#xff…...

反爬系列 IP 限制与频率封禁应对指南

在数据采集领域,IP 限制与频率封禁是反爬机制中最常见的防御手段。随着网站安全策略的升级,单靠传统爬虫技术已难以应对高强度的检测。本文将从反爬机制解析、实战应对策略两个维度,系统讲解如何突破 IP 限制与频率封禁。 一、反爬机制解析 …...

Redis Cluster 使用 CRC16 算法实现 Slot 槽位分片的核心细节

一、CRC16 算法作用原理 哈希计算流程‌ 对键值(Key)执行 ‌CRC16 算法‌,生成 16 位校验值(0~65535)。 将校验值 ‌对 16384 取模‌(公式:slot CRC16(key) % 16384),…...

Java基础集合 面试经典八股总结 [连载ing]

序言 八股,怎么说呢。我之前系统学习的内容,进行梳理。通过问题的方式,表达出得当的内容,这件事本身就很难。面试时心态、状态、掌握知识的情况等。关于八股文,我不想有太多死记硬背的内容,更多的是希望自我…...

如何将极狐GitLab 议题导出为 CSV?

极狐GitLab 是 GitLab 在中国的发行版,关于中文参考文档和资料有: 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 导出议题到 CSV (BASIC ALL) 您可以将问题从极狐GitLab 导出为 CSV 文件,这些文件将作为附件发送到您的默认通知…...

UE5 调整字体、界面大小

文章目录 方案一 5.4 版本及以上(推荐)方案二 5.3 版本及以下(推荐)方案三 使用插件(不推荐) 方案一 5.4 版本及以上(推荐) 进入 编辑 > 编辑器偏好设置,如下图所示&…...

Android Cordova 开发 - Cordova 快速入门(Cordova 环境配置、Cordova 第一个应用程序)

一、Cordova 1、Cordova 概述 Cordova 是使用 HTML,CSS 和 JavaScript 构建混合移动应用程序的平台 2、Cordova 特征 (1)命令行界面(Cordova CLI) 这是可用于启动项目,构建不同平台的进程,…...