Skip to content

Commit 5e40e6c

Browse files
committed
Small changes to omniscan450Example.py
1 parent d0ca827 commit 5e40e6c

File tree

1 file changed

+27
-5
lines changed

1 file changed

+27
-5
lines changed

examples/omniscan450Example.py

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
from builtins import input
1111

12+
import math
1213
import signal
1314
import sys
1415
from pathlib import Path
@@ -111,19 +112,32 @@ def signal_handler(sig, frame):
111112
# Running omniscan450Example.py from existing log file
112113
if 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}\tName: {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
129143
else:
@@ -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

Comments
 (0)