登录 立即注册

找到11515个回复

无名啊 1楼回复 无名啊FFmpeg 的 -shortest 为啥不生效? (2023-04-01//)

@tasy5kg,你碰到过这个事情吗?还是说,我 FFmpeg 写错用错了?

水木易安 7楼回复 Sunset【楼主删除了该帖】 (2023-04-01//)

@胡图图,哈哈哈

童真再见 65楼回复 童真再见有玩esp32的吗?买了个板子上传项目老是出错不知道是不是接线问题 (2023-04-01//)

include <Wire.h>

include "MAX30105.h"

include "spo2_algorithm.h"

include <WiFi.h> // 引入WiFi 库

// WiFi 参数
const char ssid = "64412";
const char
password = "32323433";

WiFiServer server(80); // 在端口80上创建一个web服务器

MAX30105 particleSensor;

define MAX_BRIGHTNESS 255

if defined(AVR_ATmega328P) || defined(AVR_ATmega168)

//Arduino Uno不具备足够的SRAM来存储32位格式的50个红外LED数据和红色LED数据。
//为了解决这个问题,采样数据的16位MSB将被截断。样品变成16位数据。
uint16_t irBuffer[50]; //红外LED传感器数据
uint16_t redBuffer[50]; //红色LED传感器数据

else

uint32_t irBuffer[50]; //红外LED传感器数据
uint32_t redBuffer[50]; //红色LED传感器数据

endif

int32_t spo2; //SPO2值
int8_t validSPO2; //指示SPO2计算是否有效
int32_t heartRate; //心率值
int8_t validHeartRate; //指示心率计算是否有效

bool sensorEnabled = false; //标志位,表示传感器是否启用

void setup()
{
Serial.begin(115200); // 以115200比特/秒初始化串行通信:

// 初始化WIFI连接
Serial.println();
Serial.println();
Serial.print("连接到 ");
Serial.println(ssid);
WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}

Serial.println("");
Serial.println("WiFi 连接成功");
Serial.println(WiFi.localIP());

// 初始化Web服务器
server.begin();
Serial.println("Web服务器已启动");

// 初始化传感器
Wire.begin(4, 5); // SDA = GPIO 4, SCL = GPIO 5
if (!particleSensor.begin(Wire, I2C_SPEED_FAST)) //使用默认的I2C端口,400kHz的速度
{
Serial.println(F("未找到MAX30105。 请检查布线/电源。"));
while (1);
}

particleSensor.setup(55, 4, 2, 200, 411, 4096); //使用这些设置配置传感器

// 初始化结束后关闭传感器模块
particleSensor.shutDown();
sensorEnabled = false;
}

long lastActiveTime = 0;

void loop()
{
// 等待Web客户端连接
WiFiClient client = server.available();
if (client) {
Serial.println("New Client.");
String currentLine = "";
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
if (c == '\n') {
if (currentLine.length() == 0) {
// 发送HTTP头部
client.println("HTTP/1.1 200 OK");
client.println("Content-type:text/html");
client.println();

        // 发送HTML内容
        client.println("&lt;html>");
        client.println("&lt;head>&lt;title>MAX30102 控制&lt;/title>&lt;/head>");
        client.println("&lt;body>");
        client.println("&lt;h1>MAX30102 控制&lt;/h1>");
        client.println("&lt;p>当前状态: " + String(sensorEnabled ? "已打开" : "已关闭") + "&lt;/p>");
        client.println("&lt;form method=\"POST\">");
        if (sensorEnabled) {
          client.println("&lt;input type=\"submit\" name=\"action\" value=\"关闭传感器\"/>");
        } else {
          client.println("&lt;input type=\"submit\" name=\"action\" value=\"打开传感器\"/>");
        }
        client.println("&lt;/form>");
        client.println("&lt;/body>");
        client.println("&lt;/html>");

        // 处理命令
        if (currentLine.indexOf("GET /?action=打开传感器") != -1) {
          if (!sensorEnabled) {
            // 打开传感器模块
            particleSensor.wakeUp();
            delay(500); // 给传感器启动一些时间
            sensorEnabled = true;
          }
        } else if (currentLine.indexOf("GET /?action=关闭传感器") != -1) {
          if (sensorEnabled) {
            // 关闭传感器模块
            particleSensor.shutDown();
            sensorEnabled = false;
          }
        }

        break;
      } else {
        currentLine = "";
      }
    } else if (c != '\r') {
      currentLine += c;
    }
  }
}

// 断开连接
client.stop();
Serial.println("Client Disconnected.");

}

// 检查传感器是否需要关闭
if (sensorEnabled && (millis() - lastActiveTime > 60000)) {
particleSensor.shutDown();
sensorEnabled = false;
}

//读取前50个样本,并确定信号范围
for (byte i = 0 ; i < 50 ; i++)
{
while (particleSensor.available() == false) //是否有新数据?
particleSensor.check(); //检查传感器是否有新数据

redBuffer<span style="font-style:italic"> = particleSensor.getRed();
irBuffer<span style="font-style:italic"> = particleSensor.getIR();
particleSensor.nextSample(); //处理完当前样本后,转到下一个样本
Serial.print(F("红光="));
Serial.print(redBuffer<span style="font-style:italic">, DEC);
Serial.print(F(", 红外="));
Serial.println(irBuffer<span style="font-style:italic">, DEC);

}

//在前50个样本之后计算心率和SpO2(前4秒的样本)
maxim_heart_rate_and_oxygen_saturation(irBuffer, 50, redBuffer, &spo2, &validSPO2, &heartRate, &validHeartRate);

//无线循环地从MAX30102中采样。每1秒计算一次心率和SpO2
while (1)
{
//将内存中的前25个样本丢弃,并将最后25个样本移动到顶部
for (byte i = 25; i < 50; i++)
{
redBuffer[i - 25] = redBuffer;
irBuffer[i - 25] = irBuffer;
}

//在计算心率之前,采取25个样本集。
for (byte i = 25; i &lt; 50; i++)
{
  while (particleSensor.available() == false) //是否有新数据?
    particleSensor.check(); //检查传感器是否有新数据

  redBuffer<span style="font-style:italic"> = particleSensor.getRed();
  irBuffer<span style="font-style:italic"> = particleSensor.getIR();
  particleSensor.nextSample(); //处理完当前样本后,转到下一个样本
  Serial.print(F("红光="));
  Serial.print(redBuffer<span style="font-style:italic">, DEC);
  Serial.print(F(", 红外="));
  Serial.print(irBuffer<span style="font-style:italic">, DEC);

  Serial.print(F(", 心率="));
  Serial.print(heartRate, DEC);

  Serial.print(F(", HRvalid="));
  Serial.print(validHeartRate, DEC);

  Serial.print(F(", 血氧饱和度="));
  Serial.print(spo2, DEC);

  Serial.print(F(", SPO2Valid="));
  Serial.println(validSPO2, DEC);

}

//收集25个新样本后,重新计算HR和SP02
maxim_heart_rate_and_oxygen_saturation(irBuffer, 50, redBuffer, &spo2, &validSPO2, &heartRate, &validHeartRate);
printToSerial();

}
}

void printToSerial() {
if(validSPO2 && validHeartRate) {
Serial.print(F("心率: ")); Serial.println(heartRate, DEC);
Serial.print(F("血氧饱和度: ")); Serial.println(spo2, DEC);
} else {
Serial.println(F("无效"));
}
}

// 如果需要关闭传感器模块,则可以使用以下函数
void shutDownSensorModule() {
if (sensorEnabled) {
particleSensor.shutDown();
sensorEnabled = false;
}
}
这段代码中Web服务器,传感器的采样和计算代码在一个无限循环中会崩溃,帮我修改一下
手机

胡图图 6楼回复 Sunset【楼主删除了该帖】 (2023-04-01//)
两边都反馈一下,说他错了,再看哪边改了,另一边就是对的
Sunset 5楼回复 Sunset【楼主删除了该帖】 (2023-04-01//)

@零玖@㝶芾厶眵攴䭡@希望自己长胖胖@咯叽,是家里那边说星期天扫墓,我就看一下,发现有点不准确
黑屋屋👾

晨曦 7楼回复 紫色洋地黄ChatGPT关于医学方面个例 (2023-03-31//)
这玩意会一本正经的胡说八道
我是晨曦,我喂自己袋盐!
幕后导演 6楼回复 紫色洋地黄ChatGPT关于医学方面个例 (2023-03-31//)

看我的
小米MIX2s(白)

零玖 4楼回复 Sunset【楼主删除了该帖】 (2023-03-31//)


小米MIX2s(白)

老虎会游泳 99楼回复 残缘[网页插件][更新] @提醒(1.0.4) (2023-03-31//)

@cherrydra,如果因为连接数上限关闭连接,能不能响应一个错误信息

残缘 98楼回复 残缘[网页插件][更新] @提醒(1.0.4) (2023-03-31//)
@cherrydra,可能与连接数量有关,当我打开2-3个网页时,再刷新的快点(其实也不是很快,正常浏览)就会提示这个了。
残缘 97楼回复 残缘[网页插件][更新] @提醒(1.0.4) (2023-03-31//)
@无名啊,我看错了,以为是你刚回复的,可以忽略。 
cherrydra 96楼回复 残缘[网页插件][更新] @提醒(1.0.4) (2023-03-31//)

@残缘,服务器已经稳定运行 25h小时了,所以不是进程退出导致的。应该是,网络问题或者到达用户连接数上限,大概率是达用户连接数上限。看老虎怎么说

残缘 95楼回复 残缘[网页插件][更新] @提醒(1.0.4) (2023-03-31//)
@老虎会游泳@cherrydra
似乎服务太不稳定。
image.png(122.21 KB)
㝶芾厶眵攴䭡 3楼回复 Sunset【楼主删除了该帖】 (2023-03-31//)

@咯叽 所以那个小红本本叫啥名字,我们家那边也有,但是我叫不出名字 我更好奇出版方是谁
~~~

希望自己长胖胖 2楼回复 Sunset【楼主删除了该帖】 (2023-03-31//)
这个传统已被抛弃。
cherrydra 94楼回复 残缘[网页插件][更新] @提醒(1.0.4) (2023-03-31//)

@老虎会游泳,功能比较多的话,我来更新下 README.md

老虎会游泳 93楼回复 残缘[网页插件][更新] @提醒(1.0.4) (2023-03-31//)

@cherrydra,建议你给websocket服务写一个手册

咯叽 1楼回复 Sunset【楼主删除了该帖】 (2023-03-31//)
层主 @咯叽 于 2023-09-14 15:48 删除了该楼层。
cherrydra 92楼回复 残缘[网页插件][更新] @提醒(1.0.4) (2023-03-31//)

@老虎会游泳@残缘,已经实现可取消订阅事件(可取消订阅的事件有msg online offline

不需要订阅机器人上下线事件可以在 websocket 连接建立成功后发送:
{"action": "unsub", "data": ["online", "offline"]}

后续有需要这些事件再发送:
{"action": "sub", "data": ["online", "offline"]}

不清楚取消了订阅哪些事件发送:
{"action": "lsunsub"}

如果老虎更新hu60bot程序后,客户端什么也不做就和之前一样,会收到所有事件

紫色洋地黄 5楼回复 紫色洋地黄ChatGPT关于医学方面个例 (2023-03-31//)
@老虎会游泳,谢谢虎哥,不麻烦了🫡
下一页 上一页 (212 / 576页)

11月10日 06:21 星期一

本站由hu60wap6驱动

备案号: 京ICP备18041936号-1