Exemplo n.º 1
0
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)
Exemplo n.º 2
0
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")
Exemplo n.º 3
0
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()
Exemplo n.º 4
0
            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()
Exemplo n.º 5
0
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()
Exemplo n.º 6
0
        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")
Exemplo n.º 7
0
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()            
Exemplo n.º 8
0
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()