diff --git a/gr_grc/scripts/show_live_transmissions.py b/gr_grc/scripts/show_live_transmissions.py index 8009870d26e7ee13d18cecc87c4cee9d114846e4..d706c0891bb13f628384c4d6ab67c94d06b237d4 100755 --- a/gr_grc/scripts/show_live_transmissions.py +++ b/gr_grc/scripts/show_live_transmissions.py @@ -136,11 +136,15 @@ def main(top_block_cls=top_block, options=None): output['tag'] = sys.argv[1] while True: + # read data from msg queue and convert it to a numpy array + # counting ones in np array is faster then counting them in a sting msg = tb.msgq_out.delete_head() samples = np.fromstring(msg.to_string(), dtype='float32') samples_len = len(samples) + # skip samples with only zeros if np.count_nonzero(samples) != 0: + # convert array to string string = "" for i in samples: string += str(int(i)) @@ -151,13 +155,17 @@ def main(top_block_cls=top_block, options=None): messages.append(string) time_added = time.time() + # output transmission block after 500ms if time_added != 0 and (time.time()-time_added) > 0.5 : + # join message blocks msg = "".join(messages) + # do some calculations transmission_time = round(1/tb.samp_rate*(int(msg.count("1"))*1000), 2) first_one = msg.index("1") last_one = msg.rfind("1") real_transmission_time = round(1/tb.samp_rate*(int(last_one-first_one)*1000), 2) transmission_counter += 1 + # magic value 700 ones in a row if msg.find("1"*700) == -1: modulation = "ASK" else: @@ -184,7 +192,6 @@ def main(top_block_cls=top_block, options=None): transmission['transmission_time'] = transmission_time transmission['real_transmission_time'] = real_transmission_time - signal_blocks.append(transmission) output['signal_blocks'] = signal_blocks