wln.associate на WA2000
WA2000 может подключаться только к точкам доступа (сетям инфраструктуры) и не может подключаться к другим беспроводным устройствам (станциям), держащим сети ad hoc.
Перед ассоциацией потребуется задать защиту WEP или WPA (если она нужна).
Метод wln.associate будет отклонён (вернёт 1 - REJECTED), если:
- В данный момент выполняется другая задача.
- Беспроводной модуль расширения Wi-Fi не загружен должным образом (wln.enabled = 0 - NO).
- Интерфейс Wi-Fi уже подключён к сети или держит собственную сеть ad hoc (wln.associationstate <> 0 - PL_WLN_NOT_ASSOCIATED).
- Аргумент bssmode установлен в PL_WLN_BSS_MODE_ADHOC. Это работает только на GA1000.
Как и с GA1000, подключиться к беспроводной сети можно, указав точные параметры этой сети:
- SSID (имя) этой сети
- BSSID (MAC-адрес) этой сети
- Канал, на котором работает сеть
Обычно SSID известен, а вот BSSID, канал и режим BSS придётся поискать. Проще всего выяснить правильные значения этих параметров через сканирование. Методы wln.scan или wln.activescan заполнят правильными данными свойства wln.scanresultbssid и wln.scanresultchannel (только чтение). В примере ниже показано, как их с пользой применить.
После завершения задачи ассоциации нужно проверить её результат. Это можно сделать через свойство wln.associationstate.
'connect to the access point named TIBBO.
wln.scan("TIBBO") 'scanning for a specific network will give us necessary parameters (you can also use wln.activescan)
While wln.task<>PL_WLN_TASK_IDLE
Wend
If wln.scanresultssid<>"" Then
'wireless network not found
End If
'now can associate: 'wln.scanresult...' properties contain necessary data after the scanning
wln.associate(wln.scanresultbssid, wln.scanresultssid, wln.scanresultchannel, PL_WLN_BSS_MODE_ADHOC)
While wln.task<>PL_WLN_TASK_IDLE
Wend
If wln.associationstate=PL_WLN_ASSOCIATED Then
'successful association!
...
End If
В отличие от GA1000, WA2000 предлагает также «универсальную» ассоциацию: вместо всех параметров укажите только SSID (имя) целевой сети. Установите аргумент bssid в "" или "0.0.0.0.0.0" - модуль подключится к любой точке доступа с совпадающим именем. Чтобы WA2000 мог подключаться на любом канале, установите канал в 0. Так приложение обходится без сканирования сетевых параметров целевой сети и сразу переходит к ассоциации:
...
wln.associate("","Tibbo1",0,PL_WLN_BSS_MODE_INFRASTRUCTURE)
...
Что произойдёт, если использовать такую «универсальную» ассоциацию, когда в зоне досягаемости устройства несколько точек доступа с одинаковым SSID? WA2000 автоматически выберет ту, у которой самый сильный сигнал!
У WA2000 есть и другое преимущество перед GA1000: он полностью самостоятельно обрабатывает защиту WPA и WPA2 и не требует помощи со стороны приложения, как GA1000. Когда WPA или WPA2 включены, WA2000 выполняет необходимое «квитирование WPA» (WPA handshake) сразу после подключения к точке доступа. Если оно завершится неудачей, приложение быстро получит событие on_wln_event(PL_WLN_EVENT_DISASSOCIATED).