![](/img/trans.png)
[英]Getting an exception when try to use NTPClient in a custom class (ESP8266)
[英]ESP8266 NtpClient parse int response into char* with 2 digits
我正在编写时间调度程序,用于在微处理器 NodeMCU 的特定时间切换 sockets。 我面临解析值的问题。 我从数据库中获取值(例如'08:30')并保存到char *。 我正在使用 NtpClient 获取当前时间,但它是 int 值。 我的想法是从小时、':' 和分钟构建 char*,并与我在 DB 中的值进行比较,但我有两个问题:
我在 c++ 方面没有丰富的经验,我可以自己做,但我想以最有效的方式做,因为我至少每 50 秒运行一次这个脚本。
我对 C++ 的经验很少。 另外,Arduino IDE 不全是 C++。 我的解决方案是:
int intLength( int N )
{
if ( N < 0 ) return 1 + intLength( -N );
else if ( N < 10 ) return 1;
else return 1 + intLength( N / 10 );
}
void setSocketsState() {
int currentHour = timeClient.getHours();
int currentMinute = timeClient.getMinutes();
char currentHourChar[10];
char currentMinuteChar[10];
itoa(currentHour, currentHourChar, 10);
itoa(currentMinute, currentMinuteChar, 10);
char dest[24] = "";
if (intLength(currentHour) == 1) {
strcat(dest, "0");
}
strcat(dest, currentHourChar);
strcat(dest, ":");
if (intLength(currentMinute) == 1) {
strcat(dest, "0");
}
strcat(dest, currentMinuteChar);
char* dateToCompare = dest; // result: HH:MM
socket1.handleCurrentTime(dateToCompare);
socket2.handleCurrentTime(dateToCompare);
socket3.handleCurrentTime(dateToCompare);
socket4.handleCurrentTime(dateToCompare);
}
我前面还有很长的路要走。 如果您想查看我项目的这一部分,请点击以下链接: https://github.com/wojtaszek171/SmartHome/blob/master/esp8266/ESP1/ESP1.ino
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.