zoukankan      html  css  js  c++  java
  • Arduino 封装库

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

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

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

    /*
     * 配置类,数据保存在 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
    
    #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 == '
    ') break;
    		result += c;
    	}
    	return result;
    }
    
    void CMRConfig::setString(String value, int start, int maxLength)
    {
    	if(!(value.endsWith("
    ") && value.length() <= maxLength))
    	{
    		value = value.substring(0, maxLength - 1) +  '
    ';
    	}
    	int len = value.length();
    	for (int i = start; i < start + len; i++) {
    		EEPROM.write(i, value.charAt(i));
    	}
    }
    

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

    #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:
    
    }
    

      

  • 相关阅读:
    操作系统 进程(下)
    操作系统 进程(上)
    进程的执行状态
    操作系统之内存与进程
    阿里巴巴一道笔试题
    ASP.NET 验证码 不同浏览器 不刷新问题
    Android常用控件之GridView使用BaseAdapter
    spoj 8222 Substrings (后缀自动机)
    【每天一个Linux命令】13. Linux中whereis命令的用法
    JSP 文件上传下载系列之二[Commons fileUpload]
  • 原文地址:https://www.cnblogs.com/bruceleeliya/p/3600501.html
Copyright © 2011-2022 走看看