在制作完我的Photon WiFi 强度计之后,我想通过获取周围 WiFi 的列表并在屏幕上显示信息来使我的设计更上一层楼。
英特尔 Edison 非常适合执行此操作,因为我有适用于 Edison 的 SparkFun OLED 模块,我可以轻松地在设备上执行我需要的任何处理。我在用 Photon 制作强度计的同一个周末完成了这个项目。
我开始弄清楚如何获取周围 WiFi 的列表,经过一番挖掘后我找到了命令:
iwlist
它将列出有关当前连接的 WiFi 的信息,并将扫描其他 WiFi 连接。使用命令
iwlist wlan0 scan
我能够从周围的 WiFi 连接中获得所有可用信息的列表。将其与 GREP 结合以过滤掉我们关心的字段,我们得到
iwlist wlan0 scan | grep -E 'Address|Channel|ESSID|Mode|Quality|Authentication'
但是我们如何在和app中使用这个命令,更重要的是把信息写到屏幕上,给我们一些控制呢?那么我们将使用此处的 代码片段从 C++ 执行 shell 命令,并读回输入。
程序读回输入后,我们对其进行解析,并在屏幕上显示并使用 A 和 B 触觉按钮滚动浏览数据,这些数据根据每个路由器具有的唯一 UUID 地址进行排序。
我不打算分解代码的每个部分的作用,因为这会花费很长时间,如果您想了解更多信息,可以下载链接到下面的存储库。
如果你想使用这个程序,你可以下载 GitHub 存储库并从源代码编译它,或者你可以运行
wget icodethings.info/uploads/Wifi_Scanner.o; chmod 557 Wifi_Scanner.o
它将从我的网站下载已编译的程序,并更改权限以便它可以运行,然后你只需要运行它
./Wifi_Scanner.o
或者如果你想运行它,然后在 Edison 上注销 SSH 并让它继续运行
./Wifi_Scanner.o &; exit
某些 WiFi 连接会显示 SSID 为“\x00\x00\x00\x00\x00\x00”,这些是“隐藏”连接,路由器所有者设置的连接,因此您需要先知道 SSID它会告诉你真实姓名。在我发布的照片中,您可以看到我的网络是隐藏的,但在我没有显示的 WiFi 列表的第一页上,如果在连接到 WiFi 时正确命名 WiFi,然后它命名为隐藏的变体。
我目前正在开发 Wifi 扫描仪的高级版本,它可以显示更多信息,并为您提供连接网络、将其记录到内部存储器上的 SD 卡等选项,并考虑创建一个库来提供帮助人们无需进行大量解析即可 轻松地 从 C++连接爱迪生上的 WiFi 。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !