Library的使用与编写

来自Duinopeak_COM
跳转至: 导航搜索

[English]
Arduino使用的普及很大程度上依赖于大量优秀而且易用的Library。Arduino的Library使用面向对象的C++类库形式,用户可以不需要知道Library的实现细节就能够把Library使用起来。
Arduino的Library通常存放在\arduino-1.0.5\libraries目录下。每个Library通常有个example的文件夹,里面有一些应用例子,方便用户可以快速的理解如何使用该Library。
Library的使用比较简单,下面重点介绍怎么写一个Library。
这里我们决定写一个简单的运算库,有以下一些函数:

int sum(int a, int b);
int minus(int a, int b);

第一个函数返回两个数的和,第二个函数返回两个数的差值。 首先,我们在libraries里面建一个Calc的文件夹,这是库的名字。 在Calc里面先建立一个头文件,Calc.h,往里面填写代码:

#ifndef __CALC_H__
#define __CALC_H__

class Calc{
public:
    int sum(int a, int b);                  // return sum
    int minus(int a, int b);                // return difference 
};
#endif

接着,建立源文件Calc.cpp:

#include "Calc.h"

int Calc::sum(int a, int b)
{
    return (a+b);
}

int minus(int a, int b)
{
    return (a-b);
}

为了方便用户了解库的使用,我们需要建立一个example文件件,以及在example里面有个demo,我们把这个demo命名为calc_test,代码如下:

// demo of calc library
#include <Calc.h>

void setup()
{
    Serial.begin(9600);
    Serial.print("10+15 = ");
    Serial.println(calc.sum(10, 15));
    Serial.print("100-19 = ");
    Serial.println(calc.minus(100, 19));
    
    Serial.println("Calc Library test over!");
}

void loop()
{

}

在使用Arduino IDE的时候,会看到有些库的函数会显示红色,而有的没有。显然,让函数名和头文件名以及一些宏定义显示成红色会让代码看着更加美观,同时便于检查错误。
为了让我们建立的这个库在IDE上能够显示成红色,需要添加一个keyboards.txt文件在Calc文件夹里面,keyboards.txt的内容如下:

#######################################
# Syntax Coloring Map For Calc
#######################################

#######################################
# Datatypes (KEYWORD1)
#######################################
Calc	KEYWORD1
calc	KEYWORD1

#######################################
# Methods and Functions (KEYWORD2)
#######################################
sum	KEYWORD2
minus	KEYWORD2

#######################################
# Constants (LITERAL1)
#######################################

上面可以看到,类名或者文件名写在KEYWORD1前,函数名写在KEYWORD2前。至于LITERAL1,用来高亮宏定义名的,这个库里面没有涉及到,所以空着。需要注意的是,名称和KEYWORD1之间有且只能一个制表符,不能是空格。
于是,我们的库写好了,运行也很正常。
文件:Library的使用与编写.png