Advertisement
Guest User

Untitled

a guest
Jul 27th, 2017
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.54 KB | None | 0 0
  1. def gen_frames():
  2. cnt = 1
  3. while True:
  4. #Get streamed image and streamed telemetry (text)
  5. img_stream = data_stream['img']
  6. telemetry = data_stream['telemetry']
  7.  
  8. if cnt%2 == 0:
  9. yield (b'--framern'
  10. b'Content-Type: image/jpegrnrn' + img_stream.getvalue() + b'rn')
  11. else:
  12. yield telemetry+ 'n'
  13. cnt += 1
  14.  
  15. gen = gen_frames()
  16. @app.route('/data_feed')
  17. def data_feed():
  18. #get length of the data yield by generator
  19. length_data = len(next(gen))
  20. try:
  21. if length_data > 1000:
  22. #data yield is an image
  23. return Response(gen_img, mimetype='multipart/x-mixed-replace; boundary=frame')
  24. else:
  25. #data yield is text (telemetry)
  26. return Response(gen_img, mimetype='text/plain')
  27. except:
  28. print('No response was returned')
  29.  
  30. <!-- Show images -->
  31. <img src="{{ url_for('video_feed') }}" id="vid">
  32.  
  33. <!-- Show text -->
  34. <p>Telemetry: <span id="telemetry"></span></p>
  35. <script>
  36. var telemetry = document.getElementById('telemetry');
  37. var xhr = new XMLHttpRequest();
  38. xhr.open('GET', '{{ url_for('video_feed') }}');
  39. xhr.send();
  40. var position = 0;
  41. function handleNewData() {
  42. var msg = xhr.responseText.split('n');
  43. msg.slice(position, -1).forEach(function(value) {
  44. telemetry.textContent = value; // update the latest value in place
  45. });
  46. position = msg.length - 1;
  47. }
  48.  
  49. var timer;
  50. timer = setInterval(function() { handleNewData(); }, 100);
  51. </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement