99
1010from builtins import input
1111
12+ import math
1213import signal
1314import sys
1415from pathlib import Path
@@ -111,19 +112,32 @@ def signal_handler(sig, frame):
111112# Running omniscan450Example.py from existing log file
112113if args .log is not None and not new_log :
113114 with open (log_path , 'rb' ) as f :
115+ count = 0
116+ overall_sum = 0
114117 while True :
115118 data = Omniscan450 .read_packet (f )
116119
117120 if data is None :
118121 break # EOF or bad packet
119122
120- print (f"ID: { data .message_id } \t Name: { data .name } " )
123+ # print(f"ID: {data.message_id}\tName: {data.name}")
121124 if data .message_id == definitions .OMNISCAN450_OS_MONO_PROFILE :
125+ count += 1
122126 # # print(data)
123127
124128 # Printing the same results as if directly connected to the Omniscan
125129 scaled_result = Omniscan450 .scale_power (data )
126- print (f"Average power: { sum (scaled_result ) / len (scaled_result )} " )
130+
131+ linear_powers = [10 ** (db / 10 ) for db in scaled_result ]
132+
133+ avg_linear_power = sum (linear_powers ) / len (linear_powers ) if linear_powers else 0
134+
135+ avg_power_db = 10 * math .log10 (avg_linear_power ) if avg_linear_power > 0 else float ('-inf' )
136+
137+ print (f"Average power (linearized): { avg_power_db :.2f} dB" )
138+ overall_sum += avg_power_db
139+ # print(f"Average power: {sum(scaled_result) / len(scaled_result)}")
140+ print (f"Final average power: { overall_sum / count if count > 0 else 0 :.2f} dB" )
127141
128142# Connected to physical omniscan
129143else :
@@ -150,10 +164,10 @@ def signal_handler(sig, frame):
150164 myOmniscan450 .control_os_ping_params (enable = 1 )
151165
152166 # For a custom ping rate
153- custom_msec_per_ping = Omniscan450 .calc_msec_per_ping (1000 ) # 1000 Hz
167+ custom_msec_per_ping = Omniscan450 .calc_msec_per_ping (20 )
154168
155169 # To find pulse length percent
156- custom_pulse_length = Omniscan450 .calc_pulse_length_pc (0.2 ) # 0.2%
170+ custom_pulse_length = Omniscan450 .calc_pulse_length_pc (0.2 )
157171
158172 ## Set these attributes like this
159173 # myOmniscan450.control_os_ping_params(
@@ -174,7 +188,15 @@ def signal_handler(sig, frame):
174188 if data :
175189 scaled_result = Omniscan450 .scale_power (data )
176190 try :
177- print (f"Average power: { sum (scaled_result ) / len (scaled_result )} " )
191+ linear_powers = [10 ** (db / 10 ) for db in scaled_result ]
192+
193+ avg_linear_power = sum (linear_powers ) / len (linear_powers ) if linear_powers else 0
194+
195+ avg_power_db = 10 * math .log10 (avg_linear_power ) if avg_linear_power > 0 else float ('-inf' )
196+
197+ print (f"Average power (linearized): { avg_power_db :.2f} dB" )
198+
199+ # print(f"Average power: {sum(scaled_result) / len(scaled_result)}")
178200 except ZeroDivisionError :
179201 print ("Length of scaled_result is 0" )
180202 elif not data :
0 commit comments