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)

それが役立つかどうかはわかりませんが、バフ変数もチェックしたところ、0x00とだけ表示されていました(他にもいくつかあるはずですbczはメモリ内のアドレスを示していますが、もちろん間違っている可能性もあります)バッファーはそこで初期化されています)。

したがって、問題が何であるかはわかりませんが、おそらく、返されるものに対してリザーバースペース(またはバッファー?)が小さすぎるようです。これを機能させるために他に何ができるか知っている人はいますか?

もう 1 つ、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'))

周囲のすべてのネットワークのリストを取得します。次に、そのうちの1つを(SSIDで)選択して接続するだけです

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

于 2016-06-03T01:38:25.097 に答える