# !/bin/env python import sys import time import openvr import datetime print("OpenVR test loop") if openvr.isHmdPresent(): print("VR head set found") if openvr.isRuntimeInstalled(): print("Runtime is installed") reinit = True shutdown = True testreinit = False timestamp = time.time() while True: if reinit: try: vr_system = openvr.init(openvr.VRApplication_Background) print("OpenVR init done") reinit = False except openvr.error_code.InitError_Init_NoServerForBackgroundApp: print("OpenVR server not running") time.sleep(1) continue except Exception as err: print("OpenVR not available: " + str(err)) time.sleep(1) pass else: try: event = openvr.VREvent_t() vr_system.pollNextEvent(event) if event.eventType == openvr.VREvent_Quit: print("QUIT sent eventType={0}".format(event.eventType)) print("eventAgeSeconds={0}".format(event.eventAgeSeconds)) for i in range(0, 5): vr_system.acknowledgeQuit_Exiting() if shutdown: openvr.shutdown() print("Shutdown sent") elif event.eventType == openvr.VREvent_QuitAcknowledged: print("ACK received eventType={0}".format(event.eventType)) print("eventAgeSeconds={0}".format(event.eventAgeSeconds)) continue elif event.eventType == openvr.VREvent_ProcessQuit: print("QUIT processing eventType={0}".format(event.eventType)) print("eventAgeSeconds={0}".format(event.eventAgeSeconds)) continue elif event.eventType != 0: print("Got event eventType={0}".format(event.eventType)) if time.time() - timestamp > 1: timestamp = time.time() if testreinit: reinit = True try: connected = False valid = False poses = [] poses = vr_system.getDeviceToAbsoluteTrackingPose(openvr.TrackingUniverseRawAndUncalibrated, 0, poses) if poses[0].bDeviceIsConnected == 1: connected = True if poses[0].bPoseIsValid == 1: valid = True print("poses=" + str(len(poses)) + " connected=" + str(connected) + " valid=" + str(valid)) for idx in range(0, openvr.k_unMaxTrackedDeviceCount): data = vr_system.getTrackedDeviceClass(idx) if data == 4: model = vr_system.getStringTrackedDeviceProperty(idx, openvr.Prop_SerialNumber_String) value = vr_system.getStringTrackedDeviceProperty(idx, openvr.Prop_ModeLabel_String) print("model={0} mode={1}".format(str(model), str(value))) poses = None data = None except Exception as err: print("Parse tracking exception: {0}".format(str(err))) pass except Exception as err: print("Event exeception: {0}".format(err)) reinit = True pass time.sleep(0.1)