Skip to content
Snippets Groups Projects
Commit 17670b9d authored by Tommy Olofsson's avatar Tommy Olofsson
Browse files

Allow mixed registrations and data in CSV tool.

parent 9c7a9e2e
Branches
No related tags found
No related merge requests found
...@@ -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()
except EOFError: if o is None:
break
if o == None:
# Type declaration
seen[t.name] = 0 seen[t.name] = 0
_type[t.name] = t _type[t.name] = t
else: else:
current[t.name] = o current[t.name] = o
if len(current) == len(_type): except EOFError:
# We have got one sample of each
break 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__":
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment