动态变量名称构建,连接

时间:2017-01-27 16:23:26

标签: c++ variables arduino concatenation concat

我的问题涉及如何使用arduino轻松访问大量变量的主题。我想知道是否有可能在循环中动态更改变量名称。我的英语不是最好的,所以让我用我正在处理的代码解释。

我有一台小型热敏打印机。印刷方法来自adafruit热印刷库

-0

我创建了一个如下所示的位图字体:

void Adafruit_Thermal::printBitmap(int w, int h, const uint8_t *bitmap, bool fromProgMem) {
  ...
}

我喜欢在这个for循环中打印出一封信:

static const uint8_t PROGMEM Char_32[] {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
}; // Char 032 ( )
static const uint8_t PROGMEM Char_33[] {
    0x00, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x00
}; // Char 033 (!)
... for each caracter

Normaly我会采用2d数组并打印出来:

for(j = 0; j <= messageLength - 1; j++){  // Go through each character in the message.
  int character = message[j];  // reads and stores the ASCII value of the current Character        
  printer.printBitmap(letter_width, letter_height, Char_XX);  // i like to print the specific character
}

但是,我的字母会比8x8像素大得多,而且我的数组变大了。那么有可能解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

从您的描述中可以看出,您遇到了内存使用问题。 Arduino官方文档表明,低端Arduino主板的代码标记为31.5Kb of Flash Memory(32 - 0.5) - 或PROGMEM,其他系统最高为248Kb(256 - 8)。

根据你的评论,如果每个字符占用1224字节的内存(或1.2Kb),你将在前一个系统中用25个字符排除这个限制(甚至不足以覆盖字母表,没有别的!)和后者中的202个字符。

所以这取决于您正在构建的确切系统,但很明显,根据您使用的字符大小,您将会遇到问题这一切,即使在更大的系统中(因为这个内存容量将与其他类似大小的结构共享)。

所以,问题的简短答案:您需要压缩数据。我的建议是缩小每个字母使用的数据量(可能将两个尺寸的尺寸减小一半),然后在运行时写入输出设备(即显示设备)时将其展开。