`
fantaxy025025
  • 浏览: 1311425 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

Aruduino项目文件拆分,Aruduino代码拆分,Aruduino功能拆分到不同文件

 
阅读更多

=

这是个基本问题,对发展了这么多年的arduino理应有了一套合理的解决方案。

=

 

拆分方法1:如何将Arduino的单文件分解成多个ino文件

arduino的ide自己有这个功能,可以把同一个工程(目录)下多个ino文件合并到一起编译。

这样的好处是,可以把不同的功能分布到不同的ino文件中,便于查找修改管理。

注意:多个ino文件是被ide自动合并成一个文件,所以多个文件就是一个文件的简单分割体,没有再多了。

好处是:多个文件当一个文件一样编写。坏处是只能适应小项目,人多了就乱了。

 

分解的办法,见下面的链接,就不挨个写了。

参考这个文:

https://www.geek-workshop.com/thread-11724-1-1.html

https://jingyan.baidu.com/article/c910274b9f4862cd361d2dd3.html 

 

拆分方法2:如何将Arduino的ino文件分解成多个.h和.cpp工程文件

这种方法便于重用和多人配合的较大项目。

既然分解成了.c .h .cpp文件,那么形式完全与cpp项目一致。

 

为了冗余,粘贴到下面:

from:https://blog.csdn.net/codalion/article/details/86014560

 

当用Arduino做复杂工程项目时,程序难免会变得很大。这时候要修改个别参数或函数的时候会变得麻烦,简而言之,项目程序管理难度增高了,程序代码维护会变得困难。这时候,就产生了将一个ino文件分解成多个功能相对独立的源文件,这样就便于针对性的管理代码了。

 

1. 需要做的准备

不是所有的代码都方便分解成多个cpp文件进行管理的,特别是编程时想到哪编到哪的,代码会异常的凌乱。这意味着,里面的函数关系,逻辑嵌套,变量使用等都是极度凌乱的。这样的代码很难分解开来。因此,如果着手做的是一个相对大的项目,一开始便要有整体规划代码的意识。

 

一是以功能需求对应各个子函数,尽量一个函数只完成一个功能,避免功能上的嵌套;

二是变量定义要清晰。

在对整体的代码有了比较清晰的规划后,便可以着手分解代码了。

2.功能函数代码的分解

首先,你需要在原来工程文件夹下新建一个头文件,如 config.h,然后将Arduino的硬件接口定义放在这里面。然后,按照功能划分,分别建立各个功能的cpp文件,如 motion.cpp 文件中放置定义了各种运动的函数。然后将各个函数的声明写到 config.h 中。(原来一个ino文件时,软件会自动加函数声明,但现在需要自己加了)如:void trun_left(int, int); 。其他各种功能也是如此。但个函数都划分成多个cpp文件后,就要来处理全局变量的问题了。

 

3.全局变量的声明

因为在一个地方定义的变量很可能在其他地方使用,因此,全局变量就很关键了。原涞单个ino文件时,只要在 setup() ,上面定义的变量都默认是全局变量,但现在不行了,需要自己在声明。操作方式如下:

 

在任一cpp中定义你需要的变量,建议定义在最关键的地方。如在motion.cpp中定义了int speed=255; ,而这个变量在其他cpp文件中也要使用到,所以第二步如下:

在config.h 文件中对这个变量进行声明,extern int speed; 这可以跟函数声明一样理解,在这里声明后,在其他地方就可以使用了。

不要想当然的在 config.h 中先定义在声明,这样编译不会出错,但在链接时会出错,显示出现重复定义。(别问我问什么,我这么干失败了)

通过在cpp中定义变量,在头文件中声明该变量的方式便可实现全局变量的使用了。

 

4. 必要的步骤

在完成上面的步骤后,你还需要除了ino文件外的各个文件里都包含 #include"Arduino.h",否则程序里的HIGH,LOW,OUTPUT,pinMode之类的将无法识别。此外,你的各个cpp文件应该加上头文件 #include“config.h”,不用<>,而用双引号的原因是尖括号引用的是标准库,而这里是自定义的头文件等。最后,你也要在ino文件中包含头文件 #include"config.h"。 ino文件以及头文件中都无需包含cpp文件。

 

5. 程序的管理

经过上述步骤后,你的程序将由一个包含了setup(),loop()函数的ino文件,一个头文件config.h, 以及许多实现各种功能的cpp文件。 ino文件就是你的主程序了,你想要实现的主干逻辑写在这里面。它通过调用各个cpp里函数来实现你的功能。头文件则包含了你所使用的Arduino的各个接口定义,所有函数的声明,以及全局变量的声明。 而cpp文件则是按照功能类别,将许多子函数集中在一起的源文件。

 

 

=

=

=

 

分享到:
评论

相关推荐

    SQL大文件拆分工具SQLDumpSplitter

    该工具的核心功能在于其智能地分析SQL文件的结构,识别INSERT语句和其他数据库操作,并按照这些语句进行拆分。这样,用户可以逐个处理这些小文件,降低了内存占用,提高了处理效率,同时也使得在不同的环境或者网络...

    将excel表格按A列拆分为多个文件VBA代码

    4、选择菜单栏:插入-模块,将以下代码复制到右边的代码框中,点击菜单:运行-运行子过程/用户窗体,直到弹出处理完毕对话框; 5、在文件夹中将生成拆分好的文件,可关闭这个EXCEL文件,选择不保存。

    SQLDumpSplitter 大Sql文件拆分成小文件

    SQLDumpSplitter的工作原理是解析SQL语句的结构,根据特定规则(如每N行、每个事务、每个CREATE TABLE语句等)来拆分文件。这样,用户可以设置合适的拆分条件,确保新生成的小文件在逻辑上是完整和可执行的。例如,...

    CSV表格拆分,可以把一个CSV文件按固定行数拆分成多个文件

    在处理大数据时,一个大型CSV文件可能会变得难以管理,这时就需要将它拆分成多个小文件。本教程将详细解释如何通过特定工具或编程方式实现CSV表格的拆分。 ### CSV文件的特点 1. **易读性**:由于CSV是纯文本格式,...

    PDF文件拆分工具

    6. **兼容性**:好的PDF拆分工具应支持不同版本的PDF文件,并能保证拆分后的文件在各种操作系统和PDF阅读器上都能正常打开和阅读。 7. **批量处理**:对于需要处理大量PDF文件的情况,某些工具提供了批量拆分功能,...

    大文件拆分

    1. **网络传输**:大型文件在网络上传输时可能会遇到带宽限制,拆分文件可以分批传输,减少单次传输的压力。 2. **存储限制**:某些存储系统可能对单个文件的大小有限制,拆分文件可以绕过这些限制。 3. **分发和...

    文件拆分与合并

    在IT领域,文件拆分与合并是一项常见的操作,特别是在处理大型文件时,为了方便传输、存储或管理,我们可能需要将大文件分割成若干小文件,之后再将这些小文件合并回原始文件。在这个场景中,`vc6.0`(Visual C++ ...

    文本文件按行拆分多个成文件

    - Linux/Unix命令行:`split`命令可以根据行数或大小拆分文件。 - Windows批处理:可以通过`for /F`循环和`more`命令实现拆分。 四、实际操作步骤 1. 打开终端或命令提示符。 2. 导航到大文件所在目录。 3. 使用...

    G代码拆分工具

    G代码拆分工具的主要功能就是将这样的大型程序拆分成更小、更易管理的部分,这样可以按顺序、按需加载到机床控制器中,便于操作员监控和控制生产流程。 G-Code_Split.exe 文件很可能是一个便携式的Windows应用程序...

    使用itextpdf将PDF大文件拆分成若干份指定大小文件.zip

    这是拆分文件的关键参数。 5. **遍历页面**: 遍历PDF的每个页面,使用`PdfCopy`或`PdfSmartCopy`类来创建新的PDF文件。这两个类可以合并PDF页面,同时优化对象,减少文件大小。 6. **动态拆分**: 当创建的新PDF...

    拆分与合并文件

    4. 文件完整性:在拆分文件前,备份原始文件以防意外,同时在合并后检查文件是否完整无误。 对于压缩包中的"拆分与合并文件",这可能包含了一系列用于演示或教学的音频文件,通过这些文件,用户可以亲手实践文件的...

    文件拆分合并工具.zip

    - 在拆分文件前,备份原始文件以防意外丢失。 - 使用可靠的工具,避免数据损坏。 - 确保所有拆分后的部分都妥善保存,丢失任何一部分都将导致无法完全恢复原始文件。 - 在合并文件时,遵循正确的顺序,否则可能...

    c++调用python接口实现压缩拆分文件功能

    在本项目中,Python编写了压缩和拆分文件的逻辑,然后通过`ctypes`库或其他类似的库(如`pybind11`)暴露这些功能给C++。`ctypes`是Python的内置库,可以直接调用C等级别的动态链接库(DLLs或SOs),而`pybind11`则...

    csv拆分工具.rar

    拆分后的文件更易于管理和上传到不同的系统。 8. **最佳实践**:在使用拆分工具前,最好备份原始数据,以防意外。拆分后,应检查新文件的完整性和准确性,确保数据拆分无误。 9. **进一步处理**:拆分后的CSV文件...

    FLASH文件拆分工具SWFQuicker

    5. 开始拆分并保存到指定位置。 **应用场景** 1. **教育资源拆分**:教育工作者可以利用SWFQuicker拆分教学动画,将其中的图片和音频用于课堂活动或课件制作。 2. **游戏资源回收**:游戏开发者可以拆分SWF游戏,...

    python csv拆分_workgy8_文件拆分_python_

    标签"workgy8"可能是特定项目或工具的标识,而"文件拆分"和"python"则明确了我们讨论的主题。 要实现这个功能,我们可以利用Python的内置模块`csv`和`os`。下面是一个详细的步骤和示例代码: 1. **导入所需模块**...

    PDF文件批量快速拆分图片源代码

    更令人称赞的是,该源代码还具备批量处理功能,可以深度扫描指定文件夹下的所有PDF文件,并一次性完成所有文件的图片拆分工作,大大节省您的宝贵时间,显著提升工作效率。 总之,无论是零散的单个PDF文件,还是海量...

    CSV 快速拆分工具

    7. **支持多种编码格式**:考虑到不同系统可能采用不同的字符编码,工具应能识别和处理UTF-8、GBK等常见编码。 8. **保存拆分历史**:记录拆分操作的历史,便于重复相同的操作。 9. **导出和导入配置**:保存和...

    Java实现文件拆分与合并

    ### Java实现文件拆分与合并 #### 一、文件拆分 ...综上所述,《Java实现文件拆分与合并》提供了详细的Java代码实现,不仅有助于理解和掌握文件拆分与合并的基本原理,还可以应用于实际项目中解决实际问题。

    按行拆分TXT文件成多个TXT集合(SplitFile)

    "按行拆分TXT文件成多个TXT集合(SplitFile)"这个标题涉及到一个实用工具,它能帮助用户将大型的TXT文本文件按照行数拆分成多个较小的TXT文件,便于管理和处理。这样的操作在处理大量数据时尤为有用,比如当一个文件...

Global site tag (gtag.js) - Google Analytics