USBFlashCopy 117 时备份您的闪存驱动器和存储卡
USBFlashCopy 1.17商业版是一个小型的Windows实用工具,能够实时备份您的闪存驱动器和存储卡。它在后台运行,将插入的媒体中的文件复制到硬盘上的安全位置。
小巧 USBFlashCopy非常小巧,仅占用不到300KB的空间,无需额外的库、框架或其他下载和安装。
简单而智能 USBFlashCopy能自动检测到您插入媒体的时候,并将其内容复制到安全位置。默认情况下,它会在"My Documents\Removable Media Backups"中为每个可移动媒体创建一个子文件夹。
支持配置文件 创建不同的配置文件,针对不同的闪存驱动器或存储卡设置单独的参数。您可以为新的或者不经常使用的媒体更改默认设置。
仅复制更新的文件 USBFlashCopy只复制更新或修改过的文件,您可以选择保留旧版本的文件。
迁移设置 USBFlashCopy将其设置保存在一个INI文件中,该文件会自动创建在其运行的文件夹中。复制USBFlashCopy.ini和可执行文件可以保留您的设置。
购买许可并注册USBFlashCopy将带来以下优势: 备份过程可以透明进行,即在后台执行,无需询问用户或显示任何进度对话框。
USBFlashCopy 1.17的功能可以分为以下几类:
实时备份闪存驱动器和存储卡 :在插入媒体时自动检测并将文件复制到指定的安全位置。小巧高效 :占用空间小,不需要额外的库或框架,安装和使用非常简单。支持多种媒体 :支持备份各种类型的闪存驱动器和存储卡,包括USB闪存驱动器和SD卡等。自动创建备份子文件夹 :默认情况下在"My Documents\Removable Media Backups"中为每个插入的可移动媒体创建一个子文件夹。配置文件支持 :可以创建不同的配置文件,针对不同的闪存驱动器或存储卡设置独立的备份参数。仅复制更新的文件 :只备份更新或修改过的文件,可选保留旧版本的文件。设置迁移 :设置保存在INI文件中,随可执行文件一起复制以保留用户的自定义设置。透明的备份过程 :购买许可并注册后,备份过程可以在后台自动执行,无需用户交互或显示进度对话框。这些功能使得USBFlashCopy成为一个方便、高效的工具,特别适用于需要定期备份闪存驱动器和存储卡数据的用户。
USBFlashCopy 1.17的底层原理主要围绕以下几个关键点:
设备检测和监控 :USBFlashCopy通过监控系统中的USB设备和存储卡插槽来检测插入的闪存驱动器或存储卡。它可能使用Windows操作系统提供的相关API来实现这一功能,例如注册表监控或者设备管理器API。文件复制和同步 :一旦检测到新插入的闪存驱动器或存储卡,USBFlashCopy会启动文件复制过程。它可能会使用Windows文件系统API(如CopyFile函数)来执行文件的实际复制操作。此过程中,它会检查目标文件夹中是否已存在相同文件名的文件,以决定是否要更新或覆盖旧文件。自动化和后台运行 :USBFlashCopy设计为后台服务或任务,一旦配置并注册,它会在Windows启动时自动启动并持续监控。这种后台运行的设计确保用户无需手动介入备份过程,从而保持数据的及时备份和保护。配置文件和设置管理 :用户可以创建和管理多个配置文件,每个配置文件针对不同的闪存驱动器或存储卡设置独特的备份参数。USBFlashCopy将这些设置保存在INI文件中,使得用户可以轻松管理和迁移设置。性能优化和资源管理 :USBFlashCopy的设计旨在尽可能减少对系统资源(如CPU和内存)的占用,以保证备份过程对系统的影响最小化。这包括选择合适的复制算法和优化文件IO操作。USBFlashCopy通过利用Windows操作系统的API和服务机制,实现了自动化、高效的闪存驱动器和存储卡备份功能,使得用户能够轻松保护重要数据而无需手动操作。
在Windows操作系统中,可以使用以下几种API来监控USB设备和存储卡的插入和拔出情况,从而实现类似USBFlashCopy的设备检测和监控功能:
Windows Management Instrumentation (WMI) :WMI是Windows的管理信息框架,可以通过查询WMI提供的相关类(如Win32_USBHub)来获取USB设备的信息,包括插入和移除事件。Windows注册表监控 :通过监控Windows注册表中的特定键值,可以实现对USB设备和存储卡插入事件的检测。具体来说,可以监控HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\UsbStor或HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB等相关注册表键值的变化。Windows设备管理器API :使用设备管理器API,可以枚举系统中的所有设备,并通过注册为接收设备变更通知来监控USB设备的插入和移除事件。相关的API函数包括SetupDiEnumDeviceInfo、SetupDiGetDeviceRegistryProperty等。Windows消息处理 :可以通过注册和处理Windows消息来捕获系统发出的设备插入和移除事件消息。常见的消息包括WM_DEVICECHANGE消息,通过Windows消息循环来捕获这些消息并执行相应的操作。这些API和方法可以单独使用,也可以结合使用,以实现对USB设备和存储卡插入事件的及时监控和响应。在实现类似USBFlashCopy的应用程序时,选择合适的API取决于具体的功能需求和实现方式。
在Windows操作系统中,实现文件复制和同步的过程通常会使用以下几种关键的文件系统API:
CopyFile :CopyFile函数用于将单个文件从一个位置复制到另一个位置。它提供了简单直接的文件复制功能,可以在不同的驱动器之间复制文件,并且可以选择是否覆盖已存在的目标文件。CopyFileEx :CopyFileEx函数与CopyFile类似,但提供了更多的选项和控制,例如支持更复杂的文件复制操作,支持取消和进度通知等。SHFileOperation :SHFileOperation函数是一个强大的文件操作函数,可以执行复制、移动、删除和重命名等操作。它支持批量操作和对文件操作的详细控制,适用于复杂的文件操作场景。MoveFileEx :MoveFileEx函数用于移动文件或目录,并支持原子移动操作、延迟到重启移动等特性。Robust File Copy (robocopy) :robocopy命令是一个Windows命令行实用程序,提供了高级的文件复制和同步功能,支持多线程、断点续传、增量复制等复杂的复制操作。这些API和工具提供了不同层次和方式的文件复制和同步功能。具体选择取决于应用程序的需求,包括复制的复杂度、性能需求、是否需要进度通知以及是否需要支持批量操作等因素。
USBFlashCopy实现后台运行和自动化的核心原理涉及以下几个关键方面:
注册为Windows服务 :USBFlashCopy可以通过注册为Windows服务的方式实现后台运行。Windows服务是一种特殊的应用程序,可以在系统启动时自动启动,并且在用户注销或系统关闭时继续运行。这种方式确保USBFlashCopy能够在系统启动后即可开始监控和处理USB设备的插入事件。Windows服务管理器 :通过Windows服务管理器(Service Control Manager,SCM),USBFlashCopy能够被管理、启动、停止和配置。这使得用户可以在系统中方便地设置和调整USBFlashCopy的运行行为,例如启动类型(自动、手动、禁用)、登录账户权限等。注册表设置 :USBFlashCopy可能会在Windows注册表中设置相关的启动参数和配置信息,以确保其在系统启动时正确初始化并自动启动。这些设置通常位于HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBFlashCopy等注册表键下。系统通知和事件监听 :USBFlashCopy需要注册并监听系统发出的设备插入和移除事件。这可以通过Windows消息机制或者更高级的设备管理API来实现。一旦USBFlashCopy检测到USB设备的插入事件,它会启动文件复制过程。文件系统操作 :一旦USBFlashCopy启动文件复制过程,它会使用适当的文件系统API(如前文提到的CopyFile、CopyFileEx等)来执行实际的文件复制操作。在复制过程中,它可能会检查目标文件夹中是否已存在相同文件名的文件,并根据预设的策略来决定是否更新或覆盖现有文件。通过这些设计和实现,USBFlashCopy能够在后台持续运行,实现对新插入USB设备的监控、数据备份和保护,从而减少用户手动操作的需求,提升数据的安全性和可靠性。
USBFlashCopy在性能优化和资源管理方面的底层原理包括以下几个关键策略和技术:
选择合适的复制算法 :USBFlashCopy会选择适合大多数情况的复制算法,以最大化复制速度和效率。常见的复制算法包括直接复制(直接从源文件复制到目标文件)、缓冲复制(使用缓冲区减少频繁的IO操作)、增量复制(仅复制修改过的部分)、并行复制(同时处理多个文件或多个线程复制同一文件)等。选择恰当的算法可以显著减少CPU和内存的占用,并提升复制效率。优化文件IO操作 :USBFlashCopy会通过优化文件IO操作来降低对系统资源的负荷。这包括合理设置文件读写缓冲区大小、减少不必要的文件操作次数、批量处理文件复制请求等。例如,通过合理设置缓冲区大小可以减少频繁的内存分配和释放,从而降低内存的使用率。异步IO操作 :使用异步IO操作可以提高USBFlashCopy的性能,特别是在处理大量小文件或者需要频繁IO操作的场景下。异步IO允许USBFlashCopy在等待IO操作完成的同时继续执行其他任务,有效提高了系统资源的利用率。资源管理和限制 :USBFlashCopy可能会实现资源管理和限制策略,以避免对系统资源过度占用。这包括设置最大并发复制任务数、限制每个任务的CPU使用率、监控内存消耗并及时释放不必要的内存等。通过这些管理措施,USBFlashCopy可以在备份过程中保持系统的稳定性和响应性。低优先级处理 :为了避免影响用户正在进行的其他重要任务,USBFlashCopy可能会将其自身设置为低优先级进程或服务。这样可以确保USBFlashCopy在后台运行时不会过多竞争系统资源,从而保证用户体验的流畅性。通过以上优化和管理策略,USBFlashCopy能够在进行USB设备数据备份时保证尽可能少的影响系统性能,同时保证数据备份的速度和可靠性。
USBFlashCopy的工作机制可以简述如下:
监控USB设备插入 :USBFlashCopy首先通过系统API或者驱动程序来监控系统中的USB设备插入事件。一旦检测到USB设备的插入,USBFlashCopy会触发相应的处理流程。目标文件夹设定 :用户可以预先设置或者在插入USB设备后选择备份的目标文件夹。这个文件夹通常是USBFlashCopy将要复制文件到的地方。文件复制策略 :USBFlashCopy会根据预设的复制策略(如仅复制新文件、覆盖已存在文件等)开始复制USB设备中的文件到目标文件夹。复制过程中,它会根据需要创建子文件夹、处理文件名冲突等。后台运行和优化 :USBFlashCopy通常作为Windows服务或者后台进程运行,这意味着它可以在系统启动后即开始监控USB设备,而不需要用户手动启动。它会尽可能减少对系统资源的占用,通过优化的复制算法和文件IO操作来提高效率。用户界面与配置 :USBFlashCopy通常提供一个简单的用户界面或者配置界面,允许用户设置备份的参数和策略,如目标文件夹、复制方式、排除文件类型等。这些设置可以帮助用户根据实际需求定制备份行为。完成与反馈 :当USB设备中的文件复制完成后,USBFlashCopy可能会提供通知或者日志记录,以告知用户备份的状态和结果。这有助于用户了解备份过程的完成情况。通过这些机制,USBFlashCopy能够在保证数据备份的同时,尽可能地减少用户的操作和系统资源的消耗,提高备份效率和用户体验。
USBFlashCopy的架构通常包括以下几个关键组件和层次:
用户界面(UI) :USBFlashCopy可能包含一个简单的用户界面,允许用户进行基本的设置和操作。这个界面通常用于选择目标文件夹、设置备份策略、查看备份进度和结果等功能。配置管理器 :配置管理器负责管理用户的各种设置选项,如备份目录、文件排除规则、复制策略等。这些设置可以通过UI界面进行配置,并被传递给后台服务或处理器。监视引擎 :USBFlashCopy的核心是监视引擎,它负责实时监控系统中的USB设备插入事件。一旦检测到USB设备插入,监视引擎会触发后续的备份处理流程。备份处理器 :备份处理器是USBFlashCopy的关键组件之一,负责实际的文件复制和管理。它根据用户配置的备份目标和策略,将USB设备中的文件复制到指定的目标文件夹中。文件操作优化模块 :这部分模块主要负责优化文件复制的过程,包括选择合适的复制算法、管理缓冲区、优化IO操作等。通过优化文件操作,可以提高备份速度并减少对系统资源的影响。日志和通知系统 :USBFlashCopy通常会记录备份过程的日志,并且在备份完成或出现错误时向用户发送通知。这些通知可以通过UI界面显示,帮助用户了解备份的状态和结果。后台服务或进程 :USBFlashCopy通常作为一个后台服务或者进程在系统中运行,以确保即使在用户未登录或者界面未打开时,也能够进行USB设备的监控和文件备份。这些组件共同工作,构成了USBFlashCopy的整体架构。它的设计目标是简化用户的备份操作,同时最大限度地减少对系统性能的影响,提高备份的效率和可靠性。
USBFlashCopy适用于多种场景,主要涵盖以下几个方面:
个人数据备份 :用户可以利用USBFlashCopy将自己计算机上的重要数据备份到插入的USB设备中。这种场景通常涵盖个人文件、照片、视频等,确保在计算机发生故障或需要临时移动数据时能够快速恢复或传输数据。移动办公 :对于频繁需要在不同工作站之间传输数据的用户,USBFlashCopy提供了一个便捷的方式来管理文件同步和备份。例如,设计师、摄影师、销售人员等可以使用USBFlashCopy在不同设备之间同步工作文件或备份重要数据。教育和学术环境 :在教育机构或学术研究中,USBFlashCopy可以用来备份学生或研究人员的项目文件和研究资料。学生可以通过将课堂作业和报告备份到USB设备来确保数据的安全性和可移植性。企业数据管理 :小型企业或个体经营者可以利用USBFlashCopy管理和备份公司文件、财务记录等重要数据。这种方式不仅方便,而且可以帮助在办公室设备之间轻松同步数据。移动存储设备管理 :USBFlashCopy还适合于管理和维护大量移动存储设备的场景,如在学校、图书馆、企业等需要定期备份和更新数据的场所。USBFlashCopy的应用场景主要集中在需要便捷、快速且安全地进行USB设备数据备份和同步的各种情境下,帮助用户有效管理和保护重要数据。
使用下面的链接可以下载USBFlashCopy。请注意,USBFlashCopy无需安装,您可以将存档解压缩到任意文件夹,并从那里运行USBFlashCopy。
建议的文件夹包括:C:\USBFlashCopy 和 C:\Program Files\USBFlashCopy
最新版本:USBFlashCopy 1.11 版本历史如下:
[版本 1.10, 2014-11-2] 增加了基于安装程序的版本[版本 1.9, 2014-02-23] 修复问题[版本 1.8, 2013-07-30] 插入媒体时按住 "Shift" 键可跳过复制提高了复制速度[版本 1.7, 2012-04-10] 添加了次要目标路径选项添加了移动文件而非复制的能力[版本 1.6, 2011-08-05] 添加了排除指定类型文件的筛选器(或掩码)添加了文档文件类型(包括 XLS、XLSX、DOC、DOCX、PPT、PPTX、RTF、TXT、ODT、ODS、ODP 文件)添加了 "浏览..." 按钮以选择目标路径添加了 "%MyDocs%" 宏,用于指定目标路径中的“我的文档”文件夹[版本 1.5, 2010-09-13] 静默模式更快速兼容 Windows 7可设置目标驱动器上要保留的最小剩余空间[版本 1.0, 2008-03-01] 基础版本备份可移动设备自动检测新媒体的到来允许为每个设备指定复制速度静默复制可在后台进行嵌入式Linux系列第5篇:Nand Flash根文件系统制作
1.引言
之前系列的文章介绍了如何编译Uboot、Kernel以及使用默认的ramdisk根文件系统来构建一个完整的嵌入式Linux系统,本篇文章介绍如何从头制作一个放在NAND Flash上的根文件系统。经过我这段时间的总结,rootfs相关的编译、配置等工作还是比较麻烦的。所以你可能会看到一般做核心板的第三方厂家会建议初学者直接使用现成提供的文件系统,比如一个做NUC972核心板的厂家,其文档里这么描述:
再比如另外一个做NXP I.MX6核心板的厂家,其文档里这么描述:
他们都建议初学者直接使用他们提供好的文件系统。但是我还是强烈建议大家自己一步一步的去操作制作一次,因为一是这有助于你理解根文件系统是怎么来的,最小的能用的根文件系统包含了哪些东西,二是将来你很有可能需要对文件系统做一些定制化的裁剪和修改工作,只有自己做了一遍你对会明白这个东西到底是怎么回事,比如我原来就搞不清楚Busybox、Buildroot、Yocto这些名词在Linux中的作用,现在随着实践增多,就大概知道他们的用处了。
2.环境介绍
2.1.硬件
因为本系列博客都会以NUC972为平台来介绍。
2.2.软件
本篇新用到的软件工具一个是busybox,它用来生成文件系统里的几个最基本的文件夹,二是打包工具mkyaffs2,它用来生成能直接烧录到板子里的镜像文件。
大家有没有注意,我为什么每次都把这个官方的链接放过来,让大家自己去下载,原因是我们要知道我们用的东西的源头在哪里,最官方的资料渠道在哪里,这很重要。
我们这次要实现的目标是:自己亲手制作的文件系统能够跑起来,同时能够运行我们第二篇文章介绍的Helloworld程序。
3.使用Busybox制作根文件系统
1)进入到nuc972文件夹,新建一个tool文件夹,用来存放busybox、mkyaffs2等工具,把上面下载的NUC970_Linux_Applications-master.zip文件解压到tool文件夹里,因为解压后含有NUC970_Linux_Applications-master,我们把里面的内容移出来,然后删除掉空的NUC970_Linux_Applications-master文件夹和NUC970_Linux_Applications-master.zip源文件。然后进入到busybox目录里。同样的,在编译前要设置交叉编译的环境变量。
cd ~/nuc972
mkdir tool
unzip NUC970_Linux_Applications-master.zip
cd NUC970_Linux_Applications-master
mv ./* ../
cd ..
rm NUC970_Linux_Applications-master -fr
rm NUC970_Linux_Applications-master.zip
cd busybox-1.22.1/
source ~/nuc972//toolchain/environment.sh
2)make menuconfig 进入配置界面
make menuconfig
我们这里就设置一个地方,其他的全部使用默认配置。
修改make install生成的文件夹路径,我们把默认的./_install改成nuc972目录下的rootfs。
Busybox Settings --->
Installation Options ("make install" behavior) --->
(../../rootfs) BusyBox installation prefix
3)make 编译
make
编译成功后显示如下:
编译完成之后我们可以查看一下busybox的文件属性,可以看到如下信息,说明我们交叉编译的没问题。
4)make install 安装
make install
这样就在前面我们设置的地方生成一个rootfs的文件夹,进到里面看一下
cd ~/nuc972/rootfs
ls
bin、sbin、usr :存放一些命令
linuxrc :挂载根文件系统时,第一个执行的文件
4)再创建几个文件夹
mkdir etc lib dev
5)在 rootfs 目录的dev目录下创建设备节点
cd dev
sudo mknod console c 5 1
sudo mknod null c 1 3
6)在根文件系统rootfs/etc目录下创建一个inittab 文件,在文件里面填写:.console::askfirst:-/bin/sh
cd ../etc
vim inittab
4.文件系统打包
1)进入到tool文件夹的yaffs2utils目录里
cd yaffs2utils
2)编译,生成mkyaffs2
make clean
make
注:编译这个工具,不需要修改Makefile,用file看下属性,它是在x86-64运行的,这是没问题的,因为它就是在Ubuntu下使用的,不是在嵌入式环境下去执行使用的。
将它复制到/usr/bin下以后用起来方便了,可以直接使用这个指令了,你可一在终端敲mkya,然后TAB建看不能出来。
sudo cp mkyaffs2 /usr/bin/
4) 生成文件系统
sudo mkyaffs2 --inband-tags -p 2048 rootfs rootfs_yaffs2.img
5.内核修改
内核也要做一定的修改,具体如下:
1)make menuconfig进入到内核配置界面
make menuconfig
2)默认用的RAM filesytem 需要去掉
General setup —>
[ ] Initial RAM filesystem and RAM disk (initramfs/initrd) support
3)默认的Boot option需要修改成如下:
Boot options --->
(noinitrd root=/dev/mtdblock2 rootfstype=yaffs2 rootflags=inband-tags console=ttyS0,115200n8 rdinit=/sbin/init mem=64M)
4)NAND Flash驱动相关配置
Device Drivers --->
Generic Driver Options --->
<*> Nuvoton NUC970 FMI function selection
Select FMI device to support (Support MTD NAND Flash) --->
5)选中MTD的支持
Device Drivers --->
<*> Memory Technology Device (MTD) support --->
<*> Caching block device access to MTD devices
-*- NAND Device Support --->
-*- Nuvoton NUC970 MTD NAND --->
NUC970 NAND Flash pin selection (Port C) --->
6)选中yaff2文件系统的支持
File systems --->
[*] Miscellaneous filesystems --->
<*> yaffs2 file system support
7)保存配置,编译
6.结果查看
6.1.验证文件系统是否可用
1)将上述生成的kernel 970uimage、文件系统rootfs_yaffs2.img、还有之前第三讲生成的uboot.bin,uboot-spl.bin,以及env.txt 下载到板子里,env.txt做了一些改动,主要是加入了boocmd那一行,这样下载进去就能直接启动了。
baudrate=115200
bootcmd=nboot 0x7fc0 0 0x200000; bootm 0x7fc0
bootdelay=1
ethact=emac
ethaddr=00:00:00:11:66:88
stderr=serial
stdin=serial
stdout=serial
烧写前,最好对芯片进行一次Erase。几个文件的烧写类型及地址大家注意下,别搞错了。
2)上电,看看效果,调试串口打印信息如下:
这一次很顺利啊,一次就成功了,这就说明我们上述做的根文件系统是可以正常使用的了。
6.2.验证helloworld能否在板子上运行
我们还要看看我们之前编译的helloworld程序能不能运行,我们把helloworld放到板子里去,怎么把这个文件放到板子上呢?有以下几种方式:
a) 把Helloworld在Ubuntu下放到rootfs文件夹里,然后按照上述的方法打包、下载进去。
b)通过scp或者NFS服务,直接通过网口放到板子里
c) 先放到U盘里,然后U盘插入到板子上,再复制过去
方法a)自然没问题,不过有些麻烦,方法b)现阶段我们的文件系统并不支持,暂时先不弄了,下一篇文章会介绍scp的移植,我们来试试方法c)吧
1)插入U盘到电脑上,把helloworld拷贝过去
2)把U盘插入到板子上,这时调试串口会自动输出如下信息,提示我们有USB Mass Storage设备接入了,看来内核已经把USB这部门驱动已经做进去了。这不是有点像我们给PC机重装Windows系统的过程,默认鼠标键盘也是可以直接使用的。
我们进入到/dev目录里,可以看到有sda1设备,LINUX所有的存储设备都是映射成"文件"来访问的,包括U盘、光驱、硬盘等。这个sda1就对应我们刚插入的U盘。
那么该如何访问U盘的东西呢?
我们需要挂载,使用mount指令,我们执行以下命令:
mkdir mnt
cd mnt
mkdir usb
cd usb
mount -t vfat /dev/sda1 /mnt/usb
cd /
mkdir opt
cp /mnt/usb/helloworld /opt
完成的事情是把sda1挂载到了/mnt/usb目录上,这样/mt/usb目录里就有了U盘里的内容,然后再复制到了系统的/opt目录。
我们在/opt目录里执行./helloworld,提示如下错误:
-/bin/sh: ./helloworld: not found
这是怎么回事呢?原因很简单,helloworld的执行是需要依赖一些库的,不可能系统里什么都没有就执行能执行成功了。所以需要我们把交叉编译链~/nuc972/toolchain/arm-2014.05/arm-none-linux-gnueabi/libc/lib里的库文件复制到板子的lib目录里。
可以先到arm-2014.05/arm-none-linux-gnueabi/libc/lib目录中,压缩下
tar -cvf lib.bin *
然后通过U盘放到板子的/lib目录中解压
tar -xvf lib.bin
这样操作之后,再次执行helloword,结果如下:
另外可以对板子断电-再上电,看看我们之前操作的内容都还在,因为它是存到NAND Flash里的,所以断电是不丢失的。
7.结束语
如果你亲自动手实现了这篇文章介绍的所有内容,相信你对根文件系统一定有了一个非常感官的认识。包括这篇在内,我用了5篇文章一直在介绍嵌入式Linux基础环境相关的内容,你应该也能感受到这和我们以前接触的单片机开发还是有着较大的差异。从下一篇文章开始,我们就正式进入到具体的应用了。我会陆续介绍GPIO、UART使用;网络通信;WIFI使用;摄像头采集数据;EC20 4G模块使用;QT编程;Opencv使用等。
相关问答
flash 中怎么复制影片剪辑 - 懂得要在Flash中复制影片剪辑,可以使用以下步骤:1.在舞台上选择要复制的影片剪辑。可以使用选择工具或直接单击影片剪辑。2.按Ctrl+C(Windows)或Command...
flash 中怎么复制影片剪辑 - 172****6192 的回答 - 懂得要在Flash中复制影片剪辑,可以使用以下步骤:1.在舞台上选择要复制的影片剪辑。可以使用选择工具或直接单击影片剪辑。2.按Ctrl+C(Windows)或Command...
flash 按住什么键可以移动并复制副本?代码进行...复制图形时,需要按住alt键进行拖动复制,这样就可以不停地复制了。在编写代码时,可以先用鼠标拖选需要复制的代码,然后按住ctrl键,就可以对所选...
flash 怎么复制图层到另一个文件?回答如下:在Flash软件中,可以通过以下步骤将图层复制到另一个文件:1.打开源文件和目标文件,确保两个文件都已打开。2.在源文件中选择要复制的图层(可以...
Flash 快捷键大全,完整收集?1、箭头工具【V】部分选取工具【A】线条工具【N】套索工具【L】钢笔工具【P】文本工具【T】椭圆工具【O】矩形工具【R】铅笔工具【Y】画笔工具【B】任意变形工...
从U盘上复制了一个 flash ,可一直打不开,怎么处理???-ZOL问答luandandan有两种办法处理:1种是安装flash播放器:http://rj.baidu.com/soft/detail/17153.html?ald这个地址可以去下载安装,安装好后可以双...
flash 中有取样 工具 吗?是的,Flash中有取样工具,称为“取样器”(Eyedropper)。取样器可以帮助您选择画布上的颜色,并将其应用于您正在编辑的对象。您可以使用取样器来选择画布上的...
flash 组合快捷键是什么?工具材料:Flash所有版本操作方法01【FLASH快捷键一】A箭头L套索H移动M放大镜I墨水瓶U油漆桶P铅笔B笔刷N直线T文字O...工具材料:...
flash 怎样直接把图形全部复制?首先点击全部,然后点击恢复,就全部恢复了首先点击全部,然后点击恢复,就全部恢复了
批量下载视频的方法?以下是几种批量下载视频的方法:1.使用第三方下载工具:有一些第三方下载工具可以帮助你批量下载视频,比如迅雷、IDM等。你只需要将需要下载的视频链接复制到下...