-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathwifi6.py
93 lines (77 loc) · 3.69 KB
/
wifi6.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
import tkinter as tk
def calculate_mcs_speed():
bandwidth = bandwidth_var.get()
guard_interval = guard_interval_var.get()
spatial_streams = int(spatial_streams_var.get())
mcs_index = int(mcs_var.get())
mcs_table = {
"20MHz": {
"LongGI": [8, 16, 24, 33, 49, 65, 73, 81, 98, 108, 122, 135],
"ShortGI": [8.6, 17.2, 25.8, 34.4, 51.6, 68.8, 77.4, 86, 103.2, 114.7, 129, 143.4],
},
"40MHz": {
"LongGI": [16, 33, 49, 65, 98, 130, 146, 163, 195, 217, 244, 271],
"ShortGI": [17.2, 34.4, 51.6, 68.8, 103.2, 146, 163, 195, 217, 244, 271],
},
"80MHz": {
"LongGI": [34, 68, 102, 136, 204, 272, 306, 340, 408, 453, 510, 567],
"ShortGI": [36, 72.1, 108.1, 144.1, 216.2, 288.2, 324.4, 360.3, 432.4, 480.4, 540.4, 600.5],
},
"160MHz": {
"LongGI": [68, 136, 204, 272, 408, 544, 613, 681, 817, 907, 1021, 1134],
"ShortGI": [72, 144, 216, 282, 432, 576, 649, 721, 865, 961, 1081, 1201],
},
}
if bandwidth in mcs_table and guard_interval in mcs_table[bandwidth]:
max_mcs_index = len(mcs_table[bandwidth][guard_interval]) - 1
if mcs_index >= 0 and mcs_index <= max_mcs_index:
mcs_speed = mcs_table[bandwidth][guard_interval][mcs_index]
total_speed = mcs_speed * spatial_streams
result_label.config(text=f"MCS-{mcs_index} Speed for {bandwidth} with {guard_interval} Guard Interval, {spatial_streams} Spatial Streams: {mcs_speed} Mbps (Total: {total_speed} Mbps)")
else:
result_label.config(text="Invalid MCS index for selected bandwidth and guard interval.")
else:
result_label.config(text="Invalid bandwidth or guard interval.")
# Create the main window
window = tk.Tk()
window.title("802.11ax MCS Speed Calculator")
# Bandwidth selection
bandwidth_label = tk.Label(window, text="Select Bandwidth:")
bandwidth_label.pack()
bandwidth_var = tk.StringVar(value="20MHz")
bandwidth_radio_20 = tk.Radiobutton(window, text="20MHz", variable=bandwidth_var, value="20MHz")
bandwidth_radio_40 = tk.Radiobutton(window, text="40MHz", variable=bandwidth_var, value="40MHz")
bandwidth_radio_80 = tk.Radiobutton(window, text="80MHz", variable=bandwidth_var, value="80MHz")
bandwidth_radio_160 = tk.Radiobutton(window, text="160MHz", variable=bandwidth_var, value="160MHz")
bandwidth_radio_20.pack()
bandwidth_radio_40.pack()
bandwidth_radio_80.pack()
bandwidth_radio_160.pack()
# Guard interval selection
guard_interval_label = tk.Label(window, text="Select Guard Interval:")
guard_interval_label.pack()
guard_interval_var = tk.StringVar(value="LongGI")
guard_interval_radio_longgi = tk.Radiobutton(window, text="LongGI", variable=guard_interval_var, value="LongGI")
guard_interval_radio_shortgi = tk.Radiobutton(window, text="ShortGI", variable=guard_interval_var, value="ShortGI")
guard_interval_radio_longgi.pack()
guard_interval_radio_shortgi.pack()
# Spatial Streams selection
spatial_streams_label = tk.Label(window, text="Number of Spatial Streams (1-8):")
spatial_streams_label.pack()
spatial_streams_var = tk.StringVar(value="1")
spatial_streams_entry = tk.Entry(window, textvariable=spatial_streams_var)
spatial_streams_entry.pack()
# MCS index selection
mcs_label = tk.Label(window, text="Select MCS Index (0-11 for 20/40/80/160MHz):")
mcs_label.pack()
mcs_var = tk.StringVar(value="0")
mcs_entry = tk.Entry(window, textvariable=mcs_var)
mcs_entry.pack()
# Calculate button
calculate_button = tk.Button(window, text="Calculate MCS Speed", command=calculate_mcs_speed)
calculate_button.pack()
# Result label
result_label = tk.Label(window, text="")
result_label.pack()
# Start the GUI main loop
window.mainloop()