113 lines
3.1 KiB
Python
113 lines
3.1 KiB
Python
|
# 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()
|