问题描述
VS2019进行编程,使用DS1302库和GFX库时出现编译错误,提示找不到与之对应的函数。相同的代码,直接使用arduino IDE能够通过,但是有警告。
错误代码:
- DS1302:
Time t(2021, 1, 12, 00, 26, 00, 2);
- GFX
//显示汉字声明
static const unsigned char PROGMEM zi[] =
{
0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x1F, 0xF0, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1F, 0xF0,
0x10, 0x10, 0x10, 0x10, 0x1F, 0xF0, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1F, 0xF0, 0x10, 0x10
}; //"自
oled.drawBitmap(0, 0, zi, 16, 16, 1);
分析原因
查看函数声明和提示的警告发现:Time类中的最后一个参数类型是枚举型Day,而我的代码中是常数2(vs判定其类型默认为int)。draBitmap()函数中第3个参数类型是uint8_t *,而我的代码中用的是unsigned char。从而造成了参数类型无法识别。
解决办法
修改参数类型。
Time t(2021, 1, 12, 00, 26, 00, Time::Day::kMonday);
typedef unsigned char uint8_t;
static const uint8_t PROGMEM zi[] =
{
0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x1F, 0xF0, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1F, 0xF0,
0x10, 0x10, 0x10, 0x10, 0x1F, 0xF0, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1F, 0xF0, 0x10, 0x10
}; //"自
oled.drawBitmap(0, 0, zi, 16, 16, 1);