错误:从“char *”到“uint32_t”的转换无效

时间:2017-03-22 15:22:42

标签: c++ arduino char invalid-characters uint

我正在尝试手动设置RTC时钟。 当自动doen时,这是工作代码:

clock.setDateTime((__DATE__, __TIME__));

但现在我想手动设置它,这就是我想要的:

char dateTime[20];
strcat(dateTime, "2017,03,22,16,20,04");
//clock.setDateTime((__DATE__, __TIME__));
clock.setDateTime(dateTime);

我收到以下错误(在最后一行):

error: invalid conversion from 'char*' to 'uint32_t {aka long unsigned int}' [-fpermissive]

如何解决?

编辑: 这就是setDateTime的定义方式:

void setDateTime(uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second);

2 个答案:

答案 0 :(得分:2)

setDateTime()将日期作为一系列整数:

setDateTime(year, month, day, hours, minutes, seconds);

奖金:根据man strcat

char *strcat(char *dest, const char *src);
     

描述

     

strcat()函数将 src 字符串附加到 dest 字符串,...

因为你这样使用它:

char dateTime[20];
strcat(dateTime, "2017,03,22,16,20,04");

"2017,03,22,16,20,04"追加到单位化内存中,这是未定义的行为

答案 1 :(得分:1)

setDateTime()接受int作为参数,但你给它char数组。

电话应该是:

clock.setDataTime(2017, 3, 22, 16, 20, 4);