这里是一个在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: } |
原文:http://www.cnblogs.com/bruceleeliya/p/3600501.html