Commit 17670b9d authored by Tommy Olofsson's avatar Tommy Olofsson
Browse files

Allow mixed registrations and data in CSV tool.

parent 9c7a9e2e
...@@ -5,11 +5,11 @@ import labcomm ...@@ -5,11 +5,11 @@ import labcomm
class Reader(object): class Reader(object):
def __init__(self, file): def __init__(self, _file):
self.file = open(file) self._file = open(_file)
def read(self, count): def read(self, count):
data = self.file.read(count) data = self._file.read(count)
if len(data) == 0: if len(data) == 0:
raise EOFError() raise EOFError()
return data return data
...@@ -70,37 +70,41 @@ def dump_labels(current, _type): ...@@ -70,37 +70,41 @@ def dump_labels(current, _type):
def main(): def main():
if len(sys.argv) != 2:
sys.exit("Give input file as argument\n")
d = labcomm.Decoder(Reader(sys.argv[1])) d = labcomm.Decoder(Reader(sys.argv[1]))
seen = {} seen = {}
current = {} current = {}
_type = {} _type = {}
# Do one pass through the file to find all registrations.
while True: while True:
try: try:
(o, t) = d.decode() o, t = d.decode()
if o is None:
seen[t.name] = 0
_type[t.name] = t
else:
current[t.name] = o
except EOFError: except EOFError:
break break
if o == None:
# Type declaration
seen[t.name] = 0
_type[t.name] = t
else:
current[t.name] = o
if len(current) == len(_type):
# We have got one sample of each
break
dump_labels(current, _type) dump_labels(current, _type)
n = 0
while o != None: # Do another pass to extract the data.
if seen[t.name] > n: current = {}
n = seen[t.name] d = labcomm.Decoder(Reader(sys.argv[1]))
dump(current, _type) while True:
current[t.name] = o
seen[t.name] += 1
try: try:
(o, t) = d.decode() o, t = d.decode()
if o is not None:
current[t.name] = o
if len(current) == len(_type):
# Assume that samples arrive at different rates.
# Trigger on everything once we have a value for
# each column.
dump(current, _type)
except EOFError: except EOFError:
break break
dump(current, _type)
if __name__ == "__main__": if __name__ == "__main__":
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment