0

我想要实现的目标是,我希望我的 android 应用程序能够获取具有 wlan 的设备范围内所有可用 wlan 连接的列表(此时设备是接入点)。然后我想告诉该设备连接到哪个网络。到目前为止,一切都很好。

我正在尝试通过 python 访问我的 openwert 设备上的 wlan 模块。我正在使用这个 [1] python 模块。当我执行以下示例代码时

python iwlist.py wlan0 scanning

我得到了错误

Interface does not support scanning

然后我开始挖掘代码内部,真正的错误信息是这个:

Argument list too long

并且此错误来自模块(来自文件 iwlibs.py)。它来自的确切代码片段(Iwrange 类,update()):

buff, s = iwstruct.pack_wrq(640)
print "Now comes the error"
status, result = iwstruct.iw_get_ext(self.ifname,
                                    pythonwifi.flags.SIOCGIWRANGE,
                                    data=s)

我不知道它是否有任何帮助,但我也检查了 buff 变量,它只是说 0x00 (我想应该还有一些其他的东西,因为它表示内存中的某个地址,但当然我也可能是错的并且缓冲区只是在那里初始化)。

所以,我不确定问题是什么,在我看来,也许是储备空间(或缓冲区?)对于返回的东西来说太小了。有谁知道我还可以尝试什么才能使它正常工作?

还有一件事,我还下载了 wireless_tools,现在我可以使用 iwlist。我还可以扫描并获取所有周围 wlan 网络的列表。所以看起来硬件工作正常,我只是没有用 python 正确访问它

[1] https://pypi.python.org/pypi/python-wifi/0.6.1

4

1 回答 1

0

作为一个信息,我通过更改我一直在使用的模块解决了我的问题。现在我正在使用 [1]。当我执行此代码时

from wifi import Cell, Scheme
print "%s" %(Cell.all('wlan0'))

我得到一个包含所有周围网络的列表。然后我只需选择其中一个(通过 SSID)并建立我的连接

[1] https://wifi.readthedocs.io/en/latest/

于 2016-06-03T01:38:25.097 回答