香橙派和树莓派对比,香橙派和树莓派是什么-学知识-

香橙派和树莓派对比,香橙派和树莓派是什么

牵着乌龟去散步 学知识 37 0
Orange Pi 香橙派开发板2019年度盘点�?/strong>

年关将至,趁着快回家过年,除了吃喝玩乐“葛优躺”的例行活动,你还可以来一点不一样的活动——开发板测评!下面就来推荐国产开发板——Orange Pi 香橙派的几款开发板,供君选择�?/p>

“更佳上位奖”——Orange Pi 4

Orange Pi 4使用Rockchip RK3399主控芯片,拥有双通道4GB LPDDR4内存,板�?6GB EMMC Flash存储,支�?.4G/5G双频WIFI、蓝�?.0及千兆以太网,内置高端图像处理器Mali-T864 GPU,支持双路摄像头同时输入,拥有双mipi lcd接口,支�?路显示,可配置任意两路同时输出,支持双屏异显。除了基础�?0pin GPIO接口之外,还增添�?4pin PCIE接口,可接PCIE网卡、SATA硬盘等设备�?/p>

自近期上线以后,这款板子询问度极高,目前已有不少开发者完成测试准备投入量产,风头正劲,在这个奖项的角逐上,Orange Pi 4和Orange Pi 4B势均力敌,最终,Orange Pi 4因为选型成本的优势略胜一筹�?/p>

“年度突破奖”——Orange Pi 4B

虽然在上一奖项的角逐上惜败,但这个奖项,舍它其谁。Orange Pi 4B在这个奖项上胜出的关键也是它与Orange Pi 4以及其他香橙派开发板板子的区别所在——内置了人工智能专用处理器SPR2801(NPU),无需外部缓存�?.8Tops典型算力�?.3Tops/W的超高效能,提供完整易用的模型训练工具、 *** 训练模型实例,可快速应用在智能家居、自动驾驶、机器人等边缘计算领域,为人工智能平台,提供算力支持�?/p>

“神经 *** (Neural Networks)”和“机器学习(Machine Learning)”是近两年移动处理器领域更流行的两个词,而Orange Pi 4B内置的NPU,是实现上述功能特性的专用硬件解决方案。同时与其他同样具有AI功能的板子相比,Orange Pi 4B的表现毫不逊色,走在潮流的前列,这个奖项,它当之无愧�?/p>

“更佳台风奖”——Orange Pi 3

Orange Pi 3采用全志H6系统级芯片,同时拥有1GB�?GB LPDDR3 内存,可�?GB EMMC Flash。这款开发板体积小,尺寸�?4mm*90mm,却集成了丰富的接口,板载wifi+蓝牙,拥有PCIE接口,千兆网口,MIC音频输入口,HDMI2.0a�?.5 mm音频口,HDMI2.0a视频输出口,4个USB3.0接口,支持DC 和micro USB两种供电方式,并且兼容树莓派GPIO口,拥有独特的调试串口�?/p>

如果你觉得RK3399芯片系列的略贵,zero的功能又不太够,那么,这款都挺好的Orange Pi 3,就是你的不二之选。有的板子,说不上有多好,但就是谁都替代不了�?/p>

�?strong>更具亲和力奖”——Orange Pi Zero

Orange Pi Zero是香橙派经典的一款开发板,采用全志strong系统级芯�?同时拥有256MB/512MB DDR3 内存�?56MB为标准版本),体积迷你,却集成了板载 *** 、板载存储,LED指示灯,Low-level 外设,并且兼容树莓派GPIO口,拥有独特的调试串口等,可以运行Android4.4、Ubuntu、Debian等操作系统�?/p>

不管是新手上路想买一块入门级的开发板,亦或是二次开发的项目选型,拿不定主意选哪款的时候,它就在那里,不争不抢,不卑不亢,物美价廉说的就是Orange Pi Zero这样的开发板�?/p>

篇幅有限,还有很多优秀的板子在这里没有介绍,有意向的开发者不妨移步香橙派官网,了解更多产品信息,快回家过年了,有木有很开(jiao)心(lv),不如来一块板子,远离亲戚的“亲切”问候,关上房门,静静享受你的测评moment吧!

购买渠道【TM店铺:香橙派电脑旗舰店�?/p>

Qt编写数据可视化大屏界面电子看�?-窗体浮动

一、前言

窗体浮动的场景也比较多,用途也比较大,比如视频监控模块,有时候需要调整大小和位置,而不是作为dock嵌入到布局中,一旦嵌入到布局中,大小和位置都被布局接管了,只能任由布局使唤,按在地上摩擦的那种。所以窗体浮动独立出来以后,就可以当做单独的窗体使用了,八个方位任意调整大小,(做到这里,是不是想起来,很多人写的无边框窗体类,自己写代码实现边框的拉伸调整大小?原来Qt也内置类无边框调整大小的位置哈!)同时窗体可以拖动到任意位置,比如可以拖动到中间部位占领一个位置,能够调整到更佳的16:9的大小效果。此时的视频看起来就很爽了,这个效果其实是Qt内置的,我在自定义的标题栏中增加了双击浮动,再次双击更大化显示的功能而已�?/p>

二、电子看板介�?/h1>

电子看板是目视化管理的一种表现形式,即对数据的状况一目了然地表现,主要是对于管理项目,它通过利用形象直观而又色彩适宜的各种视觉感知信息来组织现场生产活动,目视管理依据人类的生理特征,在生产现场充分利用信号灯、标识牌、符号颜色等方式来发出视觉信号,鲜明准确地 *** 人的神经末梢,快速地传递信息,形象直观地将潜在的问题和浪费现象都显现出来。以便任何人都可以及时掌握管理现状和必要的情报,从而能够快速制定并实施应对措施。因此,管理看板是发现问题、解决问题的非常有效且直观的手段,是优秀的现场管理必不可少的工具之一�?/p>

三、功能特�?/h1>

1. 整体总共分三级界面,一级界面是整体布局,二级界面是单个功能模块,三级界面是单个控件�?/p>

2. 子控件包括饼�?圆环�?曲线�?柱状�?柱状分组�?横向柱状�?横向柱状分组�?合格率控�?百分比控�?进度控件+设备状态面�?表格数据+地图控件(包括动态闪烁点+迁徙图等)+视频控件+其他控件等�?/p>

3. 二级界面可以自由拖动悬浮,支持最小化更大化关闭,响应双击自定义标题栏�?/p>

4. 数据源支持数据库采集(默认)、 *** 通信、 *** 请求等,可自由设定每个子界面的采集间隔即数据刷新频率�?/p>

5. 采用纯QWidget编写,支持Qt4.6到Qt5.12.3任何版本,支持嵌入式linux比如树莓派、香橙派、全志、imx6等�?/p>

6. 提供三个内核版本,自定义控件版本+qchart版本+echart版本�?/p>

7. 内置多套配色风格样式,默认紫色,支持任何分辨率�?/p>

8. 可设置标�?目标分辨�?布局方案,启动立即应用�?/p>

9. 可设置主背景颜色+面板颜色+十字线游标颜色�?/p>

10. 可设置多条曲线颜色,没有设置颜色的情况下内置15套精美颜色随机应用�?/p>

11. 可设置标题栏背景颜色+文字颜色�?/p>

12. 可设置曲线图表背景颜�?文字颜色+网格颜色�?/p>

13. 可设置正常颜�?警戒颜色+报警颜色+禁用颜色+百分比进度颜色�?/p>

14. 可分别设置各种字体大小,比如全局+软件名称+标题�?子标题栏+加粗标签等�?/p>

15. 可设置标题栏高度+表头高度+行高度�?/p>

16. 曲线支持游标+悬停高亮数据点和显示值,柱状图支持顶部(可设置顶�?上部+中间+底部)显示数据,全部自适应计算位置�?/p>

17. 主界面直接鼠标右键切换布局+配色方案+关闭开启某个二级窗体�?/p>

18. 自动记忆所有子窗口的大小和位置,下次启动立即应用�?/p>

19. 动态加载布局方案菜单,可以动态新建布局、恢复布局、保存布局、另存布局等,用户可以制造任意布局�?/p>

20. 二级窗体,双击从主窗体分离出来浮动,可以自由调整大小。再次双击标题栏更大化,再次双击还原�?/p>

21. 每个模块都可以自定义采集速度,如果是数据库采 *** 自动排队处理�?/p>

五、特别说�?/h1>

1. 可执行文件同级文件夹有layout+layout_1440+layout_1920,程序默认自动识别分辨率并加载对应的布局文件夹,比如1920分辨率则从layout_1920文件夹加载布局,并作为整体布局文件夹�?/p>

2. 程序默认是模拟数据,如果需要从数据库采集则修改配置文件WorkMode=db即可�?/p>

3. 如果发现布局拖动乱了,可以直接鼠标右键选择恢复布局即可,在保存布局以前�?/p>

4. 在中间地图模块鼠标右键可以弹出菜单,切换布局和配色方案等�?/p>

5. 在模块的标题栏上右键可以弹出默认的dock菜单,用来显示和隐藏各模块�?/p>

6. 软件关闭过程中会自动保存布局,下次启动以后自动应用�?/p>

7. 如果使用的默认的默认的配色方案比如紫色风格,则配置文件中的颜色全部无效,会自动应用代码中的颜色,如果需要启用自定义的颜色,则将配置文件�?Theme=\x81ea\x5b9a\x4e49\x98ce\x683c 即可。此时打开软件会应用配置文件中的颜色�?/p>

8. 右键菜单可以截图保存,默认命名为 配色方案名称_布局方案名称.png 保存在snap目录下�?/p>

9. 如果是XP系统请先执行fixff.cmd,用来修复ffmpeg在XP上不可用的BUG�?/p>

10. 在二级窗体的标题栏上右键弹出模块菜单,可以对单个模块打开关闭,其他地方右键全局菜单�?/p>

六、效果图

各种糖果合集🤓🤓#办公室零�?/strong>

糖果合集�?/p>

今天是一期糖果合集,其实我拍过的糖不多但是我们在精不在多,虽然少但是品质没话说�?/p>

·之一个是清润糖,有枇杷、茉莉花,还有樱花味。吃个樱花味,这个我应该拍过不止一次的视频了,这款适合出门带着。这三个口味无论哪一个你吃到后面都会有种奶奶的味道,可能是麦芽糖醇的原因,不加白砂糖,就很舒服的那种甜,不会腻也不会挂舌头上发酸�?/p>

·第二个是查克勒的含片,这个是他们最开始的品就是茶叶,这个是后面出的所以是花茶,就我升级了一下。花茶是这样子的,里面是这种小三角的形状,给你们读一下,配料木糖醇,花茶、绿豆、决明子、生姜、大枣、罗汉果、胖大海、柠檬酸、食用香精就还是会有添加,但是这个配料已经是非常好的了�?/p>

·在糖界我之一次吃它就是因为它是茶叶含片,就很吸引我,是茶叶的味道。到手发现它还有绿豆、决明子、生姜、大枣、罗汉果、胖大海,对嗓子也不错。小小的一片你真的能含很久,因为它真的是含片,所以它会很硬,就是让你含着吃,然后你含着含着就清新嘴巴,就这样一小只,很适合吃完味道重的东西之后来一颗,对了对茶比较敏感的不要晚上吃�?/p>

·最后是这个糖立方的棒棒糖,它有4个颜色对吧?每种颜色有三个口味,给大家汇报一下�?/p>

→草莓、荔枝、百香果、蓝莓、芒果、柠檬、白桃、香橙、哈密瓜、青苹果、树莓、菠萝。想找一个百香果这个黄黄的是更好找的�?/p>

→草莓是红的,荔枝是白的,百香果是黄的�?/p>

→TRY-TRY它是安全纸棒。这个棒棒糖很适合拍美式证件照�?/p>

→好了虽然哪个棒棒糖都可以,它就是加的麦芽糖醇,吃着不会是很腻的那种,而是很舒服的那种甜,然后有点奶奶的�?/p>

今天视频就这样希望大家看开心,拜拜�?/p>

Linux创建虚拟磁盘文件(单文件多分区)

创建这东西有什么用呢?有!玩过树莓派、香橙派等各种派的同志们都知道,从网上下载到一个系统镜像文件,烧写到TF卡之后,TF卡就变成俩分区的了,我不知道人家是不是像我这样做的镜像,但是,用这个 *** 做成了Orangepi Zero的系统镜像�?/p>

还有一个用途:把一些不想让别人看到的东西,塞到这个镜像文件里,不知道文件格式的人根本不知道怎么打开(好吧,这个功能确实很牵强)�?/p>

*** 步骤与 *** (Ubuntu环境,缺命令的自己安装一下)�?/p>

Step1: *** 一个空白文件,也就相当于买一块硬盘,文件名叫做VirtualDisk.img,总大小为32MB(自己根据需要修改大小),这个dd命令的具体用法请自行搜索�?/p>

# dd if=/dev/zero of=VirtualDisk.img bs=1M count=32

Step2:为空白文件创建分区,我这里创建两个分区,之一个分�?MB,文件系统为FAT,剩下的空间作为第二个分区,文件系统为EXT4,使用fdisk命令进行分区,fdisk的使用 *** 请自行搜索,这里为了简便,我就把手动操作fdisk的命令全部打到一行了�?/p>

# echo 'n\np\n1\n2048\n18432\nt\nb\nn\np\n2\n18433\n\nw\n' |fdisk VirtualDisk.img > /dev/null

上面一行命令我觉得不解释一下可能会挨揍,具体是这样的:

echo后面的一堆东西,是按照操作fdisk命令的输入顺序码出来的,所有的\n都代表回车,也就是说,上面的命令相当于这样做�?/p>

先执�?fdisk VirtualDisk.img,然后依次输入:n (新建分区)、回车、p(主分区)、回车�?(之一个分区)、回车�?048(从2048处开始)、回车……(自己解析吧)

Step3:把镜像文件映射(暂且叫映射吧,你看完后面内容慢慢理解这步操作的意思)到系统中�?/p>

# kpartx -av VirtualDisk.img

执行这条命令之后,在系统�?dev/mapper/目录中会生成两个文件:loop0p1和loop0p2

Step4:格式化这两个分区(一个FAT、一个EXT4�?/p>

# mkfs.vfat /dev/mapper/loop0p1# mkfs.ext4 /dev/mapper/loop0p2

Step5:设置卷标,这一步可以省略,不设置的话,刷完镜像的磁盘插到电脑上会显示“可移动磁盘”或者其他系统默认的卷标

# dosfslabel /dev/mapper/loop0p1 "BOOT"# e2label /dev/mapper/loop0p2 "Linux"

FAT分区用dosfslabel命令,EXT分区用e2label命令。上面的BOOT和Linux字符串是卷标,随意设置。到此,虚拟磁盘文件已经建立完成了,下面是如何挂载、使用的 *** �?/p>

Step6:创建挂载点并挂载分�?/p>

# mkdir -p /mnt/BOOT# mkdir -p /mnt/Linux# mount -o loop -t vfat /dev/mapper/loop0p1 /mnt/BOOT# mount -o loop -t ext4 /dev/mapper/loop0p2 /mnt/Linux

挂载成功后,就可以在/mnt/BOOT�?mnt/Linux两个文件夹中搞一些事情了

Step7:卸载分区(�?l是无条件卸载,防止卸不掉,是小写的L,不是数�?�?/p>

# umount -l /mnt/BOOT# umount -l /mnt/Linux

Step8:取消虚拟磁盘文件在系统中的映射

# kpartx -d VirtualDisk.img

好了,搞定了,下面是我做的一个shell脚本,用来打包Orangepi Zero系统镜像的,需要的拿去修改一下再用(不要嘲笑我的注释,那是Chglish)�?/p>


#! /bin/shIMG_NAME="OrangePiZero.img"# Create a new disk image: 32MBdd if=/dev/zero of=$IMG_NAME bs=1M count=32# Partition the image, part1: 4MB@FAT32, part2:@EXT4echo 'n\np\n1\n2048\n18432\nt\nb\nn\np\n2\n18433\n\nw\n' |fdisk $IMG_NAME > /dev/null# Just have a lookfdisk -l $IMG_NAME |tail -n 3# Mapping the image to host systemsudo kpartx -av $IMG_NAME< $? -ne 0 > && echo "Please use right root password." && exit 1sleep 0.1s # Don't remove this!!!# Format the partion: part1@FAT32sudo mkfs.vfat /dev/mapper/loop0p1# Format the partion: part2@EXT4sudo mkfs.ext4 /dev/mapper/loop0p2sleep 0.1s # Don't remove this!!!# Change the label of partion: part1@BOOTsudo dosfslabel /dev/mapper/loop0p1 "BOOT"# Change the label of partion: part2@Linuxsudo e2label /dev/mapper/loop0p2 "Linux"# Create mountpointssudo mkdir -p /mnt/BOOTsudo mkdir -p /mnt/Linux# Mount partionssudo mount -o loop -t vfat /dev/mapper/loop0p1 /mnt/BOOTsudo mount -o loop -t ext4 /dev/mapper/loop0p2 /mnt/Linux# Copy files to image partionssudo cp -v zImage sun8i-strong-plus-orangepi-zero.dtb /mnt/BOOTsudo cp -v -r rootfs/* /mnt/Linux/sync# Unmount partionssudo umount -l /mnt/BOOTsudo umount -l /mnt/Linux# Delete mountpointssudo rm -rf /mnt/BOOTsudo rm -rf /mnt/Linux# Install u-boot to imagesudo dd if=u-boot-sunxi-with-spl.bin of=/dev/loop0 bs=1024 seek=8# Unmap the image from host systemsudo kpartx -d $IMG_NAME< $? -ne 0 > && echo "Please use right root password." && exit 1

-End-

国内首创,让NAS成为3D打印机的大脑,QNAP NAS完美安装klipper

前言

3D打印机一般有两种玩法,一种是�?D打印机成为一种生产力工具,打印各种好玩的模型;另一种是�?D打印机本身,包括改�?D打印机,优化3D打印机,尝试各种不同类型�?D打印机,甚至是从零DIY一�?D打印机。目前国�?D打印机厂商中,拓竹可谓一枝独秀,其产品虽然价格较高,但是打印速度和打印质量令人惊叹。身为拓竹P1P的用户,对这一点是深有感触。拓竹P1P可以稳定且高效地成为我的生产力工具,也就让我有机会去体验3D打印机的另外一半乐趣——DIY 3D打印机�?/span>

DIY 3D打印机的难度,应该是普通人能够理解并完成的上限。就是说,一般人,可能不需要太多专业知识,凭借 *** 上丰富的资料以及各种 *** 上随手可得的标准套件,只要有耐心,是可以成功组装出一�?D打印机的。目前更流行的高性能3D打印固件,应该就是klipper了。一台基于klipper�?D打印机,不但拥有作为各种电机、传感器驱动核心的下位机控制器,也有承担复杂运算、提供可视化UI界面的上位机。下位机就像�?D打印机的心脏,一般是基于STM32的嵌入式开发板,而上位机则是一台基于Linux的电脑,只要能够和下位机通过USB连接进行串口通信即可�?/span>

大部分玩家在组装3D打印机的时候,一般会选择树莓派或者同等算力的开发板作为上位机。有的为了节约成本会选择电视盒子、旧手机等等。NAS本质上也是一台基于Linux的电脑,也有USB接口,据我了解,NAS玩家�?D打印玩家有着相当高的重合度,那么使用NAS作为3D打印机的上位机也是一种不错的选择,只要NAS�?D打印机留有合适的放置空间即可�?/span>

QNAP NAS安装Klipper

本文所介绍的 *** 是基于威联通的X86平基于台的NAS设备,其他品牌和架构的NAS不一定适用。威联通的操作系统QTS是Linux的,但是Klipper并不能很方便地直接安装在QTS上,虽然理论上是可行的。那么要安装Klipper,想到的自然是基于虚拟化的方案了。这时候,威联通的三大虚拟化解决方案:Container Station、Ubuntu Station以及Virtualization Station就可以派上用场了�?/span>

方案选择

  • 一般情况下,大多数用户会选择使用Container Station,因为这是最轻量级的方案,而且目前也有现成的docker镜像可以选择(https://github.com/dimalo/klipper-web-control-docker),但是却存在无法编译Klipper下位机固件、无法方便地升级等问题�?/span>
  • 排除Container Station,可能就要考虑Ubuntu Station,虽然略重量级,但好在运行效率高。不过我尝试下来,下位机连接到NAS上后,USB串口的在Ubuntu Station的穿透有一些问题,导致Klipper无法访问到串口�?/span>
  • 那么最后的选择只有Virtualization Station,虽然不但重量级且效率略低,但是我这台TS-464C性能还是可以的,没有很大压力。不过Virtualization Station安装Klipper后,也会存在USB无法自动分配到虚拟机的问题,好在这个是有解决办法的�?/span>

Linux系统安装

下面,就详细地讲述一下如何在Virtualization Station上安装Klipper,以及问题的解决 *** 。之一步肯定是在虚拟机上新建一个Linux实例�?/span>

关于Linux发行版的选择,一般人都会选择Ubuntu。不过我为了稍微节约点系统资源,选择了基于Ubuntu的轻量级版本Linux Lite(https://www.linuxliteos.com/download.php),用起来和Ubuntu没有太大差别。Linux Lite的安装步骤就不再赘述了,都是基本操作,耐心等待一段时间就行�?/span>

系统安装完成后首先要做的就是替换掉官方的软件源,以加速软件的下载安装。最新的Linux Lite 6.4是基于Ubuntu 22.04的,因此软件源的替换 *** 也和Ubuntu 22.04一样,按照步骤输入以下几条命令�?/span>

备份官方的软件源,执行以下命�?/span>

sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak

替换为清华大学ubuntu 22.04镜像�?/span>

sudo bash -c "cat << EOF > /etc/apt/sources.list && apt update deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiversedeb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiversedeb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiversedeb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverseEOF"

由于后续要安装的软件很多都是基于Python开发的,因此也需要替换Python的pip源,按照步骤输入以下命令即可�?/span>

mkdir ~/.pip

打开配置文件 ~/.pip/pip.conf,修改如下:

index-url = https://pypi.tuna.tsinghua.edu.cn/simpletrusted-host = https://pypi.tuna.tsinghua.edu.cn

Klipper安装

基本工作准备完毕了。接下来要安装Klipper,我们这里需要借助kiauh这个自动化安装脚本。有了这个脚本,安装依赖、下载软件、配置服务都不需要过多干预,全都集成在脚本里面了,用起来很方便。kiauh脚本的代码托管在github上,所以需要首先安装git工具�?/span>

sudo apt-get install git -y

然后使用下面的命令将kiauh下载到用户目录�?/span>

cd ~ && git clone https://github.com/th33xitus/kiauh.git

最后直接运行脚本即可�?/span>

./kiauh/kiauh.sh

接着我们需要根据弹出的菜单提示选择要安装的软件。这里,我们需要安装三个软件:Klipper、Moonraker以及Fluidd。如何理解三者的关系呢:Klipper�?D打印机的固件,Moonraker是基于Python开发的web服务,可以和Klipper交互并提供Apis,Fluidd是web UI前端,利用Moonraker提供的Apis间接控制Klipper,以图形化的方式操作和监�?D打印机�?/span>

有了kiauh,这些软件的安装会变得异常简单,唯一的拦路虎可能就是 *** 问题导致的github访问不畅。解决 *** 要么挂梯子,要么多试几次即可。按照顺序,我们依次安装Klipper、Moonraker以及Fluidd。根据需要,你还可以将Fluidd替换成另外一个前端Mainsail,如果打印机有屏幕,还可以选择继续安装KlipperScreen�?/span>

软件安装配置完毕后,使用虚拟机的IP直接访问,不出意外就能看到Fluidd的页面了�?/span>

针对不同�?D打印机硬件配置,我们还需要为下位机编译固件,烧录固件,以及在Fluidd中进行详细的配置。关于这部分,每台打印机都不尽相同,且不在本文的重点讨论范围,因此就略过了。我当前的情况是下位机固件已经烧录好,且已经有了正确的配置文件。这时,因为NAS还没有连接下位机主控板,所以还看不�?D打印机设备。用USB连接NAS和下位机主控板,此时QTS应该是可以直接识别到下位机的。如果想让虚拟机识别到下位机主板,需要手动将USB设备直通到虚拟机里面�?/span>

这样,虚拟机里面就能看到这个设备了。把设备路径配置到Fluidd的配置文件中,Fluidd也能正确识别�?D打印机主控板了�?/span>

USB自动挂载

这时会有一个问题,如果3D打印机主控板下电了,USB设备是不会自动加载到虚拟机里面的。如果不嫌麻烦的话,就需要每次手动点击一下,但这样做显然太不优雅了。如果可以做到插入指定USB设备,就能将这个设备自动加载到指定的虚拟机中,那么一切就很完美了�?/span>

为了解决这个问题,下面,是时候秀一些小技巧了。首先ssh登录到NAS终端�?D打印机上电,下位机主板连接到连接到NAS,输入lsub查看新插入的设备,记下设备的vendor id和product id。比如我这里是这样的结果。OpenMoko是新插入的设备,1d50是vendor id�?14e 是product id�?/span>

<~> # lsu *** Bus 001 Device 002: ID 0463:ffff MGE UPS Systems UPSBus 001 Device 003: ID 1d50:614e OpenMoko, Inc. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hubBus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

新建一个文件mount.xml,输入以下内容,关键是vendor id和product id。文件创建在任意共享目录即可,要记得这个路径�?/span>

<hostdev mode = 'subsystem' type = 'u *** ' managed = 'yes'>   <source>      <vendor id='0x1d50'/>      <product id='0x614e'/>   </source></hostdev>

接着,在Virtualization Station中查看当前运行的Linux虚拟机实例的uuid,记下这个值�?/span>

在虚拟机实例正常运行的情况下,在NAS终端中输入以下命令:

/QVS/usr/bin/virsh attach-device your_uuid  /share/Share/mount.xml

此时回到你的Linux虚拟机终端中,查看一下USB设备是否能够正确加载。如果能够正确加载,那么你就成功了一半了,当前至少证明了是可以通过命令行将USB设备直通到虚拟机中的。将上面的命令复制到新的脚本文件mount.sh中�?/span>

#! /bin/sh -xexport LD_LIBRARY_PATH=/QVS/usr/lib:/QVS/usr/lib64/ export PATH=$PATH:/QVS/usr/bin/:/QVS/usr/ *** in//QVS/usr/bin/virsh attach-device your_uuid  /share/Share/mount.xml

并赋予脚本可执行权限

chmod +x /share/Share/mount.sh

那么接下来要解决的就是插入USB设备后,自动直通到虚拟机中。回到NAS的终端里面,输入命令�?/span>

udevadm monitor --env

插拔下位机的USB线,此时会有很多内核udev事件上报,记下对应的add事件的DEVPATH。事件信息输出类似下面�?/span>

UDEV  <17933.644086> add      /devices/pci0000:00/0000:00:14.0/u *** 1/1-1/1-1:1.0 (u *** )ACTION=addDEVPATH=/devices/pci0000:00/0000:00:14.0/u *** 1/1-1/1-1:1.0DEVTYPE=u *** _interfaceINTERFACE=2/2/1MODALIAS=u *** :v1D50p614Ed0100dc02dsc00dp00ic02isc02ip01in00PRODUCT=1d50/614e/100SEQNUM=2783SUBSYSTEM=u *** TYPE=2/0/0USB_1_2=UPS_HIDUSEC_INITIALIZED=17933635952mmc0_0001=root_bootsg0=rootsg1=rootsg2=rootsg3=root

新建文本文件99-u *** share.rules,填入以下内容。不要照抄,你的DEVPATH可能不同�?/span>

ACTION=="add",DEVPATH=="/devices/pci0000:00/0000:00:14.0/u *** 1/1-1/1-1:1.0",RUN+="/share/Share/mount.sh",OPTIONS+="last_rule"

然后再新建一个脚本autorun.sh,填入以下内容:

#! /bin/shcp -f /share/qnap/99-u *** share.rules /lib/udev/rules.d/udevadm control --reload-rulesudevadm trigger

这里简单解释一下这些命令和文本文件的作用。首�?9-u *** share.rules里面配置的规则是,如果有Action为add,且DEVPATH为指定内容的udev事件上报,就执行mount.sh在虚拟机中挂载这个设备。autorun.sh的命令会�?9-u *** share.rules这条规则放到指定目录,并通过udevadm相关命令重新加载这条规则使他生效。那么现在我们给autorun.sh这个脚本赋予可执行权限并运行它。然后尝试拔下并插入USB,进入虚拟机的Linux终端查看,应该可以直接看到响应的设备节点了�?/span>

chmod +x /share/Share/autorun.sh

最后一步,是将autorun.sh这个脚本也可以开机自动运行,这样以后重启NAS,也能使通过USB插入到NAS的下位机主板自动加载到对应的虚拟机中,一切一劳永逸,完美无缺。我们还需要进行以下步骤。在NAS终端中运行下面的命令�?/span>

mount $(/ *** in/hal_app --get_boot_pd port_id=0)6 /tmp/configcp /share/Share/autorun.sh /tmp/configumount /tmp/config

然后再NAS控制�?-系统--硬件里面,启用启动时用户自定义进程�?/span>

这样,Klipper及其配套软件就可以在NAS中完美运行了。进入Fluidd检查一�?D打印机状态,然后装载耗材,尝试打印一个模型吧�?/span>

3D打印机和NAS展示

看了太多的软件部分,下面来秀一下我的硬件:两台3D打印机和一台威联通NAS。之一�?D打印机是拓竹P1P,也是我目前最主要�?D打印生产力工具。作为当前拓竹科技旗下更低端的产品,放在当前消费级成�?D打印机市场,也可以说天花板的存在了。拓竹P1P的打印速度和打印质量让我十分满意,有时候机器飙起来晃的跟洗衣机一样,依然不会影响成品的打印质量。这就是优秀的结构设计和优秀的软件算法结合的魅力�?/span>

第二�?D打印机是我自己DIY的Voron 0.1,也是本文用于验证NAS上安装Klipper可行性所使用�?D打印机。这台机器我是直接购买了套件,然后按照官方说明书一点一点拼装、拧螺丝、接线、焊接、安装配置软件,花费了好几个晚上组装完成的。我个人还是非常喜欢这台Voron 0.1的。毕竟是自己从零开始打造的。虽然Voron 0.1打印尺寸不打,打印速度我没有深度调试也不算太高,但是全CNC机身加上酷炫的造型,当个桌面摆件还是很不错的�?/span>

最后再说说这台QNAP TS-464C NAS,这时我新升级的NAS设备,以后也会作为我的主力NAS使用。TS-464C采用N5095处理器,4个核�?个线程,更大频率为2.90GHz的时钟,单核性能、多核性能以及核显性能都还不错。搭�?GB LPDDR4X 2933双通道板载内存,虽然失去了扩展行,但是8GB得容量跑一个虚拟机加上几个Docker是没有什么压力的,目前我也是这样使用的�?/span>

4�?.5寸硬盘插槽加上两个M.2硬盘插槽,配置上还算良心。内置的2个M.2 2280 PCIe Gen 3 x2 插槽,可支持双M.2 NVMe SSD,可启用快取,提升数据运算能力及存取性能;也可搭�?Qtier启用自动分层存储技术,将存储空间效率发挥地淋漓尽致�?/span>

其他接口方面,前后各一�?USB 3.2 Gen 2 端口,背面还有一个USB 2.0端口。一个HDMI 2.0 端口,更高可支持4096 x 2160 @ 60Hz视频输出,打造HTPC必备接口。双2.5GbE接口 *** 传输,可支持链路聚合(Port Trunking),实现高�?Gbps的传输带宽�?/span>

目前威联通也刚刚发布了基于N6005的新品TS�?66C,但是相比N5095性能提升不大。在威联通推出N100系列NAS新品前,这台TS-464C我估计还能用上挺长一段时间�?/span>

后记

在虚拟机上部署Klipper其实并不是一件很难的事情,毕竟只要使用kiauh和解决 *** 问题,这一切都会变的很简单。使用虚拟机部署Klipper的难点在于如何解决USB插拔后设备在虚拟机中挂载的问题。虽然威联通的Virtualization Station提供了UI菜单可以手动执行USB挂载,但这显然太不方便了。为了解决这个问题,搜遍中文网站也没找到答案,甚至用NAS部署Klipper的文章都很少。最终我在Google上使用英文搜到了一些线索,并成功解决了这个问题。所以姑且算是国内首创吧。如果你不想额外购买上位机,比如树莓派、香橙派等,也不想使用廉价的电视盒子、红米手机折腾,刚好你手头有一台可以使用虚拟机的NAS,那么不妨试试在这个上面部署Klipper吧。如果你�?D打印机都没有,那么就早点入坑3D打印吧,真的很有趣�?/span>

可以刷linux的机�?/strong>

1、随身WiFi�?8-19�?�?12MB�?Gflash,openwrt,Debian。小米随身WiFi

2、无线路由器�?50-500�?可刷( dd-wrt,tomato,openwrt,padavan),https://openwrt.org/可以找到支持的列表,中文http://www.openwrt.org.cn/

3、光猫,本身几乎都是linux,如华为hs8145,烽火HG6201,贝�?040等,光猫本身价格比较高,可以购买退网的�?0元左右,比较特殊的是猫棒,外形像一个光模块,其实包含一个linux系统�?/p>

4、机顶盒,从性价比的角度来说,移动魔百盒比较高,比如cm211,cm311�?Gram+8/16G flash的价格在60元左右,可以方便的刷armbian(debian嵌入�?,ubuntu等�?/p>

5、矿渣,比如前些年的N1盒子,河南链鑫科技有限公司推出蜗牛星际的nas,带有群晖nas软件,玩客云,网心云等,现在基本没有性价比了,新的荣品king3399 2G 16G,性能很棒�?/p>

6、各类linux开发板,摄像头开发板,不太推荐,性价比不好,配置相对来说比较低,有些附带的教程不错�?/p>

7、树莓派,如果不是利用其板载�?0针接口,基本不推荐,性价比太低,tf卡太容易出问题,如果要用,建议香橙派,NanoPi,荔枝派,Banana Pi ,Firefly/萤火虫等,部分有兼容树莓派的40针接口�?/p>

8、瘦终端,云电脑,这个型号比较多,二手的性价比不错,有些本身就是linux系统,也有x86体系的,50-1000元,配置一般比较高,胜在体积小,比较极端的是电脑棒,u盘大小的完整电脑�?/p>

9、旧手机,不是在android上的Termux或docker里的linux,早期有原生的Linux手机,不过都死掉了,大部分android手机是可以刷Linux系统,有些需要root权限,网上小米手机的例子比较多,不是太旧的手机通常支持otg,可以接u *** 转RJ45的有线网卡�?/p>

Qt编写可视化大屏电子看板系�?5-曲线面积�?/strong>

## 一、前言

曲线面积图其实就是在曲线图上增加了颜色填充,单纯的曲线可能就只有线条以及数据点,面积图则需要从坐标轴的左下角和右下角联合曲线形成完整的封闭区域路径,然后对这个路径进行颜色填充,为了更美观的效果,一般这个填充颜色采用曲线条颜色的透明度�?50绘制,看起来更具科幻感,面积图和折线图类似都可以重叠绘制多条,每条都可以是不同的颜色,如果数据点不较少的情况下,还可以开启是否绘制数据值,开启的话直接居中区域绘制对应的数据值�?/p>

为了更方便的使用二次开发改造的QCustomPlot,重命名了一些数据类型,比如曲线图中的数据队列一般有QVector<double>,每次写好多地方,可以重命名数据类型更短,写起来更方便,还有就是针对一些曲线数据和属性设置,定义成一个个数据结构体,在设置数据的时候只要先对结构体数据一个个设置好,最后一次性设置就行,参数看起来很短,最早期采用的分开的参数设置,搞得整个函数参数真多,比如曲线的名称、坐标数据 *** 、线条宽度、线条颜色、数据点形状、线条样式、是否平滑曲线等一大堆参数,有时候突然用户又新增一个要求又要增加一个参数,索性改成结构体数据存储,这下清爽多了,增加个参数要改动的代码量小很多,也更方便阅读�?/p>

关于QCustomPlot曲线图本身是不提供平滑曲线的,在这点上不得不承认Qt自带的QChart是完爆QCustomPlot的,不仅有平滑曲线,还有各种切换动画效果,看起来丝丝滑滑,数据平滑过渡一直往前进的感觉。在自定义QCustomPlot控件的时候就考虑到了这个问题,不改变QCustomPlot本身源码的要求下,即可以是折线图也可以是平滑曲线图,平滑算法还有多种,比如采用Qt自带的贝塞尔曲线cubicTo函数来形成平滑路径,另外一种是网上找的开源的计算 *** ,两种对比下来最明显的区别就是一个峰更陡峭,甚至超过了对应的数据点,类似于有个惯性的感觉,线条滑的很厉害的时候刹车刹不住,还要惯性滑动一段路径�?/p>

## 二、功能特�?/h1>

1. 采用分层设计,整体总共分三级界面,一级界面是整体布局,二级界面是单个功能模块,三级界面是单个控件�?/p>

2. 子控件包括饼图、圆环图、曲线图、柱状图、柱状分组图、横向柱状图、横向柱状分组图、合格率控件、百分比控件、进度控件、设备状态面板、表格数据、地图控件、视频控件等�?/p>

3. 二级界面可以自由拖动悬浮,支持最小化隐藏、更大化关闭、响应双击自定义标题栏�?/p>

4. 数据源支持模拟数据(默认)、数据库采集、串口通信(需定制)、 *** 通信(需定制)、 *** 请求等,可自由设定每个子界面的采集间隔即数据刷新频率�?/p>

5. 采用纯QWidget编写,亲测Qt4.6到Qt6.2任意版本,理论上支持后续其他Qt版本�?/p>

6. 超强跨平台,亲测windows、linux、mac、国产uos、国产银河麒麟kylin等系统,效果完美,同时还支持嵌入式linux比如树莓派、香橙派、全志、imx6等�?/p>

7. 同时集成了自定义控件、qchart饼图、echart地图等功能�?/p>

8. 内置多套配色风格样式(紫色、蓝色、深蓝、黑色),默认紫色,自适应任意分辨率�?/p>

9. 可设置系统标题、目标分辨率、布局方案,启动立即应用�?/p>

10. 可设置主背景颜色、面板颜色、十字线游标颜色等各种颜色�?/p>

11. 可设置多条曲线不同颜色,没有设置颜色的情况下内置多套精美颜色随机应用�?/p>

12. 可设置标题栏背景颜色、文字颜色�?/p>

13. 可设置曲线图表背景颜色、文字颜色、网格颜色�?/p>

14. 可设置正常颜色、警戒颜色、报警颜色、禁用颜色、百分比进度颜色�?/p>

15. 可分别设置各种字体大小,比如全局字体、软件名称、标题栏、子标题栏、加粗标签等�?/p>

16. 可设置标题栏高度、表头高度、行高度�?/p>

17. 曲线支持游标、定位线、悬停高亮数据点、悬停显示值�?/p>

18. 柱状图支持顶部(可设置顶端、上部、中间、底部)显示数据,全部自适应计算位置�?/p>

19. 支持平滑曲线,内置多种平滑曲线算法,还支持面积图平滑�?/p>

20. 面积图填充颜色可选多种规则比如单色透明度填充、透明度渐变填充等�?/p>

21. 数据库支持sqlite、mysql、postgresql、oracle、国产人大金仓等数据库�?/p>

22. 主界面直接鼠标右键切换布局、配色方案、关闭开启某个二级窗体�?/p>

23. 自动记忆所有子窗口的大小和位置,下次启动立即应用�?/p>

24. 动态加载布局方案菜单,可以动态新建布局、恢复布局、保存布局、另存布局等,用户可以制造任意布局�?/p>

25. 二级窗体,双击从主窗体分离出来浮动,可以自由调整大小。再次双击标题栏更大化,再次双击还原�?/p>

26. 子模块也可以全屏显示作为一个大屏,这样就可以一个大屏拓展出多个子大屏,放大查看子模块的数据详情,适用多屏展示�?/p>

27. 每个模块都可以自定义采集速度,如果是数据库采 *** 自动排队处理,后期还可以拓展每个子模块都独立的数据库采集�?/p>

28. 提供系统设置模块进行整体的配置参数设置,效果立即应用�?/p>

29. 提供精美炫酷的大屏地图模块,包括静态图片、闪烁效果、迁徙效果、世界地图、区域地图等,可指定点的经纬度坐标,识别单击响应,可以做地图跳转等,每个点都可以不同的颜色和提示信息�?/p>

30. 除了提供大屏系统外,还将每个模块都做了独立的模块示例界面,每个模块都可以独立学习使用,里面用到的控件也单独做了控件示例界面,方便学习每个控件如何使用�?/p>

31. 非常详细的开发和使用手册,其中包括数据库说明、模块对照图、控件对照图、项目结构、代码说明(精确到每个类)、演示demo、使用 *** 等�?/p>

## 三、体验地址

1. 体验地址�?https://pan.baidu.com/s/1d7TH_GEYl5nOecuNlWJJ7g>(https://pan.baidu.com/s/1d7TH_GEYl5nOecuNlWJJ7g) 提取码:01jf 文件名:bin_bigscreen.zip�?/p>

2. 国内站点�?https://gitee.com/feiyangqingyun>(https://gitee.com/feiyangqingyun)

3. 国际站点�?https://github.com/feiyangqingyun>(https://github.com/feiyangqingyun)

4. 个人主页�?https://blog.csdn.net/feiyangqingyun>(https://blog.csdn.net/feiyangqingyun)

5. 知乎主页�?https://www.zhihu.com/people/feiyangqingyun/>(https://www.zhihu.com/people/feiyangqingyun/)

6. 在线文档�?https://feiyangqingyun.gitee.io/qwidgetdemo/bigscreen/>(https://feiyangqingyun.gitee.io/qwidgetdemo/bigscreen/)

## 四、效果图

## 五、核心代�?/h1>
#include "frmplotarea.h"#include "ui_frmplotarea.h"#include "quihelper.h"frmPlotArea::frmPlotArea(QWidget *parent) : QWidget(parent), ui(new Ui::frmPlotArea){    ui->setupUi(this);    this->initForm();    this->loadPlot1();    this->loadPlot2();    this->loadPlot3();}frmPlotArea::~frmPlotArea(){    delete ui;}void frmPlotArea::initForm(){    //设置X轴偏移�?    ui->customPlot1->setOffsetX(0);    //初始化跟随鼠标游�?   ui->customPlot1->initTracer();    //设置游标线条颜色    ui->customPlot1->setLineColor("#A279C5");    //设置显示横线+竖线    //ui->customPlot1->setShowLineh(true);    //ui->customPlot1->setShowLinev(true);    //绑定双击重新加载数据    connect(ui->customPlot1->getPlot(), SIGNAL(mouseDoubleClick(QMouseEvent *)), this, SLOT(loadPlot1()));    connect(ui->customPlot2->getPlot(), SIGNAL(mouseDoubleClick(QMouseEvent *)), this, SLOT(loadPlot2()));    connect(ui->customPlot3->getPlot(), SIGNAL(mouseDoubleClick(QMouseEvent *)), this, SLOT(loadPlot3()));}void frmPlotArea::loadPlot1(){    loadPlot(0, ui->customPlot1, QColor(50, 185, 207), 3, false);}void frmPlotArea::loadPlot2(){    loadPlot(1, ui->customPlot2, QColor(162, 121, 197), 3, false);}void frmPlotArea::loadPlot3(){    loadPlot(1, ui->customPlot3, QColor(253, 139, 40), 2, true);}// *** oothType: 折线�?-1  平滑算法1=0  平滑算法2=1void frmPlotArea::loadPlot(int  *** oothType, CustomPlot *customPlot, const QColor &color, int dataWidth, bool drawValue){    //清空画布    customPlot->clear();    QStringList lineNames;    lineNames << "合格�?#34;;    //初始化对应的数据    vstring lab;    vdouble key, value1;    int dataCount = 15;    for (int i = 0; i < dataCount; i++) {        lab << QString("%1").arg(i + 1);        key << i;        value1 << CustomPlotHelper::getRandValue(30, 80);    }    lvdouble values;    values << value1;    customPlot->setPadding(9);    //设置数据结构�?   LineData data;    data.index = 0;    data.name = lineNames.at(0);    data.key = key;    data.value = values.at(0);    //设置线条颜色,可以指定颜色也可以随机颜�?   data.lineColor = color;    data.fillColor = 1;    //折线图或者平滑曲�?   if ( *** oothType < 0) {        //添加画布        customPlot->addGraph(1);        //初始化指示器数据高亮及悬停提示等        customPlot->initItem();        //设置画布折线图数�?       customPlot->setDataLine(data);    } else {        //有多种平滑算�?0 1        data. *** oothType =  *** oothType;        vpoint points;        int count = key.count();        for (int i = 0; i < count; ++i) {            points << QPointF(data.key.at(i), data.value.at(i));        }        data.points = points;        //设置数据宽度        data.dataWidth = dataWidth;        //设置绘制数据�?       data.drawValue = drawValue;        customPlot->addSmoothLine(data);    }    //设置坐标轴范围�?X坐标对应显示文字    customPlot->setLabX(key, lab);    customPlot->setRangeX(-0.5, key.count() - 0.5);    customPlot->setRangeY(0, 105, 10);    //重新刷新显示    customPlot->replot();}

Qt编写的项目作�?/strong>

一、自定义控件大全

1. 超过150个精美控件,涵盖了各种仪表盘、进度条、进度球、指南针、曲线图、标尺、温度计、导航条、导航栏,flatui、高亮按钮、滑动选择器、农历等。远超qwt集成的控件数量�?/p>

2. 每个类都可以独立成一个单独的控件,零耦合,每个控件一个头文件和一个实现文件,不依赖其他文件,方便单个控件以源码形式集成到项目中,较少代码量。qwt的控件类环环相扣,高度耦合,想要使用其中一个控件,必须包含所有的代码�?/p>

3. 全部纯Qt编写,QWidget+QPainter绘制,支持Qt4.6到Qt5.12的任何Qt版本,支持mingw、msvc、gcc等编译器,支持任意操作系统比如windows+linux+mac+嵌入式linux等,不乱码,可直接集成到Qt Creator中,和自带的控件一样使用,大部分效果只要设置几个属性即可,极为方便�?/p>

4. 每个控件都有一个对应的单独的包含该控件源码的DEMO,方便参考使用。同时还提供一个所有控件使用的集成的DEMO�?/p>

5. 每个控件的源代码都有详细中文注释,都按照统一设计规范编写,方便学习自定义控件的编写�?/p>

6. 每个控件默认配色和demo对应的配色都非常精美�?/p>

7. 超过130个可见控件,6个不可见控件�?/p>

8. 部分控件提供多种样式风格选择,多种指示器样式选择�?/p>

9. 所有控件自适应窗体拉伸变化�?/p>

10. 集成自定义控件属性设计器,支持拖曳设计,所见即所得,支持导入导出xml格式�?/p>

11. 自带activex控件demo,所有控件可以直接运行在ie浏览器中�?/p>

12. 集成fontawesome图形字体+阿里巴巴iconfont收藏的几百个图形字体,享受图形字体带来的乐趣�?/p>

13. 所有控件最后生成一个dll动态库文件,可以直接集成到qtcreator中拖曳设计使用�?/p>

14. 目前已经有qml版本,后期会考虑出pyqt版本,如果用户需求量很大的话�?/p>

二、输入法

V2019版本说明�?/p>

1. 界面重新布局,高仿IOS输入法�?/p>

2. 顶部滑动选词+弹出汉字面板选词,支持滑动�?/p>

3. 增加记忆功能,优先词库首先显示,支持单个拼音多个汉字,自动调整优先级�?/p>

4. 增加造词功能,可以直接打开文件文件写入自定义词组,更高级别显示�?/p>

V2018版本说明

1. 未采用Qt系统层输入法框架,独创输入切换机制�?/p>

2. 纯QWidget编写,支持任何目标平台(亲测windows、linux、嵌入式linux等),支持任意Qt版本(亲测Qt4.6.0到Qt5.11.2),支持任意编译器(亲测mingw、gcc、msvc等),支持任意控件输入包括网页中的输入控件�?/p>

3. 调用极为方便,pri文件调用形式,只要改成文件包含即可,例如pro文件中写 include($$PWD/inputnew/inputnew.pri)�?/p>

4. 界面清晰简洁,UI美观友好,非常适合触摸设备�?/p>

5. 支持实体键盘输入+鼠标单击输入+触摸输入�?/p>

6. Qt程序嵌入的浏览器中的网页中的文本框等控件的输入�?/p>

7. 迷你模式,界面大小随意设置,采用布局自使用任何分辨率�?/p>

8. 纯数字键盘模式,自由控制弹出完整输入法面板和数字键盘面板,只需要对控件设置属性即可。例如ui->txt->setProperty("flag", "number");

9. 控制需要显示输入法和不需要显示输入法,当某些控件不需要弹出输入法,只需要对应不需要弹出输入法的控件设置属性noinput为真即可。例如ui->txt->setProperty("noinput", true);

10. 自适应屏幕大小,输入法弹出位置为控件底部时,当超过桌面右边或者底部时,自动调整位置�?/p>

11. 实现了长按超�?00毫秒重复执行按下的键的功能。例如长按退格键,不断删除�?/p>

12. shift键切换输入法,esc键隐藏输入法,空格选中之一个汉字,回车选中输入的拼音。和搜狗输入法处理一致�?/p>

13. 英文、中文、数字字母、大小写、特殊字符自由切换�?/p>

14. 支持单拼双拼词组输入,网上大部分只支持单个汉字输入。智能分页算法,可任意翻页查看汉字词组�?/p>

15. 默认自带5种皮肤颜色,可随意切换,用户也可用QSS自定义皮肤�?/p>

16. 字库文件可大可小,提供迷你版字库大小�?20KB,方便存储空间紧张的硬件,完整版字库25MB�?/p>

17. 可选谷歌内核的输入法引擎,字库文件1MB,不依赖数据库,资源占用低效率极高。支持模糊拼音,比如nh=你好�?/p>

18. 可选windows专有版本,支持外部程序输入,比如输入到记事本、 *** 聊天窗口等�?/p>

19. 整个输入法代码行�?000行左右,非常小,不会对程序增加大小造成负担�?/p>

20. 代码结构极为清晰,注释详细,非常容易阅读和理解,同时也可以自行修改拓展自定义的需求�?/p>

三、气体安全管理系�?/h1>

1. 采集数据端口,支持串口端�? *** 端口,串口支持自由设置串口号+波特率, *** 支持自由设置IP地址+通讯端口,每个端口支持采集周期,默认1秒钟一个地址,支持设置通讯超时次数,默�?次,支持更大重连时间,用于重新读取离线的设备�?/p>

2. 控制器信息,能够添加控制器名称,选择控制器地址+控制器型号,设置该控制器下面的探测器数量�?/p>

3. 探测器信息,能够添加位号,可自由选择探测器型号,气体种类,气体符号,高报值,低报值,缓冲值,清零值,是否启用,报警声音,背景地图,存储周期,数值换算小数点位数,报警延时时间,报警的类型(HH,LL,HL)等�?/p>

4. 控制器型�?探测器型�?气体种类+气体符号,均可自由配置�?/p>

5. 地图支持导入和删除,所有的探测器对应地图位置可自由拖动保存�?/p>

6. 端口信息+控制器信�?探测器信息,支持导入导出+导出到excel+打印�?/p>

7. 运行记录+报警记录+用户记录,支持多条件组合查询,比如时间段+控制�?探测器等,所有记录支持导出到excel+打印�?/p>

8. 导出到excel的记录支持所有excel+wps等表格文件版本,不依赖excel等软件�?/p>

9. 可删除指定时间范围内的数据,支持自动清理早期数据,设置更大保存记录数�?/p>

10. 支持报警短信转发,支持多个接收手机号码,可设定发送间隔,比如即时发送或�?个小时发送一次所有的报警信息,短信内容过长,自动拆分多条短信�?/p>

11. 支持报警邮件转发,支持多个接收邮箱,可设定发送间隔,比如即时发送或�?个小时发送一次所有的报警信息,支持附件发送�?/p>

12. 高报颜色+低报颜色+正常颜色+0值颜�?曲线背景+曲线颜色等,都可以自由选择�?/p>

13. 软件的中文标�?英文标题+logo路径+版权所有都可以自由设置�?/p>

14. 提供开关设置开机运�?报警声音+自动登录+记住密码等�?/p>

15. 报警声音可设置播放次数,界面提供17种皮肤文件选择�?/p>

16. 支持云端数据同步,可设置云端数据库的信息,比如数据库名称,用户名+密码等�?/p>

17. 支持 *** 转发和 *** 接收, *** 接收开启后,软件从udp接收数据进行解析。 *** 转发支持多个目标IP,这样就实现了本地采集的软件,自由将数据转到客户端,随时查看探测器数据�?/p>

18. 自动记住用户最后停留的界面+其他信息,重启后自动应用�?/p>

19. 报警自动切换到对应的地图,探测器按钮闪烁�?/p>

20. 双击探测器图标,可以进行回控�?/p>

21. 支持用户权限管理,管理员+操作员两大类,用户登�?用户退出,可以记住密码和自动登录,超过三次报错提示并关闭程序�?/p>

22. 支持四种监控模式,设备面板监�?地图监控+表格数据监控+曲线数据监控,可自由切换,四种同步应用�?/p>

23. 支持报警继电器联动,一个位号可以跨串口联动多个模块和继电器号,支持多对多�?/p>

24. 本地数据存储支持sqlite+mysql,支持远程数据同步到云端数据库。自动重连�?/p>

25. 本地设备采集到的数据实时上传到云端,以便手机APP或者web等其他方式提取�?/p>

26. 支持两种数据源,一种是串口和 *** 通过协议采集设备数据,一种是数据库采集。数据库采集模式可以作为通用的系统使用�?/p>

27. 自带设备模拟工具,支�?6个设备数据模拟,同时还带数据库数据模拟,以便在没有设备的时候测试数据�?/p>

28. 支持所有windows操作系统+linux操作系统和其他操作系统�?/p>

四、可视化大屏电子看板系统

1. 整体总共分三级界面,一级界面是整体布局,二级界面是单个功能模块,三级界面是单个控件�?/p>

2. 子控件包括饼�?圆环�?曲线�?柱状�?柱状分组�?横向柱状�?横向柱状分组�?合格率控�?百分比控�?进度控件+设备状态面�?表格数据+地图控件(包括动态闪烁点+迁徙图等)+视频控件+其他控件等�?/p>

3. 二级界面可以自由拖动悬浮,支持最小化更大化关闭,响应双击自定义标题栏�?/p>

4. 数据源支持数据库采集(默认)、 *** 通信、 *** 请求等,可自由设定每个子界面的采集间隔即数据刷新频率�?/p>

5. 采用纯QWidget编写,支持Qt4.6到Qt5.12.3任何版本,支持嵌入式linux比如树莓派、香橙派、全志、imx6等�?/p>

6. 提供三个内核版本,自定义控件版本+qchart版本+echart版本�?/p>

7. 内置多套配色风格样式,默认紫色,支持任何分辨率�?/p>

8. 可设置标�?目标分辨�?布局方案,启动立即应用�?/p>

9. 可设置主背景颜色+面板颜色+十字线游标颜色�?/p>

10. 可设置多条曲线颜色,没有设置颜色的情况下内置15套精美颜色随机应用�?/p>

11. 可设置标题栏背景颜色+文字颜色�?/p>

12. 可设置曲线图表背景颜�?文字颜色+网格颜色�?/p>

13. 可设置正常颜�?警戒颜色+报警颜色+禁用颜色+百分比进度颜色�?/p>

14. 可分别设置各种字体大小,比如全局+软件名称+标题�?子标题栏+加粗标签等�?/p>

15. 可设置标题栏高度+表头高度+行高度�?/p>

16. 曲线支持游标+悬停高亮数据点和显示值,柱状图支持顶部(可设置顶�?上部+中间+底部)显示数据,全部自适应计算位置�?/p>

17. 主界面直接鼠标右键切换布局+配色方案+关闭开启某个二级窗体�?/p>

18. 自动记忆所有子窗口的大小和位置,下次启动立即应用�?/p>

19. 动态加载布局方案菜单,可以动态新建布局、恢复布局、保存布局、另存布局等,用户可以制造任意布局�?/p>

20. 二级窗体,双击从主窗体分离出来浮动,可以自由调整大小。再次双击标题栏更大化,再次双击还原�?/p>

21. 每个模块都可以自定义采集速度,如果是数据库采 *** 自动排队处理�?/p>

22. 提供系统设置窗口进行整体的配置参数设置�?/p>

五、视频监控系�?/h1>

1. 支持16画面切换,全屏切换等,包�?+4+6+8+9+13+16画面切换�?/p>

2. 支持alt+enter全屏,esc退出全屏�?/p>

3. 自定义信息框+错误�?询问�?右下角提示框�?/p>

4. 17套皮肤样式随意更换,所有样式全部统一,包括菜单等�?/p>

5. 云台仪表盘鼠标移上去高亮,八个方位精准识别�?/p>

6. 底部画面工具栏(画面分割切换+截图声音等设置)移上去高亮�?/p>

7. 可在配置文件更改左上角logo+中文软件名称+英文软件名称�?/p>

8. 封装了百度地图,三维切换,设备点位,鼠标按下获取经纬度等�?/p>

9. 堆栈窗体,每个窗体都是个单独的qwidget,方便编写自己的代码�?/p>

10. 顶部鼠标右键菜单,可动态控制时间CPU+左上角面�?左下角面�?右上角面�?右下角面板的显示和隐藏,支持恢复默认布局�?/p>

11. 工具栏可以放置多个小图标和关闭图标�?/p>

12. 左侧右侧可拖动拉伸,并自动记忆宽高位置,重启后恢复�?/p>

13. 双击摄像机节点自动播放视频,双击节点自动依次添加视频,会自动跳到下一个,双击父节点自动添加该节点下的所有视频�?/p>

14. 摄像机节点拖曳到对应窗体播放视频,同时支持拖曳本地文件直接播放�?/p>

15. 视频画面窗体支持拖曳交换,瞬间响应�?/p>

16. 双击节点+拖曳节点+拖曳窗体交换位置,均自动更新url.txt�?/p>

17. 支持从url.txt中加�?6通道视频播放,自动记忆最后通道对应的视频,软件启动后自动打开播放�?/p>

18. 右下角音量条控件,失去焦点自动隐藏,音量条带静音图标�?/p>

19. 集成百度地图,可以添加设备对应位置,自动生成地图,支持缩放和三维地图,提供地图风格选择,共12种风格�?/p>

20. 视频拖动到通道窗体外自动删除视频�?/p>

21. 鼠标右键可删除当�?所有视频,截图当前+所有视频�?/p>

22. 录像机管理、摄像机管理,可添加删除修改导入导出打印信息,立即应用新的设备信息生成树状列表,不需重启�?/p>

23. 在pro文件中可以自由开启是否加载地图�?/p>

24. 视频播放可选四种内核自由切换,vlc+ffmpeg+easyplayer+海康sdk,均可在pro中设置�?/p>

25. 可设�?+4+9+16画面轮询,可设置轮询间隔以及轮询码流类型等,直接在主界面底部工具栏右侧单击启动轮询按钮即可,再次单击停止轮询�?/p>

26. 默认超过10秒钟未操作自动隐藏鼠标指针�?/p>

27. 高度可定制化,用户可以很方便的在此基础上衍生自己的功能,支持linux系统�?/p>

六、楼宇对讲管理平�?/h1>

1. 左上角logo和右上角项目名称可自定义�?/p>

2. 刷卡不需要选中焦点,自动识别填入�?/p>

3. 可连续自动制卡,自动选中下一个用户进行制卡�?/p>

4. 可将设备卡号信息读出备份到本地数据库,也可本地卡号信息下发到设备�?/p>

5. 可自定义每个设备的报警声音和背景地图�?/p>

6. 集成楼宇对讲、住户报警、公共报警、门禁控制、视频监控、传输 *** 六大功能模块�?/p>

7. 与上海市监管平台联网,自动转发数据到监管平台�?/p>

8. 精美图形化展示各种消息记录�?/p>

9. 亿级别本地海量数据存储,自动清空早期数据,永远保持最新的数据记录�?/p>

10. 极速数据导出到excel,不依赖任何组件�?/p>

11. 可运行在windws XP、win7、win8、win10、linux、mac OS、嵌入式linux等系统�?/p>

支持不限速远程下载以及GPU硬解转码的私有盘——树莓盘来啦

NAS圈越来越热闹,我推荐一位选手:树莓盘。与其说是NAS,我更希望称为私有盘,因为他们是一个功能比较简单纯粹的轻NAS。目前主要支持的功能有:

1. 相册同步(这个是常规功能�?/p>

2. 文件管理及上传于下载(也是常规功能)

3. 磁力/ *** 文件离线下载,可在app远程执行下载、暂停、删除等操作(也算是常规功能�?/p>

4. 能调用GPU的硬解转码(据我所知,很少NAS有这个功能,算是亮点�?/p>

5. 不限速远程访问与下载(高亮:这条基本没有NAS做到,树莓盘系统搭建了服务器+穿透技术)

6. 同时多人文件分享(即圈子功能,你可以理解为一个带有超大存储空间得到群,但是存储空间其实是群主NAS磁盘�?/p>

目前支持树莓�?B、树莓派3B、RK3399设备(如Rock Pi4、香橙派4、R4S等)、X86设备 。以下是功能详解图:

以下是关于树莓盘的常见问题解答:

Q:如何绑定树莓盘系统?

A:两种方式�?/p>

1.PC 端在浏览器输入(网址为:「链接�?/a>)设�?IP 绑定�?/p>

2.app 端直接扫描绑定(官网可下载,网址为:树莓�?个人和家庭的私有�?/a>�?/p>


Q:刷了镜像的卡和U盘需要一直插着吗,能 *** 吗?

A:不能,因为系统就在卡/U盘里


Q:系统需要付费吗�?/p>

A:不需要,并且会一直免�?/p>


Q:你们是通过什么样的方式进行内网穿�?远程访问的?

A:两方面:1,我们有自己的穿透技术;2,我们架设了服务�?/p>


Q:我解绑后再重新绑定,为什么老是绑定不成功?

A:解绑后系统会重启 2 次,等待时间约为 3-5 分钟,可以等 5 分钟过后再次绑定


Q:树莓盘系统支�?wifi 和蓝牙吗�?/p>

A:暂不支持 wifi 和蓝�?/p>


Q:树莓盘系统支持迅雷下载吗�?/p>

A:支持迅雷下载(包括磁力链接、 *** 文件�?/p>


香橙派和树莓派对比,香橙派和树莓派是什么-第1张图片-

Q:树莓盘系统支�?samba 协议吗?

A:支持 *** B 协议,并且默认开�? *** B,可通过 *** B 协议映射 *** 磁盘�?PC 电脑(教程见�?a class="41cd-878d-fe4e-ae8e pgc-link" data-content="mp" data-source="outerLink" href="https://bbs.shumeipan.com/topic/142" rel="noopener noreferrer noopener noreferrer" target="_blank">如何在局域网条件下利用samba协议访问树莓盘系统里的文�?| 树莓盘论�?/a>�?/p>


Q:树莓盘系统支持百度网�?阿里网盘等第三方网盘吗?

A:暂不支持


Q:树莓盘系统支�?webdav 、NFS和docker吗?

A:暂不支持


Q:树莓盘是否可以通过纯内网通过 IP+ 端口访问�?/p>

A:树莓盘暂没有开放端口,但是在局域网状态下可以直接在浏览器输入设备 IP 访问设备文件(设�?IP �?app 查看,如果你已经绑定了的话)


Q:树莓盘支持文件分享吗�?/p>

A:支持以圈子的形式进行多人分享文件


Q:树莓盘系统的转码机制是怎样的?

A:分为闲时转码和实时转码两种�?/p>

闲时转码是指�?/p>

1.磁盘里所有的视频首先都会预转�?10 分钟(时长),以备边转边播时能流畅播�?/p>

2.若你曾经点击观看过但是又没看完的电影,我们在后台闲时会将这个视频全部转码�?/p>

实时转码顾名思义就是边转边播


Q:树莓盘系统硬解转码支持哪�?GPU�?/p>

A:arm 不必多说,这里说�?X86:支持英特尔酷睿 5 �?12 代所有的核显(AMD 不支持)


Q:转码占用资源过高怎么办?

A:不会。我们有锁核机制以及内存占用超过 50% 就自动停止转码的机制


Q:树莓盘系统会备份同步哪些照片和视频?

A:手机上所有的照片和视频树莓盘 app 都会自动同步


Q:同步后的照片在磁盘的哪个位置�?/p>

A:�?samba 协议访问磁盘可看到同步相册文件夹(app 里看不到此文件夹,被隐藏了)


Q:如何开启和关闭自动同步�?/p>

A:点击【头像�?【设置�?【备份与同步】,即可进行同步的开关设置和同步条件设置


Q:树莓盘系统支持磁盘休眠吗�?/p>

A:支持磁盘休眠。当所有操作(包括传输、转码等)停止后 10 分钟,磁盘会自动进入休眠状态,任何的操作都会唤醒磁�?/p>


Q:树莓盘系统支持远程关机吗�?/p>

A:支持,在树莓�?app 的侧边栏点击我的设备可看到关机按�?/p>


Q:树莓盘系统支持远程重启吗�?/p>

A:支持,在树莓�?app 的侧边栏点击我的设备可看到重启按�?/p>


Q:一个账号可绑定多个设备吗?

A:可以绑定多个设备


Q:可以多个手机同时登录一个账号吗�?/p>

A:不可以,会互�?/p>


Q�?G 内存�?4G 内存有什么区别吗�?/p>

A:内存越多,资源调度(比如说转码需要占用内存资源)就越充裕,相对而言设备就越流畅


Q:树莓盘系统支持哪些格式的硬盘挂载�?/p>

A:支持挂载硬盘的格式有 NTFS、vfat、exFAT、ext2、ext3、ext4(但是 NTFS 支持度不够好,不建议�?/p>


Q:树莓盘使用过的硬盘拆除后能被电脑读取吗?

A:如果你的电脑能支持该硬盘格式的话,当然能


Q:NTFS 格式的硬盘,有分区,能被树莓盘挂载吗�?/p>

A:能,并且每个分区会被识别成一个盘,数据不会消失,能被读取�?/p>


如果各位对树莓盘系统感兴趣,可以去看看树莓盘系统的官网和社区�?/strong>

官网�?a class="ae8e-40b9-aa96-0c36 pgc-link" data-content="mp" data-source="outerLink" href="https://www.shumeipan.com/" rel="noopener noreferrer noopener noreferrer" target="_blank">树莓�?个人和家庭的私有�?/a>

社区�?a class="40b9-aa96-0c36-bb2b pgc-link" data-content="mp" data-source="outerLink" href="https://bbs.shumeipan.com/" rel="noopener noreferrer noopener noreferrer" target="_blank">树莓盘论�?/a>

智�?| 动手做战“疫”神器——家用智能开关窗小助�?/strong>

掐指一算,是不是都算不清今天是宅家的第多少天了?全国大中小学基本已经开始线上教学,电脑前一坐一整天的你,有没有怀念在学校学习的氛围?居家隔离的你是不是已经不知道外面的空气是什么味道的啦?看样子,是时候打开窗户透透气了�?/p>

今天小创为大家分�?019北京市“创计划”创客挑战赛参赛学生张恒的宅家创意神器——智能提示开关窗小助手�?/p>

Maker介绍

北京市昌平区之一中学 张恒

曾担任学生会活动部副部长

2019北京市“创计划”创客挑战赛 优胜�?/p>

技能爱�?/strong>

在编程方面:先后学习了Scratch图形化编程,C++,PHP语言(涉猎很浅)以及 Python语言。其中,以Python语言相对最为擅长�?/p>

在嵌入式方面:多次借助Arduino各系列开发板完成了大大小小很多项目,参加了各类大赛。可以熟练使用C++编写程序。但是个人认为Python是未来编程语言发展的趋势,所以正在积极学习Python中。同时,会使用ESP8266物联网WI-FI开发板以及树莓派、香橙派等单板电脑。对Linux系统较为熟悉,能流畅的使用终端进行各种操作�?/p>

软件方面:能熟练使用VSCODE。目前正在自学Keil。同时也在学习ROS。开发经验较为丰富,参加过多次创客马拉松,目前正在筹备新一届的中国青少年机器人大赛,开发协作机器人。 *** 机器人时,可以快速地将所需要完成的目标顺利转化为需要的传感器以及执行器,并与之进行匹配�?/p>

热爱物理,能够熟练地进行电路的搭建,了解各种电子元件的工作原理。对电学有较为深刻的认识�?/p>

作品展示

作品主体

串口下载部分

作品实现的功能:定时提醒用户开关窗�?/p>

如何操作�?/strong>用户通过按钮和作品交�?/p>

运作演示

视频加载�?..

设计初衷

疫情形式严峻,宅在家中,定时开窗通风是一种比较好的防疫方式。但是,冬末春初,气温依然较低,如果开窗后忘记关,患上感冒的风险大大增加。而长期不开窗,室内空气质量会变差�?/p>

针对这两种情况,我设计了智能开关窗助手,可以定时提醒用户开窗。开窗后,它还可以提醒用户及时关窗�?/p>

设计过程之硬�?/strong>

主控�?/strong>我采用的是STM32F103C8T6芯片,因为其功耗相对较低,支持睡眠模式,适合此场景的应用�?/p>

电路连接�?/strong>首先,我加入了红、绿、蓝3个LED灯来指示状态,分别是电源、需要开/关窗、计时中指示灯。因为STM32工作�?.3V,所以我可以直接连接LED而不用接分流电阻。其次,为了起到提醒的作用,我同时加入了一个蜂鸣器,因为其工作�?V,所以我将其接到了STM32�?V管脚。最后,我还加入两个按钮,分别代表开关窗,通过返回高低电平信号来判断是否被按下,从而实现作品与用户交互�?/p>

供电部分�?/strong>充电宝或者电脑的USB接口均可供电�?/p>

STM32的程序下载方面,我使用了CH340芯片实现USB-TTL,从而烧录程序。需要特别注意的是,我使用的这一款最小核心系统,在下载程序时需要调整跳线帽至BOOT0-1 BOOT1-0模式,才可以正常下载。运行程序时需要将BOOT1 BOOT2都调整为0�?/p>

设计过程之程�?/strong>

程序方面,我采用的是Arduino IDE进行编程,加载了Arduino的STM32组件包。不使用keil的原因是此项目功能相对单一,复杂度也较低�?/p>

定义相关引脚,方便后续的编程�?/p>

程序框图和主循环程序如图。本着开源的原则,代码我会于近期传到Github�?/p>

使用指南

首先,系统从通电那一刻开始计时,默认�?小时,蓝灯亮起表示正在计时。时间到后,蜂鸣器发出报警,蓝灯灭表示计时结束,同时绿色灯亮起,代表需要开窗。用户开窗后,按下按钮代表已经开窗。此刻系统开始计时,默认�?0分钟。时间到后,蜂鸣器报警,绿灯亮表示需要关窗,蓝灯灭表示计时结束。用户按下按钮代表关窗,此刻绿灯灭。新的循环开始�?/p>

遗憾和展�?/strong>

遗憾的是手边没有OLED屏幕,不能做到完美的交互,只能通过LED的形式来进行提示,这本质上也将交互复杂化了�?/p>

首先,为了让它的应用更加灵活,还应加装一个总电源开关,以便在用户不需要提醒时关闭系统�?/p>

再者,开窗和关窗间隔时间用户应该可以自己调整,但是因为没有屏幕,所以让实现这一功能变得困难�?/p>

最后,通过按钮的方式来交互,很可能会失去系统本身的作用,用户不需要真正开窗,点击按钮即可实现“开窗”。如果假装超声波或者红外测距装置就可以规避这一问题�?/p>

“创计划”感�?/strong>

通过参加“创计划”比赛,我认识到了创意的重要性,发现了自己的不足之处,生活中我比较缺少观察和发现,而创意往往来源于生活�?另外,也懂得了如何做一个领导者,学会分配任务,调动全组,不能什么任务都自己来,自己的队员也是强有力的�?/p>

最后,完整地参与将一个想法转化为成型的产品的过程,强化了我的理工科思维�?“创计划”带给我对人工智能的憧憬,让我更进一步感受到了它的魅力�?/p>

2019北京市“创计划“创客挑战赛现场

【“创计划”背景描述�?/strong>

为推进智能制造背景下,人才培养模式的转型发展,推动教育教学改革,加强未来创新人才培养,清华大学每年在清华大学“创客日”期间,举办“创计划”创客挑战赛,面向高中生,旨在让具有优秀创新能力的中学生们感受清华大学的创新文化、领会创新精神、展示创新能力,也期待在中小学基础教育与人才选拔过程中增强创新精神与创新能力的培养�?/p>

“创计划”创客挑战赛由北京市教育委员会作为指导单位,清华大学主办,清华大学基础工业训练中心、北京学生活动管理中心承办,K16技术与工程教育联盟支持,青橙教育创新研究院协办�?/p>

结语

光阴不虚度,宅家齐充电!

在这个特殊时期,小创将为广大中学生提供一系列足不出户即可学习动手 *** 的创意作品案例,丰富大家的宅家线上学习生活�?/p>

如果你也有“宅家”神器的创想灵感/作品案例,欢迎和我们一起分享交流�?/p>

作者|北京市昌平区之一中学 张恒

标签: 树莓 香橙 对比 什么

抱歉,评论功能暂时关闭!