c++ - ESP8266 NtpClient 将 int 响应解析为 char* 2 位数字
问题描述
我正在为微处理器 NodeMCU 编写用于在特定时间切换套接字的时间调度程序。我面临解析值的问题。我从数据库中获取值(例如'08:30')并保存到char *。我正在使用 NtpClient 获取当前时间,但它是 int 值。我的想法是从小时、':' 和分钟构建 char*,并与我在 DB 中的值进行比较,但我有两个问题:
- 我需要从小时和分钟创建 2 位 char*。
- 我需要加入这两个字符串
我在 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
推荐阅读
- javascript - 如何在 vue.js 中突出显示用户当前所在页面的链接?
- amazon-emr - AWS EMR Ganglia 控制面板无法访问 - 403 Forbidden
- javascript - 如何在公共reactjs中访问文件
- python - Pandas groupby() 合并不同的字符串列表
- hyperledger-fabric - Hyper Ledger Fabric - 如何获取网络的所有组织(而不是对等方)的名称?
- elasticsearch - elasticsearch must_not 返回错误值
- javascript - 获取Angular中两个数字之间的最大公约数的函数
- python-3.x - Python3 - 创建逗号分隔表而不从两个列表创建 csv 文件
- sql-server - 从后续行中减去值
- android - 在 JUnit 中使用 Room 测试多个功能