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

      

  • 相关阅读:
    javascript阻止子元素继承父元素事件
    UTC 时间转化为北京时间
    uniapp中引入less文件
    HDU 1002 A + B Problem II(大数据)
    FatMouse's Speed(dp)
    Monkey and Banana(dp)
    Piggy-Bank(dp,背包)
    Longest Ordered Subsequence(最长上升子序列,dp)
    我的第一篇博客
    redis优化方案
  • 原文地址:https://www.cnblogs.com/bruceleeliya/p/3600501.html
Copyright © 2020-2023  润新知