0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

开源串口图形界面工具的特点和使用

Q4MP_gh_c472c21 来源:21ic 作者:dukedz 2021-03-17 10:08 次阅读

先列举这个工具的一个特点:

某个主控板正在控制从机的时候,可以把 PC 电脑挂到同一条 RS485 总线上,PC 可以读写从机、查看从机打印消息、查看数据波形,完全不干扰现有主板对从机的控制。

跨平台,支持 Linux、Windows、MacOS、树莓派 ……

mcu 代码及协议参考这个开源步进电机驱动器

此工具代码架构是 python + web,python 和每个 web 页面通过单个 websocket 管道通讯。

web 端是裸 javascript (vanilla, es6), 不需要瞭解特定的前端框架,就可以参与代码修改。也方便拿此 app 当模板做一些产品的专用上位机软件。

mcu 和 python 之间是 cdnet 协议,目前只用到 level 1 格式的最简版本。

python 和 web 之间的协议也是类似 cdnet,地址和端口用任意字符串代替。

运行 python 程序后,首先打开主页:

Available 列出电脑所有串口,只要粘贴其中任意一小段字符串,填到 Serial 第一个输入框就可以了,这样的好处是,如果端口变化,依然可以打开正确的串口。或者是选择插在指定 USB 口的串口。

使用过程中,串口掉线会自动重连接,右边是 python 后台打印:插拔之后又成功重接。

Devices 主要是选择调试哪一个从机,支持同时调试多个设备,数量不限。

Logs 是所有设备的打印汇总,每个设备各自的页面只打印各自的调试信息

打印支持彩色 (ANSI), 和 Linux 下的终端一样,方便在很多 log 中快速定位错误。

Logs 窗口可以随意调整大小。

编辑的数据都会自动保存。

下面是具体打开一个设备的调试窗口,首先是数据列表读写(俗称寄存器):

鼠标放到寄存器名称和数据上,会分别提示寄存器说明,和默认数据(默认数据也是从设备中读取)。

寄存器的读写是按组进行,可以保证一组数据的原子性。

组可以随便编辑。

点某一组的 R 会读该组所有数据,W 则是写一组数据。点最上面的 Read All 和 Write All 则是依次读写每一组。

列表是由不同设备的 json 文件配置,其中寄存器列表是设备上电自动打印出来的,拷贝粘贴到 json 模板中即可。

支持数组和多种数据格式,可以设置是否以 16 进制显示(数据框带 H 标记),或者是 uint8_t 数组(带 B 标记)。

同一个组内部,有一些带一个小凹槽,表示两个寄存器之间有空洞。首次写入前会回读该组数据,避免修改空洞中的数据,空洞可能是空的,也可能是厂商 reserved 寄存器。

这是设备页面的 Log 调试,同样可以随便改变大小:

再下面是波形窗口,也支持选择大小。

波形窗口:

每个窗口下面会提示当前选中数据的值,方便且准确。

可以随便打开、关闭某一条曲线,曲线多的时候不容易乱,图中 tc_speed 是关闭状态,但依然会显示数值。

鼠标滚轮可以配合 shift 或者 ctrl 分别对 x 和 y 轴进行缩放,默认是两个轴一起缩放。

支持触摸屏缩放,同样支持 x 和 y 轴不同比例的缩放。

双击恢复默认示图(最大化显示所有数据)。鼠标中键可拖拽平移(触摸板也可以)。

可以设置数据深度,老数据自动删除。方便动态显示数据(示波器效果)。

波形窗口的个数不限。

上圖下面部分是 IAP 和 寄存器 数据导出和导入:

IAP 支持整体回读验证、设备端计算并返回 crc 进行验证、不验证。

寄存器格式改变后,可以通过导出和导入进行迁移。

會一并导出 log、波形数据,譬如你是做电机控制的,可以让客户把他采集到的波形发给你分析,以此远程协助客户调 PID 等参数

最后是 json 配置,最上面的 reg 是设备上电打印出来的(mcu 端也是自动生成,不用自己填地址、大小和数据类型,不容易出错):

为了方便阅读,有 16 进制数和注释,所以使用的是 json5 格式。

fmt 字符带 [] 的是数组,在一个编辑框显示所有数据。

带 {} 的也是数组,每组占用一个编辑框,每个框内支持多个数据,方便用于结构体数组。

reg_r 和 reg_w 是默认的寄存器分组读写,写不写无所谓,可以在 UI 上编辑。

plot 的数据的 fmt 比较关键,对应两种数据包格式,x1 a1 b1 a2 b2 。。. 和 x1 a1 b1 x2 a2 b2 。。.

前者是每个包的多组数据之间共享一个 x 轴数据,fmt 首个字符 I 是 x 的格式,表示 uint32_t, 一般是 mcu 里面一个 cnt, 每个 loop 加 1,loop 周期固定,I 后面的数代表 x1 和 x2 之间的差值,从而恢复出 x2 x3 。。.

I 后面没有数字的是后者,一个包里面的每一组数据都有一个 x 值,适合 loop 周期变化的场景。

硬件层面普通串口也支持的。

沒有硬件也可以打开上面的所有界面预览,没数据而已(可以導入別人導出的數據)。

用 CDBUS 专用控制器速度更快更方便,带仲裁等特性,兼容传统 RS485,速度最快可以到 50 Mbps,控制器也是 100% 开源:

https://github.com/dukelec/cdbus_ip 此工具默認使用的 USB 轉 RS485 的硬件也是开源的:https://github.com/dukelec/cdbus_bridge

最后提一下 CDCAM 开源RS485 摄像头,此工具支持图像预览。

CDCAM 开源地址:https://github.com/dukelec/cdcam 受限 STM32G071CBT6 的性能,800x600 大小的图片目前是 10 fps,可以发指令触发拍照。 一条 RS485 可以挂多个摄像头、电机,非常方便。

又譬如:传统需要变焦的场合,直接用 2 个不同焦距的定焦摄像头就好了,反正成本便宜。也不增加接线。 非常适合机器视觉的场合。

再顺便补充一下,cdnet ip 是参考 ipv6 的概念,方便通过字符串来代表不同的地址(为了效率,mcu 用 3 字节 uint8_t 数组),其定义如下:

/* CDNET address format:** local link unique local multicast* level0: 00MM* level1: 80MM a0MM f0ML* `-with seq: 88MM a8MM f8ML* level2: c0MM* `-with seq: c8MM** Notes:* NN: net_id, MM: mac_addr, MH+ML: multicast_id*/

广播和组播也可以用 local link 格式,一般没有必要用 multicast 格式。一般用 80 开头的就够了,00 开头的主要是为了人肉敲命令裸数据调试的时候可以少一两个字符而已,机器就不建议用了。

unique local 是跨网段的时候才用,譬如有多个网段,每个子网有多个设备。level2 是用来传输框架外的任意数据,一般用来多台电脑之间传输真正的 tcp/ip 协议,组电脑网络。

cdnet ip 地址可直接映像为标准的 ipv6 地址,这样电脑上可以通过标准 udp 编程和 mcu 互动,mcu 代码不用变,开销非常小,不用跑 ipv6 协议栈。

原文标题:开源串口图形界面工具:超方便,附代码

文章出处:【微信公众号:嵌入式ARM】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

先列举这个工具的一个特点:

某个主控板正在控制从机的时候,可以把 PC 电脑挂到同一条 RS485 总线上,PC 可以读写从机、查看从机打印消息、查看数据波形,完全不干扰现有主板对从机的控制。

跨平台,支持 Linux、Windows、MacOS、树莓派 ……

mcu 代码及协议参考这个开源步进电机驱动器:

此工具代码架构是 python + web,python 和每个 web 页面通过单个 websocket 管道通讯。

web 端是裸 javascript (vanilla, es6), 不需要瞭解特定的前端框架,就可以参与代码修改。也方便拿此 app 当模板做一些产品的专用上位机软件。

mcu 和 python 之间是 cdnet 协议,目前只用到 level 1 格式的最简版本。

python 和 web 之间的协议也是类似 cdnet,地址和端口用任意字符串代替。

运行 python 程序后,首先打开主页: Available 列出电脑所有串口,只要粘贴其中任意一小段字符串,填到 Serial 第一个输入框就可以了,这样的好处是,如果端口变化,依然可以打开正确的串口。或者是选择插在指定 USB 口的串口。

使用过程中,串口掉线会自动重连接,右边是 python 后台打印:插拔之后又成功重接。

Devices 主要是选择调试哪一个从机,支持同时调试多个设备,数量不限。

Logs 是所有设备的打印汇总,每个设备各自的页面只打印各自的调试信息。

打印支持彩色 (ANSI), 和 Linux 下的终端一样,方便在很多 log 中快速定位错误。

Logs 窗口可以随意调整大小。

编辑的数据都会自动保存。

下面是具体打开一个设备的调试窗口,首先是数据列表读写(俗称寄存器): 鼠标放到寄存器名称和数据上,会分别提示寄存器说明,和默认数据(默认数据也是从设备中读取)。

寄存器的读写是按组进行,可以保证一组数据的原子性。

组可以随便编辑。

点某一组的 R 会读该组所有数据,W 则是写一组数据。点最上面的 Read All 和 Write All 则是依次读写每一组。

列表是由不同设备的 json 文件配置,其中寄存器列表是设备上电自动打印出来的,拷贝粘贴到 json 模板中即可。

支持数组和多种数据格式,可以设置是否以 16 进制显示(数据框带 H 标记),或者是 uint8_t 数组(带 B 标记)。

同一个组内部,有一些带一个小凹槽,表示两个寄存器之间有空洞。首次写入前会回读该组数据,避免修改空洞中的数据,空洞可能是空的,也可能是厂商 reserved 寄存器。

这是设备页面的 Log 调试,同样可以随便改变大小: 再下面是波形窗口,也支持选择大小。

波形窗口:

每个窗口下面会提示当前选中数据的值,方便且准确。

可以随便打开、关闭某一条曲线,曲线多的时候不容易乱,图中 tc_speed 是关闭状态,但依然会显示数值。

鼠标滚轮可以配合 shift 或者 ctrl 分别对 x 和 y 轴进行缩放,默认是两个轴一起缩放。

支持触摸屏缩放,同样支持 x 和 y 轴不同比例的缩放。

双击恢复默认示图(最大化显示所有数据)。鼠标中键可拖拽平移(触摸板也可以)。

可以设置数据深度,老数据自动删除。方便动态显示数据(示波器效果)。

波形窗口的个数不限。

上圖下面部分是 IAP 和 寄存器 数据导出和导入:

IAP 支持整体回读验证、设备端计算并返回 crc 进行验证、不验证。

寄存器格式改变后,可以通过导出和导入进行迁移。

會一并导出 log、波形数据,譬如你是做电机控制的,可以让客户把他采集到的波形发给你分析,以此远程协助客户调 PID 等参数。

最后是 json 配置,最上面的 reg 是设备上电打印出来的(mcu 端也是自动生成,不用自己填地址、大小和数据类型,不容易出错):

为了方便阅读,有 16 进制数和注释,所以使用的是 json5 格式。

fmt 字符带 [] 的是数组,在一个编辑框显示所有数据。

带 {} 的也是数组,每组占用一个编辑框,每个框内支持多个数据,方便用于结构体数组。

reg_r 和 reg_w 是默认的寄存器分组读写,写不写无所谓,可以在 UI 上编辑。

plot 的数据的 fmt 比较关键,对应两种数据包格式,x1 a1 b1 a2 b2 。.. 和 x1 a1 b1 x2 a2 b2 。..

前者是每个包的多组数据之间共享一个 x 轴数据,fmt 首个字符 I 是 x 的格式,表示 uint32_t, 一般是 mcu 里面一个 cnt, 每个 loop 加 1,loop 周期固定,I 后面的数代表 x1 和 x2 之间的差值,从而恢复出 x2 x3 。..

I 后面没有数字的是后者,一个包里面的每一组数据都有一个 x 值,适合 loop 周期变化的场景。

硬件层面普通串口也支持的。

沒有硬件也可以打开上面的所有界面预览,没数据而已(可以導入別人導出的數據)。

用 CDBUS 专用控制器速度更快更方便,带仲裁等特性,兼容传统 RS485,速度最快可以到 50 Mbps,控制器也是 100% 开源: https://github.com/dukelec/cdbus_ip 此工具默認使用的 USB 轉 RS485 的硬件也是开源的:https://github.com/dukelec/cdbus_bridge

最后提一下 CDCAM 开源RS485 摄像头,此工具支持图像预览。 CDCAM 开源地址:https://github.com/dukelec/cdcam 受限 STM32G071CBT6 的性能,800x600 大小的图片目前是 10 fps,可以发指令触发拍照。 一条 RS485 可以挂多个摄像头、电机,非常方便。 又譬如:传统需要变焦的场合,直接用 2 个不同焦距的定焦摄像头就好了,反正成本便宜。也不增加接线。 非常适合机器视觉的场合。

再顺便补充一下,cdnet ip 是参考 ipv6 的概念,方便通过字符串来代表不同的地址(为了效率,mcu 用 3 字节 uint8_t 数组),其定义如下:

/* CDNET address format:** local link unique local multicast* level0: 00MM* level1: 80MM a0MM f0ML* `-with seq: 88MM a8MM f8ML* level2: c0MM* `-with seq: c8MM** Notes:* NN: net_id, MM: mac_addr, MH+ML: multicast_id*/ 广播和组播也可以用 local link 格式,一般没有必要用 multicast 格式。一般用 80 开头的就够了,00 开头的主要是为了人肉敲命令裸数据调试的时候可以少一两个字符而已,机器就不建议用了。 unique local 是跨网段的时候才用,譬如有多个网段,每个子网有多个设备。level2 是用来传输框架外的任意数据,一般用来多台电脑之间传输真正的 tcp/ip 协议,组电脑网络。 cdnet ip 地址可直接映像为标准的 ipv6 地址,这样电脑上可以通过标准 udp 编程和 mcu 互动,mcu 代码不用变,开销非常小,不用跑 ipv6 协议栈。

原文标题:开源串口图形界面工具:超方便,附代码

文章出处:【微信公众号:嵌入式ARM】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16717

    浏览量

    348464
  • 代码
    +关注

    关注

    30

    文章

    4678

    浏览量

    67893

原文标题:开源串口图形界面工具:超方便,附代码

文章出处:【微信号:gh_c472c2199c88,微信公众号:嵌入式微处理器】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    好用的串口工具

    好用的串口工具
    发表于 08-15 10:35 0次下载

    用git还是用图形界面安装idf-tools总是失败,这是什么问题?

    无论是用git还是用图形界面安装idf-tools总是失败,这是什么问题?
    发表于 06-19 07:03

    上位机控制界面用什么做好

    在设计上位机控制界面时,选择合适的开发工具和框架至关重要。本文介绍如何创建一个优秀的上位机控制界面。 引言 上位机控制界面是实现人机交互的关键环节,它允许用户通过
    的头像 发表于 06-06 10:54 676次阅读

    蓝牙多串口配置工具

    工具是一种多串口配置工具,基于MCF开发,可以将配置信息同时下发到多个串口,支持配置文件信息下发、文本下发和十六进制下发,一般用于芯片等配置工装,提高生产效率。 多
    发表于 03-25 19:22

    AWTK 开源串口屏开发(14) - 界面重用

    AWTK串口屏支持同一个界面绑定不同的数据,本文以家居控制为例,介绍一下界面重用的方法。在家居控制应用中,我们演示了空调和咖啡机界面。现在我们来想一想,如果有多个空调怎么办呢?当然最直
    的头像 发表于 03-23 08:23 262次阅读
    AWTK <b class='flag-5'>开源</b><b class='flag-5'>串口</b>屏开发(14) - <b class='flag-5'>界面</b>重用

    兆易创新与SEGGER联合提供免费商用的emWin图形界面解决方案

    合作,为使用GD32系列Arm® Cortex®-M微控制器的广大用户提供免费商用的emWin嵌入式GUI(图形用户界面)以及屡获殊荣的AppWizard工具。这一举措旨在加速高性能GUI应用的开发与落地,进一步推动工业控制和智
    的头像 发表于 03-16 09:59 787次阅读

    【AWTK开源智能串口屏方案】设计UI界面并上传到串口

    本篇文章将介绍如何使用AWStudio设计串口屏端的UI界面和添加绑定规则,以及怎么将资源文件上传到串口屏端。引言:AWTK-HMI是基于AWTK与AWTK-MVVM开发的低代码智能串口
    的头像 发表于 02-22 08:24 522次阅读
    【AWTK<b class='flag-5'>开源</b>智能<b class='flag-5'>串口</b>屏方案】设计UI<b class='flag-5'>界面</b>并上传到<b class='flag-5'>串口</b>屏

    ​【AWTK开源智能串口屏方案】方案介绍和工作原理

    本篇文章介绍一下AWTK开源智能串口屏方案的基本原理和实际使用效果,包括主要特点、应用场景、工作原理以及简单的Demo演示。引言:AWTK-HMI是基于AWTK与AWTK-MVVM开发的低代码智能
    的头像 发表于 12-21 08:24 816次阅读
    ​【AWTK<b class='flag-5'>开源</b>智能<b class='flag-5'>串口</b>屏方案】方案介绍和工作原理

    图形界面开发工具GUI Guider的使用教程

    GUI Guider是NXP推出的一款功能强大且对用户非常友好的图形界面开发工具。目前最新版本是1.6.1。
    的头像 发表于 12-20 09:49 1.4w次阅读
    <b class='flag-5'>图形界面</b>开发<b class='flag-5'>工具</b>GUI Guider的使用教程

    AWTK 开源智能串口屏方案

    AWTK开源智能串口屏方案发布,旨在解决传统串口屏诸多痛点,为用户提供更开放、更易用、更强大的开源串口屏方案。基于AWTK和AWTK-MVV
    的头像 发表于 12-02 08:24 800次阅读
    AWTK <b class='flag-5'>开源</b>智能<b class='flag-5'>串口</b>屏方案

    linux图形界面设置ip

    在Linux系统中,可以使用图形界面来设置IP地址。下面是一个详实而细致的文章,将指导您如何通过图形界面设置IP地址。 第一部分:进入网络设置界面 打开Linux系统的“设置”应用程
    的头像 发表于 11-27 15:19 2889次阅读

    GUI图形界面编程tkinter高级组件介绍

    大家好, 我是了不起, 欢迎收看我的冒险之旅。 今天我们将深入学习GUI图形界面编程tkinter, 了解高级组件的使用方式。 tkinter高级组件 OptionMenu 选择项
    的头像 发表于 11-26 16:42 827次阅读
    GUI<b class='flag-5'>图形界面</b>编程tkinter高级组件介绍

    python窗口图形界面编程

    库,帮助开发者快速构建具有良好用户体验的窗口应用程序。 在Python的GUI编程领域,最常用的库是Tkinter。Tkinter是Python的标准GUI库,它基于Tk图形库,并提供了创建、布局和管理图形用户界面元素的各种组件
    的头像 发表于 11-22 14:23 758次阅读

    RT-Thread公司的Persimmon图形界面是否必须依赖RTT操作系统?

    RT-Thread公司的Persimmon图形界面是否必须依赖RTT操作系统?
    发表于 10-28 07:38

    基于嵌入式QT的数字机顶盒图形界面设计与实现

    电子发烧友网站提供《基于嵌入式QT的数字机顶盒图形界面设计与实现.pdf》资料免费下载
    发表于 10-18 10:51 0次下载
    基于嵌入式QT的数字机顶盒<b class='flag-5'>图形界面</b>设计与实现