要使用Python和Flask实现实时更新ECG(心电图)图表,你需要理解几个基础概念和技术:
Flask-SocketIO
扩展来集成WebSocket功能。matplotlib.js
)来接收数据并实时更新图表。以下是一个简化的示例,展示了如何实现上述功能:
from flask import Flask, render_template
from flask_socketio import SocketIO
import random
import time
app = Flask(__name__)
socketio = SocketIO(app)
@app.route('/')
def index():
return render_template('index.html')
def generate_ecg_data():
while True:
time.sleep(0.1) # 模拟数据生成的间隔
yield random.uniform(0, 1) # 模拟ECG数据点
@socketio.on('connect')
def test_connect():
print('Client connected')
for data_point in generate_ecg_data():
socketio.emit('update_graph', {'data': data_point})
if __name__ == '__main__':
socketio.run(app, debug=True)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Real-time ECG</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.0.1/socket.io.js"></script>
<script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
</head>
<body>
<div id="graph"></div>
<script>
var socket = io.connect('http://' + document.domain + ':' + location.port);
var graphDiv = document.getElementById('graph');
var data = [{
y: [],
mode: 'lines',
line: { color: '#80CAF6' }
}];
Plotly.newPlot(graphDiv, data);
socket.on('update_graph', function(msg) {
data[0].y.push(msg.data);
if (data[0].y.length > 100) { // 保持数据长度为100
data[0].y.shift();
}
Plotly.redraw(graphDiv);
});
</script>
</body>
</html>
通过以上步骤和代码示例,你可以构建一个基本的实时ECG图表更新系统。根据实际需求,你可能需要进一步优化和扩展功能。
领取专属 10元无门槛券
手把手带您无忧上云