LISHUZUOXUN_yangjiang/tool_multi_uwbtest.py

113 lines
3.1 KiB
Python
Raw Normal View History

2024-09-23 14:54:15 +08:00
# coding=gb2312
from matplotlib import pyplot as plt
from UWB.multi_uwb import *
result = []
__waiting_signal = threading.Event()
__waiting_signal.clear()
def data_collect(uwb: MultiUWB):
while True:
__waiting_signal.wait()
data = uwb.get_data()
if data:
print(data)
# data.update({"record_time": time.time()})
result.append(data)
def clear_all_data(uwb: MultiUWB):
uwb.clear_all_record()
result.clear()
def data_processing():
global result
fig, axs = plt.subplots(2, 2, sharey="row")
group_result = {}
anchor_group_result = {}
for record_data in result:
record_time = record_data["record_time"]
tag = record_data[TAG_ID]
anchor = record_data[ANCHOR_ID]
distance = record_data[TOTAL_RSSI]
group_result.setdefault(tag, [])
group_result[tag].append([record_time, distance])
anchor_group_result.setdefault(anchor, [])
anchor_group_result[anchor].append([record_time, distance])
for tag, record in group_result.items():
x = [r[0] for r in record]
distance = [r[1] for r in record]
y = [tag for r in record]
axs[0, 0].scatter(x=x, y=y, s=1)
axs[0, 1].scatter(x=distance, y=y, s=1)
for anchor, record in anchor_group_result.items():
x = [r[0] for r in record]
distance = [r[1] for r in record]
y = [anchor for r in record]
axs[1, 0].scatter(x=x, y=y, s=1)
axs[1, 1].scatter(x=distance, y=y, s=1)
fig.subplots_adjust(wspace=0)
plt.show()
print("Uwb<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD>Made By <20>㶫Ӿ<E3B6AB><D3BE><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD>")
# <20><>ʼ<EFBFBD><CABC><EFBFBD>
uwb = MultiUWB()
uwb.start()
print("<EFBFBD><EFBFBD><EFBFBD>ڽ<EFBFBD><EFBFBD>û<EFBFBD>վ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>λģʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
while not uwb.start_all_record():
time.sleep(1)
print("<EFBFBD><EFBFBD><EFBFBD>óɹ<EFBFBD><EFBFBD><EFBFBD>")
threading.Thread(target=data_collect, args=(uwb,), daemon=True).start()
# <20><>ʼ<EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>
print(
"______________________________\n"
"|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\t|<7C><><EFBFBD><EFBFBD><EEB6AF>\n"
"| <20><>s<EFBFBD><73> \t|<7C><>ʼ<EFBFBD><CABC>¼\n"
"| <20><>p<EFBFBD><70> \t|<7C><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD><EFBFBD>\n"
"| <20><>r<EFBFBD><72> \t|<7C><>ʾ<EFBFBD><CABE><EFBFBD>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n"
"| <20><>h<EFBFBD><68> \t|<7C><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>\n"
"| <20><>q<EFBFBD><71> \t| <20>˳<EFBFBD> \n"
"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
)
while True:
cmd = input("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
if cmd == "s":
print("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>վ")
while not uwb.start_all_record():
time.sleep(1)
print("<EFBFBD><EFBFBD><EFBFBD>óɹ<EFBFBD><EFBFBD><EFBFBD>")
__waiting_signal.set()
elif cmd == "p":
__waiting_signal.clear()
data_processing()
print("<EFBFBD><EFBFBD><EFBFBD>ڹرջ<EFBFBD>վ")
while not uwb.stop_all_record():
time.sleep(1)
print("<EFBFBD><EFBFBD><EFBFBD>óɹ<EFBFBD><EFBFBD><EFBFBD>")
clear_all_data(uwb)
elif cmd == "h":
print(
"______________________________\n"
"|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\t|<7C><><EFBFBD><EFBFBD><EEB6AF>\n"
"| <20><>s<EFBFBD><73> \t|<7C><>ʼ<EFBFBD><CABC>¼\n"
"| <20><>p<EFBFBD><70> \t|<7C><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD><EFBFBD>\n"
"| <20><>r<EFBFBD><72> \t|<7C><>ʾ<EFBFBD><CABE><EFBFBD>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n"
"| <20><>h<EFBFBD><68> \t|<7C><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>\n"
"| <20><>q<EFBFBD><71> \t| <20>˳<EFBFBD> \n"
"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
)
elif cmd == "q":
break
elif cmd == "r":
print(f"<EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><EFBFBD><EFBFBD>{len(result)}<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>")
elif cmd == "c":
uwb.clear_all_record()