Member 12726857 Ответов: 2

Как получить RSSI всех WLAN, которые можно найти в списке wirelesswlan компьютера?


Недавно у меня возникла проблема.Я могу получить RSSI в windows с помощью собственного Wi-Fi API, но данные RSSI сильно колеблются и почти не меняются, когда я перемещаю свой компьютер. Кто-то говорит,что родной Wi-Fi API усреднил данные RSSI, когда они возвращаются к нам, поэтому я хочу получить RSSI непосредственно от сетевой карты.Я много искал в интернете, но ничего полезного не нашел.Я не знаю, какую функцию использовать для достижения этой цели, пожалуйста, помогите мне!Спасибо~

Что я уже пробовал:

Я много искал в интернете, но ничего полезного не нашел.
Я использовал функцию DeviceIoControl, но она всегда возвращала false.

User 59241

Какую функцию WINAPI вы используете? Вы не дали много информации, о которой идет речь. Это утверждение не имеет логического смысла: "данные RSSI сильно колеблются и почти не меняются, когда я перемещаю свой компьютер". Как вы можете знать, меняется ли значение с "большой флуктуацией" или нет, когда вы перемещаете компьютер. Нет никакого способа сравнить значения RSSI между устройствами, потому что каждый производитель использует свою собственную шкалу: https://en.wikipedia.org/wiki/Received_signal_strength_indication
Другими словами, RSSI с карты, если бы вы могли ее получить, не имеет абсолютного значения.

Member 12726857

Я использую WlanOpenHandle, WlanEnumInterfaces и WlanGetAvailableNetworkList в собственном API Wi-Fi, предоставляемом microsoft."Данные RSSI имеют большие колебания и почти не меняются, когда я перемещаю свой компьютер" означает, что RSSI, который я получаю, сильно меняется за долгое время, но почти не меняется за короткое время или когда я перемещаю свой компьютер.Я знаю, что есть программное обеспечение под названием WirelessMon,оно гораздо лучше работает при получении RSSI от NIC в windows, так что должен быть какой-то способ его получить.Итак, я предполагаю, что может быть какая-то функция Windows, которую я не знаю, может достичь этой цели.

2 Ответов

Рейтинг:
1

enhzflep

Это ужасно похоже на информацию, которая будет запрашиваться по - разному для разных карт, то есть я ожидаю, что она будет зависеть от аппаратного обеспечения. Если это так, то магия происходит внутри драйвера устройства.

Насколько вы терпеливы и хороши в реверс-инжиниринге для одного устройства?

Жесткие диски не нуждаются в драйверах, поэтому они могут использовать согласованный интерфейс, к которому вы получаете доступ с помощью DeviceIoControl. У меня мало надежды (ладно, в основном 0 - но и не намного больше знаний!) что это окажется чем угодно, но только не болезненным, утомительным процессом, который, возможно, все еще не имеет никакой надежды на плодотворность.


В качестве упражнения попробуйте загрузить спецификации для каждого из чипсетов NRF24L01 и a7105 с частотой 2,4 ГГц. Я работал с ними несколько лет назад, и по памяти у них есть похожие, но совершенно разные методы получения значения RSSI. Вы будете смотреть на ту же ситуацию с сетевыми адаптерами, за исключением того, что у вас будет очень мало представления (если таковое имеется) о том, как управлять правильными линиями high/lo по мере необходимости и слушать ответ, так как вы не можете подключиться непосредственно к чипсету 2,4 ГГц, а вместо этого должны пройти через mcu на плате. (Отсюда и предложение реверс-инжиниринга)

a7105: [^]

С NRF24L01: [^]


Member 12726857

Спасибо вам за ваш ответ!Я действительно не знаю, что это может быть так трудно.Я не хочу проводить реверс-инжиниринг для одного устройства,но я знаю,что здесь есть программное обеспечение под названием WirelessMon ,оно работает гораздо лучше при получении RSSI от NIC в windows, поэтому я думаю, что может быть какая-то функция Windows, которую я не знаю, может получить эту цель или какой-то простой способ с помощью vc++, java или Linux.

enhzflep

Пожалуйста. :)
Я надеюсь, что неправильно оценил уровень сложности поставленной задачи и что желаемая низкоуровневая информация будет доступна через вызовы WinAPI.
Удачи!