Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import scipy
- def remove_zeroes_in_msg_stream(stream, start_of_msg, end_of_msg):
- filtered = []
- num_msg = 0
- state="ZEROES"
- for b in stream:
- if state == "ZEROES":
- if b != 0:
- if b != start_of_msg: # this should not happen
- print "Error!", b
- else:
- state = "DATA"
- num_msg += 1
- msg_len = 1
- elif state == "DATA":
- if b == end_of_msg:
- state = "TAIL"
- elif state == "TAIL":
- if b == 0:
- state = "ZEROES"
- if state != "ZEROES":
- filtered.append(b)
- msg_len += 1
- return filtered, num_msg, msg_len
- stream = scipy.fromfile(open("test"), dtype=scipy.uint8)
- cnt_som = 0
- cnt_eom = 0
- som = 170
- eom = 23
- state = "ZEROES"
- num_msg = 0
- signaling_len = 8
- for bb in stream:
- if state == "ZEROES":
- if bb != 0:
- if bb != som: # this should not happen
- raise ValueError("Beginning of message is not som.")
- else:
- state = "PREAMBLE"
- num_msg += 1
- preamble_len = 1
- elif state == "PREAMBLE":
- if bb != som:
- if preamble_len != signaling_len and preamble_len > 2:
- raise ValueError("Wrong preamble len of " + str(preamble_len) + "." \
- + ". Current byte " + str(bb) + ". Current message " + str(num_msg) + ".")
- state = "DATA"
- data_len = 1
- else:
- preamble_len += 1
- elif state == "DATA":
- if bb == eom:
- state = "TAIL"
- tail_len = 1
- else:
- data_len += 1
- elif state == "TAIL":
- if bb != eom:
- if tail_len != signaling_len and tail_len > 2:
- raise ValueError("Wrong tail len of " + str(tail_len) + ". Current byte " + str(bb) + ". Current message " + str(num_msg) + ".")
- elif bb == som:
- state = "PREAMBLE"
- preamble_len = 1
- num_msg += 1
- elif bb == 0:
- state = "ZEROES"
- else:
- tail_len += 1
- if state != "ZEROES":
- print bb
- print "Number of messages:", num_msg
Add Comment
Please, Sign In to add comment