c++ - 如何使 BLE 服务器仅在状态发生变化时通知?
问题描述
我正在使用 Arduino IDE 在我的 esp32 上使用 ble,并试图做到这一点,因此当有人打开 LED 时,esp32 会通过“ON”或“OFF”通知客户。目前使用我的代码,每次循环时都会发送更新,但我只想在引脚 15 的值发生变化时通知。
我想我需要探索当事情发生变化时想要发送 serial.print 的人的相同概念。
这是我的相关代码。
if (deviceConnected) {
if(digitalRead(15)==LOW){
pCharacteristic->setValue("ON");
}
else{
pCharacteristic->setValue("OFF");
}
pCharacteristic->notify();
我找到了这个示例代码,但不确定它是否有用或如何将它结合到我的
int old_something;
void loop ()
{
int something = get_my_data ();
if (something != old_something)
Serial.print (something); // display if it changed
old_something = something;
}
解决方案
弄清楚了。现在它在这里工作
//Way at the Top
boolean oldState = LOW;
//Down in Loop
boolean newState = digitalRead(15);
if (deviceConnected) {
if (newState != oldState) {
if (newState == LOW) {
pCharacteristic->setValue("ON");
}
else {
pCharacteristic->setValue("OFF");
}
pCharacteristic->notify();
};
oldState = newState;
推荐阅读
- css - 如何使用剪辑路径或任何其他方式在 css 中创建以下形状
- apache-kafka - 卡夫卡流抑制在窗口化后不产生输出
- android - 应用程序字体大小不会改变
- javascript - 使用Javascript从两个对象数组中删除重复项
- python - 如何在 Python 中使用整数变量重命名文本文件?
- python - 'pytype' 为使用 TypeVar 的函数引发 FAILED
- c# - 为 Nullable 显示 CheckBox 列
DataGridView 中的属性 - java - 使用 Enum 的 Spring 请求 notempty 验证
- android - 如何从字符串变量中的 Firebase 数据库访问此嵌套值?
- javascript - 在 webpack 中操作(第一个)块的名称?