Skip to content
Snippets Groups Projects
Commit 1423c093 authored by kpetersn's avatar kpetersn
Browse files

Upgraded motorHist.py to python3

parent bda17dea
No related branches found
No related tags found
No related merge requests found
#!/usr/bin/env python
#!/usr/bin/env python3
#
# Interpret motor changes in camonitor log
#
import sys
#!print sys.argv
#!print(sys.argv)
msta_dict = {1 << 0 : ("Direction", ("Negative", "Positive")),
1 << 1 : ("Done", ("Moving", "Done")),
1 << 2 : ("Plus limit", ("Off", "On")),
1 << 3 : ("Home limit", ("Off", "On")),
1 << 4 : ("Unused", ("0", "1")),
1 << 5 : ("Closed-loop", ("Enabled", "Disabled")),
1 << 6 : ("Slip/stall", ("OK", "Stalled")),
1 << 7 : ("Home", ("Not Home", "Home")),
1 << 8 : ("Encoder present", ("No", "Yes")),
1 << 9 : ("Problem", ("No", "Yes")),
1 << 10 : ("Moving", ("Done", "Moving")),
1 << 11 : ("Gain support", ("No", "Yes")),
1 << 12 : ("Comm error", ("OK", "Error")),
1 << 13 : ("Minus limit", ("Off", "On")),
1 << 14 : ("Homed", ("Not homed", "Homed")),
}
1 << 2 : ("Plus limit", ("Off", "On")),
1 << 3 : ("Home limit", ("Off", "On")),
1 << 4 : ("Unused", ("0", "1")),
1 << 5 : ("Closed-loop", ("Enabled", "Disabled")),
1 << 6 : ("Slip/stall", ("OK", "Stalled")),
1 << 7 : ("Home", ("Not Home", "Home")),
1 << 8 : ("Encoder present", ("No", "Yes")),
1 << 9 : ("Problem", ("No", "Yes")),
1 << 10 : ("Moving", ("Done", "Moving")),
1 << 11 : ("Gain support", ("No", "Yes")),
1 << 12 : ("Comm error", ("OK", "Error")),
1 << 13 : ("Minus limit", ("Off", "On")),
1 << 14 : ("Homed", ("Not homed", "Homed")),
}
#!print msta_dict
#!print(msta_dict)
mip_dict = {1 << 0 : ("Jog forward", ("Done", "In Progress")),
1 << 1 : ("Jog reverse", ("Done", "In Progress")),
1 << 2 : ("Post-jog backlash", ("Done", "In Progress")),
1 << 3 : ("Home forard", ("Done", "In Progress")),
1 << 4 : ("Home reverse", ("Done", "In Progress")),
1 << 5 : ("Move (NOT home/jog)", ("Done", "In Progress")),
1 << 6 : ("Retry", ("Done", "In Progress")),
1 << 7 : ("Load position", ("Done", "In Progress")),
1 << 8 : ("Backlash", ("Done", "In Progress")),
1 << 9 : ("Stopping", ("Done", "In Progress")),
1 << 10 : ("Delay request", ("Done", "In Progress")),
1 << 11 : ("Delay acknowledge", ("Done", "In Progress")),
1 << 12 : ("Jog request", ("Done", "In Progress")),
1 << 13 : ("Jog stopping", ("Done", "In Progress")),
1 << 14 : ("External move", ("Done", "In Progress")),
}
1 << 2 : ("Post-jog backlash", ("Done", "In Progress")),
1 << 3 : ("Home forard", ("Done", "In Progress")),
1 << 4 : ("Home reverse", ("Done", "In Progress")),
1 << 5 : ("Move (NOT home/jog)", ("Done", "In Progress")),
1 << 6 : ("Retry", ("Done", "In Progress")),
1 << 7 : ("Load position", ("Done", "In Progress")),
1 << 8 : ("Backlash", ("Done", "In Progress")),
1 << 9 : ("Stopping", ("Done", "In Progress")),
1 << 10 : ("Delay request", ("Done", "In Progress")),
1 << 11 : ("Delay acknowledge", ("Done", "In Progress")),
1 << 12 : ("Jog request", ("Done", "In Progress")),
1 << 13 : ("Jog stopping", ("Done", "In Progress")),
1 << 14 : ("External move", ("Done", "In Progress")),
}
#!print msta_dict
#!print(mip_dict)
motor_dict = {}
def msta_diff(last_msta, current_msta):
......@@ -52,7 +52,7 @@ def msta_diff(last_msta, current_msta):
bit = 1 << index
if (current_msta & bit):
bit_state = 1
print "\t%s bit (0x%X) starting value is \"%s\" [0x%X]" % (msta_dict[bit][0], bit, msta_dict[bit][1][bit_state], bit_state)
print("\t{} bit (0x{:X}) starting value is \"{}\" [0x{:X}]".format(msta_dict[bit][0], bit, msta_dict[bit][1][bit_state], bit_state))
else:
# XOR shows changed bits
changed_bits = last_msta ^ current_msta
......@@ -62,10 +62,10 @@ def msta_diff(last_msta, current_msta):
bit = 1 << index
if (bit & changed_bits):
if (current_msta & bit):
bit_state = 1
bit_state = 1
else:
bit_state = 0
print "MSTA:\t%s bit (0x%X) changed to \"%s\" (%i)" % (msta_dict[bit][0], bit, msta_dict[bit][1][bit_state], bit_state)
bit_state = 0
print("MSTA:\t{} bit (0x{:X}) changed to \"{}\" ({})".format(msta_dict[bit][0], bit, msta_dict[bit][1][bit_state], bit_state))
def mip_diff(last_mip, current_mip):
if last_mip == None:
......@@ -74,7 +74,7 @@ def mip_diff(last_mip, current_mip):
bit = 1 << index
if (current_mip & bit):
bit_state = 1
print "\t%s bit (0x%X) starting value is \"%s\" [0x%X]" % (mip_dict[bit][0], bit, mip_dict[bit][1][bit_state], bit_state)
print("\t{} bit (0x{:X}) starting value is \"{}\" [0x{:X}]".format(mip_dict[bit][0], bit, mip_dict[bit][1][bit_state], bit_state))
else:
# XOR shows changed bits
changed_bits = last_mip ^ current_mip
......@@ -84,10 +84,10 @@ def mip_diff(last_mip, current_mip):
bit = 1 << index
if (bit & changed_bits):
if (current_mip & bit):
bit_state = 1
bit_state = 1
else:
bit_state = 0
print "MIP:\t%s bit (0x%X) changed to \"%s\" (%i)" % (mip_dict[bit][0], bit, mip_dict[bit][1][bit_state], bit_state)
bit_state = 0
print("MIP:\t{} bit (0x{:X}) changed to \"{}\" ({})".format(mip_dict[bit][0], bit, mip_dict[bit][1][bit_state], bit_state))
def main(log_file):
......@@ -95,11 +95,11 @@ def main(log_file):
try:
fh = open(log_file, 'r')
except IOError:
print "%s doesn't exist." % log_file
print("{} doesn't exist.".format(log_file))
sys.exit(1)
for line in fh:
#!print line[:-1]
#!print(line[:-1])
# Break line into list of values: PV name, date, time, value
line_list = line[:-1].split()
......@@ -121,57 +121,57 @@ def main(log_file):
# Check for VAL change
if field == "VAL":
# Catch error here?
current_val = float(value)
last_val = motor_dict[name]["VAL"]
current_val = float(value)
last_val = motor_dict[name]["VAL"]
if last_val == None:
print "[%s %s] %s's %s field starts at %0.4f" % (date, time, name, field, current_val)
else:
print "[%s %s] %s's %s field changed from %0.4f to %0.4f" % (date, time, name, field, last_val, current_val)
motor_dict[name]["VAL"] = current_val
print
print("[{} {}] {}'s {} field starts at {:0.4f}".format(date, time, name, field, current_val))
else:
print("[{} {}] {}'s {} field changed from {:0.4f} to {:0.4f}".format(date, time, name, field, last_val, current_val))
motor_dict[name]["VAL"] = current_val
print()
# Check for DMOV change
if field == "DMOV":
# Catch error here?
current_dmov = int(value)
last_dmov = motor_dict[name]["DMOV"]
current_dmov = int(value)
last_dmov = motor_dict[name]["DMOV"]
if last_dmov == None:
print "[%s %s] %s's %s field starts at %i" % (date, time, name, field, current_dmov)
else:
print "[%s %s] %s's %s field changed from %i to %i" % (date, time, name, field, last_dmov, current_dmov)
motor_dict[name]["DMOV"] = current_dmov
print
print("[{} {}] {}'s {} field starts at {}".format(date, time, name, field, current_dmov))
else:
print("[{} {}] {}'s {} field changed from {} to {}".format(date, time, name, field, last_dmov, current_dmov))
motor_dict[name]["DMOV"] = current_dmov
print()
# Check for MSTA change
if field == "MSTA":
# Catch error here?
current_msta = int(value)
last_msta = motor_dict[name]["MSTA"]
if last_msta == None:
print "[%s %s] %s's %s field starts at %i [0x%X]" % (date, time, name, field, current_msta, current_msta)
else:
print "[%s %s] %s's %s field changed from %i [0x%X] to %i [0x%X]" % (date, time, name, field, last_msta, last_msta, current_msta, current_msta)
msta_diff(last_msta, current_msta)
motor_dict[name]["MSTA"] = current_msta
print
current_msta = int(value)
last_msta = motor_dict[name]["MSTA"]
if last_msta == None:
print("[{} {}] {}'s {} field starts at {} [0x{:X}]".format(date, time, name, field, current_msta, current_msta))
else:
print("[{} {}] {}'s {} field changed from {} [0x{:X}] to {} [0x{:X}]".format(date, time, name, field, last_msta, last_msta, current_msta, current_msta))
msta_diff(last_msta, current_msta)
motor_dict[name]["MSTA"] = current_msta
print()
# Check for MIP change
if field == "MIP":
# Catch error here?
current_mip = int(value)
last_mip = motor_dict[name]["MIP"]
if last_mip == None:
print "[%s %s] %s's %s field starts at %i [0x%X]" % (date, time, name, field, current_mip, current_mip)
else:
print "[%s %s] %s's %s field changed from %i [0x%X] to %i [0x%X]" % (date, time, name, field, last_mip, last_mip, current_mip, current_mip)
mip_diff(last_mip, current_mip)
motor_dict[name]["MIP"] = current_mip
print
last_mip = motor_dict[name]["MIP"]
if last_mip == None:
print("[{} {}] {}'s {} field starts at {} [0x{:X}]".format(date, time, name, field, current_mip, current_mip))
else:
print("[{} {}] {}'s {} field changed from {} [0x{:X}] to {} [0x{:X}]".format(date, time, name, field, last_mip, last_mip, current_mip, current_mip))
mip_diff(last_mip, current_mip)
motor_dict[name]["MIP"] = current_mip
print()
fh.close()
if __name__ == '__main__':
if len(sys.argv) != 2:
print "Usage: motorHist.py <log_file>"
print("Usage: motorHist.py <log_file>")
else:
main(sys.argv[1])
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment