c - 我可以从传感器读取值然后将其添加到 RF24l01 网络的 JSON 字符串吗
问题描述
我读了几个例子,值是这样的字符串或数字
json[] =
"{\"sensor\":\"gps\",\"time\":1351824120,\"data\":[48.756080,2.302038]}";
例如,我有 2 个值:
pack0.humidity = dht.readHumidity();
pack0.temperature = dht.readTemperature();
我可以像这样读取那些温度和湿度并将其添加到循环()中的 json
json[] =
"{\"Temperature\": /*temp here*/,
\"Humidity\":/*humid here*/}";
谁能给我一个项目的例子。多谢。我当前的 rf24 代码
struct package0
{
float temperature = 0;
float humidity = 0;
int soil = 0;
};
typedef struct package0 Package0;
Package0 pack0;
void loop()
{
delay(2000);
pack0.humidity = dht.readHumidity();
pack0.temperature = dht.readTemperature();
pack0.soil = map(analogRead(SOILPIN), 0, 4096, 100, 0);//convert to percentage
if (isnan(pack0.humidity) || isnan(pack0.temperature))
{
Serial.println(F("Failed to read from DHT sensor!"));
return;
}
RF24NetworkHeader header(master00);
bool ok = network.write(header, &pack0, sizeof(pack0));
解决方案
考虑使用ArduinoJson,它将为您进行 JSON 编码。这个库的优点是它可以很容易地在以后修改你的数据模式。
或者你可以自己做,只需使用snprintf
:
const int BUFFER_SIZE = 48; // Choose a suitable number here
char json[BUFFER_SIZE];
snprintf(json, BUFFER_SIZE, "{\"Temperature\":%f,\"Humidity\":%f}", pack0.humidity, pack0.temperature);
json
然后将包含您的 JSON 数据。使用snprintf
确保写入不会溢出。
推荐阅读
- c# - 如何使 C# ReadLine() 方法保持相同的非英文字符?
- reactjs - Redux:将动作创建者导入另一个导致 typeError 'x is not a function'
- python - 使用 numpy 读取结构化二进制文件:fromfile vs. read & frombuffer
- android - 保存状态后如何安全弹出 FragmentManager 的回栈
- powershell - 在 TCL 代码中 - 如何读取 Windows 文本文件?
- haskell - Haskell:将字符串解析为自定义类型
- javascript - 如何从 JS 移植到 REACT
- ios - BLE 总是从 CBPeripheral 设备获取“状态 = 连接”
- sql-server - T-SQL MERGE:每个 GROUP BY 表达式必须至少包含一个不是外部引用的列
- flutter - Flutter 的 Jaguar 客户端