def audioThread(): firstAudio = True audioStream = None audioDevice = pyaudio.PyAudio() # Activate the audio stream audioPort = ManifoldPython.addMulticastSink(audioTopic) if (audioPort == -1): print("Failed to activate audio stream") ManifoldPython.stop() sys.exit() while not audioThreadExit: ret, data, samples, timestamp = ManifoldPython.getMulticastData( audioPort) if not ret: time.sleep(0.001) continue try: jsonObj = json.loads(data) if firstAudio: firstAudio = False audioStream = audioDevice.open(format=pyaudio.paInt16, channels=int( jsonObj[adefs.CHANNELS]), rate=int(jsonObj[adefs.RATE]), output=True) audioStream.write(samples) except: print("audio data error", sys.exc_info()[0], sys.exc_info()[1]) try: audioStream.stop_stream() audioStream.close() except: pass audioDevice.terminate() ManifoldPython.removeService(audioPort)
serialPort = serial.Serial(ttyPort, ttyRate, timeout=0) try: while True: processReceivedText() readBytes = serialPort.read(256) if len(readBytes) > 0: timestamp = time.time() inMessage = rdf.newPublishMessage('tty', ttyInTopic, 'tty', timestamp) if ManifoldPython.isServiceActive( ttyInPort) and ManifoldPython.isClearToSend(ttyInPort): ManifoldPython.sendMulticastData(ttyInPort, json.dumps(inMessage), readBytes, timestamp) time.sleep(0.001) except: print("Main loop error", sys.exc_info()[0], sys.exc_info()[1]) # Exiting so clean everything up. ManifoldPython.removeService(ttyInPort) ManifoldPython.removeService(ttyOutPort) serialPort.close() ManifoldPython.stop() print("Exiting")
topicMap[inTopic] = srecs.SensorRecords(inTopic, plotInterval) # start up the plotter sensorPlot = splot.sensorplot() # lastPlotTime is used to control plot updates lastPlotTime = time.time() - plotInterval # Activate the sensor stream inPort = ManifoldPython.addMulticastSink(inTopic) if (inPort == -1): print("Failed to activate sensor stream") ManifoldPython.stop() sys.exit() try: while True: processReceivedMessage() if (time.time() - lastPlotTime) >= plotInterval: lastPlotTime = time.time() sensorPlot.plot(topicMap.values()) time.sleep(0.05) except: pass # Exiting so clean everything up. ManifoldPython.removeService(inPort) ManifoldPython.stop()
if (jpeg): ManifoldPython.displayJpegImage(frame, "") else: ManifoldPython.displayImage(frame, width, height, "") timestamp = time.time() message = rdf.newPublishMessage('uvccam', outTopic, vdefs.DATATYPE, timestamp) message[vdefs.WIDTH] = width message[vdefs.HEIGHT] = height message[vdefs.RATE] = rate if jpeg: message[vdefs.FORMAT] = 'mjpeg' else: message[vdefs.FORMAT] = 'raw' if ManifoldPython.isServiceActive( sourcePort) and ManifoldPython.isClearToSend(sourcePort): ManifoldPython.sendMulticastData(sourcePort, json.dumps(message), frame, timestamp) except: print("Main loop error ", sys.exc_info()[0], sys.exc_info()[1]) break # Exiting so clean everything up. ManifoldPython.vidCapClose(cameraIndex) ManifoldPython.removeService(sourcePort) ManifoldPython.stop()
audioThreadObject = threading.Thread(target=audioThread) audioThreadObject.start() # Activate the video stream videoPort = ManifoldPython.addMulticastSink(videoTopic) if (videoPort == -1): print("Failed to activate video stream") ManifoldPython.stop() sys.exit() lastTime = time.time() try: while True: delta = time.time() - lastTime if (delta) >= 1.0: lastTime = time.time() frameRate = int(float(frameCount) / (delta - 0.01)) frameCount = 0 processVideoMessage() time.sleep(0.001) except: pass # Exiting so clean everything up. audioThreadExit = True audioThreadObject.join(0.1) ManifoldPython.removeService(videoPort) ManifoldPython.stop()
if gotCompletion: try: jsonObj = json.loads(completionToProcess) finished = jsonObj[ttscompletedefs.COMPLETE] print('Completion status: ' + str(finished)) if finished: waitForComplete = False gotCompletion = False except: print ("JSON error", sys.exc_info()[0],sys.exc_info()[1]) continue now = time.time() if (now - lastSendTime) >= 10.0: waitForComplete = False if not waitForComplete: sendMessage() lastSendTime = now finally: pass # Exiting so clean everything up. ManifoldPython.removeService(clientPort) ManifoldPython.removeService(sinkPort) ManifoldPython.stop() print("ttstest exiting")
def forwardThread(): global processingForward, forwardMessage, forwardImage, forwardTS, forwardThreadExit, inPort # start ManifoldPython running ManifoldPython.start("facerec", sys.argv, False) # this delay is necessary to allow Qt startup to complete time.sleep(1.0) # Activate the input stream inPort = ManifoldPython.addMulticastSink(inTopic) if (inPort == -1): print("Failed to activate input stream") ManifoldPython.stop() sys.exit() # Activate the output stream outPort = ManifoldPython.addMulticastSource(outTopic) if (outPort == -1): print("Failed to activate output stream") ManifoldPython.stop() sys.exit() while not forwardThreadExit: time.sleep(0.01) processReceivedMessage() if not processingForward: continue try: image = forwardImage inJpeg = np.frombuffer(image, dtype=np.uint8) cv2Image = cv2.imdecode(inJpeg, cv2.IMREAD_COLOR) except: print ("Forward jpeg error", sys.exc_info()[0],sys.exc_info()[1]) try: dataLock.acquire() for detectedData in globalDetectedData: name = detectedData['name'] namepos = detectedData['namepos'] cv2.putText(cv2Image, name, namepos, cv2.FONT_HERSHEY_SIMPLEX, fontScale=0.75, color=(152, 255, 204), thickness=2) landMarks = detectedData['landmarks'] for landMark in landMarks: cv2.circle(cv2Image, center=landMark, radius=3, color=(102, 204, 255), thickness=-1) except: pass dataLock.release() # generate the output jpeg retVal, outJpeg = cv2.imencode('.jpeg', cv2Image) forwardMessage[rtndefs.TOPIC] = outTopic if ManifoldPython.isServiceActive(outPort) and ManifoldPython.isClearToSend(outPort): ManifoldPython.sendMulticastData(outPort, json.dumps(forwardMessage), outJpeg, forwardTS) processingForward = False ManifoldPython.removeService(inPort) ManifoldPython.removeService(outPort) ManifoldPython.stop()
imu.setCompassEnable(True) if (not pressure.pressureInit()): print("Pressure sensor Init Failed") else: print("Pressure sensor Init Succeeded") if (not humidity.humidityInit()): print("Humidity sensor Init Failed") else: print("Humidity sensor Init Succeeded") poll_interval = imu.IMUGetPollInterval() print("Recommended Poll Interval: %dmS\n" % poll_interval) while True: time.sleep(poll_interval*1.0/1000.0) if imu.IMURead(): timestamp = time.time() message = rdf.newPublishMessage('imu', outTopic, idefs.DATATYPE, timestamp) data = imu.getIMUData() (data["pressureValid"], data["pressure"], data["pressureTemperatureValid"], data["pressureTemperature"]) = pressure.pressureRead() (data["humidityValid"], data["humidity"], data["humidityTemperatureValid"], data["humidityTemperature"]) = humidity.humidityRead() message[idefs.DATA] = data if ManifoldPython.isServiceActive(outPort) and ManifoldPython.isClearToSend(outPort): ManifoldPython.sendMulticastData(outPort, json.dumps(message), '', timestamp) ManifoldPython.removeService(outPort) ManifoldPython.stop()