mirror of https://github.com/ArduPilot/ardupilot
Tools: added script to decode Saleae CSV capture file
This commit is contained in:
parent
0334cc1c88
commit
8d0d4fe40a
|
@ -0,0 +1,52 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
'''
|
||||||
|
decode a Saleae logic CSV export file as PWM values. Used for
|
||||||
|
testing output values on PWM channels
|
||||||
|
'''
|
||||||
|
|
||||||
|
import csv, sys
|
||||||
|
|
||||||
|
filename = sys.argv[1]
|
||||||
|
|
||||||
|
c = open(filename, 'r')
|
||||||
|
data = csv.reader(c)
|
||||||
|
|
||||||
|
pulse_start = []
|
||||||
|
prev_values = []
|
||||||
|
pwm = []
|
||||||
|
nchannels = 0
|
||||||
|
|
||||||
|
for row in data:
|
||||||
|
# skip header
|
||||||
|
if row[0].startswith('Time'):
|
||||||
|
continue
|
||||||
|
changed = False
|
||||||
|
|
||||||
|
if len(row) > nchannels+1:
|
||||||
|
nchannels = len(row)-1
|
||||||
|
while len(pwm) < nchannels:
|
||||||
|
pwm.append(0)
|
||||||
|
pulse_start.append(0)
|
||||||
|
prev_values.append(0)
|
||||||
|
|
||||||
|
# time in microseconds
|
||||||
|
t = int(float(row[0])*1e6)
|
||||||
|
|
||||||
|
# current value of each channel
|
||||||
|
values = [int(row[i]) for i in range(1,len(row))]
|
||||||
|
|
||||||
|
for c in range(nchannels):
|
||||||
|
if values[c] == 0 and prev_values[c] == 1 and pulse_start[c] != 0:
|
||||||
|
pulse = t - pulse_start[c]
|
||||||
|
if pulse < 10000:
|
||||||
|
pwm[c] = pulse
|
||||||
|
changed = True
|
||||||
|
if values[c] == 1 and prev_values[c] == 0:
|
||||||
|
pulse_start[c] = t
|
||||||
|
prev_values[c] = values[c]
|
||||||
|
|
||||||
|
if changed:
|
||||||
|
for c in range(nchannels):
|
||||||
|
sys.stdout.write("%4u " % pwm[c])
|
||||||
|
sys.stdout.write("%.3f\n" % float(row[0]))
|
||||||
|
|
Loading…
Reference in New Issue