UmberHubManager/api/examples/c_cpp/BrainStem2-Application-Notes/short_test.py

81 lines
2.6 KiB
Python
Executable File

###############################################################################
# Filename: short_test.py
# Prepared By: James Dudley
# Date Prepared: March 2, 2018
# Date Revised: March 2, 2018
# Revision: 0.0.1
###############################################################################
import brainstem # Import BrainStem API
from brainstem.result import Result # For easy access to error constants
from time import sleep, time
RAIL = 1 # Power rail to use for test
VOLTAGE = 3300000 # Set voltage for Rail 0
CYCLE_TIME = 0.2 # Time to pause between readings, seconds
TOTAL_TIME = 5 # Time to keep test running, seconds
# Generic function to run BrainStem commands with error checking
def step(func, func_str, *args):
print '>> ' + func_str[0].upper() + func_str[1:] # Capitalize first letter of string
res = func(*args)
err = val = res
if isinstance(err, Result):
err = res.error
val = res.value
if err is not Result.NO_ERROR:
raise Exception('Error %s: %d' % (func_str, err))
return val
def main():
# Create MTM-PM-1 object
pm = brainstem.stem.MTMPM1() # Uses default module address
# Initialize error tracker
err = Result.NO_ERROR
try:
# Discover and connect to MTM-PM-1 object
# Connects to the first USB module discovered
step(pm.discoverAndConnect, 'connecting to MTM-PM-1', brainstem.link.Spec.USB)
if RAIL is 0:
# Set Rail voltage
step(pm.rail[RAIL].setVoltage,'setting Rail %d voltage to %d' % (RAIL, VOLTAGE), 1)
# Enable Rail
step(pm.rail[RAIL].setEnable,'enabling Rail %d' % RAIL, 1)
enable_str = ['OFF', 'ON']
tStart = tNow = time()
while tNow < tStart + TOTAL_TIME:
tNow = time()
# Get MTM-PM-1 Rail enable state
enable = step(pm.rail[RAIL].getEnable, 'reading Rail %d enable state' % RAIL)
# Read MTM-PM-1 Rail voltage
v = step(pm.rail[RAIL].getVoltage, 'reading Rail %d voltage' % RAIL)
print '* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *'
print 'Enable State: %s' % enable_str[enable]
print 'Rail voltage (V): %.3f' % (v / 1.e6)
print '* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *'
sleep(CYCLE_TIME)
step(pm.rail[RAIL].setEnable, 'disabling Rail %d' % RAIL, 0)
except Exception as exc:
print exc
finally:
pm.disconnect() # Clean up possible remaining connections
del pm # Clean up MTM-PM-1 object
if __name__ == '__main__':
main()