问题描述
我想使用下面给出的节点服务器从 PX4-Autopilot (make px4_sitl_default jmavsim
) 流式传输实时遥测数据。但是打印一些数据后,服务器崩溃并给出以下异常。
问题是什么以及如何解决这个问题?
例外:
http_outgoing.js:470
throw new ERR_HTTP_HEADERS_SENT('set');
^
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
start.js
var express = require('express');
var app = express();
app.listen(3000,function() {
console.log('server running on port 3000');
} )
app.get('/param',callName);
function callName(req,res) {
var spawn = require("child_process").spawn;
var process = spawn('python3',["./getparam.py",] );
process.stdout.on('data',function(data) {
res.send(data.toString());
} )
}
./getparam.py
import asyncio
from mavsdk import System
async def run():
# Init the drone
drone = System()
await drone.connect(system_address="udp://:14540")
# Start the tasks
asyncio.ensure_future(print_battery(drone))
asyncio.ensure_future(print_gps_info(drone))
asyncio.ensure_future(print_in_air(drone))
asyncio.ensure_future(print_position(drone))
async def print_battery(drone):
async for battery in drone.telemetry.battery():
print(f"Battery: {battery.remaining_percent}")
async def print_gps_info(drone):
async for gps_info in drone.telemetry.gps_info():
print(f"GPS info: {gps_info}")
async def print_in_air(drone):
async for in_air in drone.telemetry.in_air():
print(f"In air: {in_air}")
async def print_position(drone):
async for position in drone.telemetry.position():
print(position)
if __name__ == "__main__":
# Start the main function
asyncio.ensure_future(run())
# Runs the event loop until the program is canceled with e.g. CTRL-C
asyncio.get_event_loop().run_forever()
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)