Skip to content
Snippets Groups Projects
Commit 37eaf0b7 authored by Anders Blomdell's avatar Anders Blomdell
Browse files

Merge branch 'master' into 'master'

Master

Allow mixed registrations and data in CSV tool (as requested in comment).

See merge request !3
parents 9c7a9e2e 17670b9d
No related branches found
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