首页 > 其他 > 详细

Arduino 封装库

时间:2014-03-14 16:42:47      阅读:550      评论:0      收藏:0      [点我收藏+]

这里是一个在Arduino平台下将常用的代码以库的形式封装的示例。

 

第一步:在Arduino的安装目录下的对应目录建立文件夹 C:\Program Files (x86)\Arduino\libraries\CMRConfig

第二部:添加2个文件 CMRConfig.h CMRConfig.cpp, 代码如下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/*
 * 配置类,数据保存在 Mega2560 的EEPROM中。
 *
 * [0,63]   保存集中器的CID
 * [64,127]     保存集中器上访的ServerIP地址和端口
 * [2048,4095]  保存从机的ID列表
 */
 
#ifndef CONFIG_H
#define CONFIG_H
 
#include <Arduino.h>
#include <EEPROM.h>
 
class CMRConfig {
    public:
        String getCID();
        void setCID(String value);
        String getMBusIds();
        void setMBusIds(String value);
        String getServerInfo();
        void setServerInfo(String value);
    private:
        String getString(int start, int end);
        void setString(String value, int start, int end);
};
 
#endif

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include "CMRConfig.h"
 
String CMRConfig::getCID()
{
    return getString(0, 64);
}
 
void CMRConfig::setCID(String value)
{
    setString(value, 0, 64);
}
 
String CMRConfig::getMBusIds()
{
    return getString(2048, 2048);
}
 
void CMRConfig::setMBusIds(String value)
{
    setString(value, 2048, 2048);
}
 
String CMRConfig::getServerInfo()
{
    return getString(64, 64);
}
 
void CMRConfig::setServerInfo(String value)
{
    setString(value, 64, 64);
}
 
String CMRConfig::getString(int start, int maxLength)
{
    String result = "";
    for (int i = start; i < start + maxLength; i++) {
        char c = (char)EEPROM.read(i);
        if (c == ‘\n‘) break;
        result += c;
    }
    return result;
}
 
void CMRConfig::setString(String value, int start, int maxLength)
{
    if(!(value.endsWith("\n") && value.length() <= maxLength))
    {
        value = value.substring(0, maxLength - 1) +  ‘\n‘;
    }
    int len = value.length();
    for (int i = start; i < start + len; i++) {
        EEPROM.write(i, value.charAt(i));
    }
}

 

第三步:使用示例,代码如下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <CMRConfig.h>
#include <EEPROM.h>
 
CMRConfig cfg;
 
void setup() {
  Serial.begin(9600);
  String cid = "im cid";
  cfg.setCID(cid);
  Serial.println(cfg.getCID());
}
 
void loop() {
  // put your main code here, to run repeatedly:
 
}

  

Arduino 封装库,布布扣,bubuko.com

Arduino 封装库

原文:http://www.cnblogs.com/bruceleeliya/p/3600501.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!