如何解决ESP8266 NtpClient 将 int 响应解析为带有 2 位数字的 char*
我正在为微处理器 NodeMCU 编写用于在特定时间切换套接字的时间调度程序。我在解析值时遇到问题。我从数据库中获取值(例如“08:30”)并保存到 char*。 我正在使用 NtpClient 获取当前时间,但它是 int 值。 我的想法是从小时、':' 和分钟构建 char* 并与我从 DB 中的值进行比较,但我有两个问题:
- 我需要从小时和分钟创建 2 位字符 *。
- 我需要加入这两个字符串
我在 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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。