Ich arbeite gerade daran, Code zu ändern, den ich auf Github gefunden habe. Es ist für einen Spektrumanalysator mit ath9k-basierten Wireless-Karten.Python len() gibt keine ganzen Zahlen zurück
Sowieso ist das Problem mit diesem Stück Code hier:
sdata = struct.unpack_from("56B", data, pos)
pos += 56
# calculate power in dBm
sumsq_sample = 0
samples = []
for raw_sample in sdata:
if raw_sample == 0:
sample = 1
else:
sample = raw_sample << max_exp
sumsq_sample += sample*sample
samples.append(sample)
print (len(samples))
Ich erwarte, dass die letzte print-Anweisung, immer den Wert „56“ produzieren, aber ich habe in einige seltsamen Verhalten führen. Hier ist eine Beispielausgabe:
56
56
56
56
56
56
56S 15.952354
56
56
56
56
56
56
56
56
56
56
56
56
56S 15.689883
56
56S 16.510071
56
56S 17.591084
56S 18.358299
56
56
56
56
56
56
56
56
56
56
56
56
56
56
56
56
56
56
56
Das macht für mich keinen Sinn. Ich habe die Dokumentation für len() und struct.unpack_from() überprüft, bin aber nirgendwohin gekommen. Die Proben sollten 56 Ein-Byte-Zahlen enthalten aber gelegentlich erhalte ich ungerade Werte wie „56S 10,237633“
Github Projekt Repo Ich kann mich zu modifizieren oben von spectrum_file.py in Zeile 87
beginnend bei https://github.com/bcopeland/speccy Codebeispiel findenIrgendwelche Ideen? Danke
Können Sie dies auf ein minimales Beispiel reduzieren? –
Ist das Skript single-threaded? Ist die Einrückung korrekt? –
@JonasAdler Nein, ich kann es nicht auf ein minimales Beispiel reduzieren. Die seltsame "56S 12.322341" -Ausgabe erfolgt zufällig. – Zoroshino