管理Raspberry PI上的Wifi连接

时间:2013-11-08 20:03:03

标签: c# mono wifi raspberry-pi archlinux

我正在使用Raspberry Pi进行嵌入式项目,该项目将利用wifi与外部设备进行通信。该设备应该能够作为设备可以连接的独立wifi热点,或者在存在现有wifi网络的情况下,它应该连接到该网络,以便用户不必放弃他的互联网连接。为了连接到设备。我计划让设备以热点模式启动,然后用户可以使用Web界面输入他希望设备连接到的网络的详细信息,只要指定的参数无法建立连接,它就会默认返回热点模式。

现在我正在努力解决的技术问题是我想在Rapsberry Pi上的Arch Linux上使用Mono在C#中运行控制软件。我正在努力寻找管理Linux wifi连接所需的Apis或库。在Windows上,似乎可以使用managedwifi.codeplex.com,但它似乎与Linux不兼容。

我的最后一招显然是执行shell命令,然后解析它们的输出,但考虑到这将是多么粗糙和可能不可靠,这显然是我的最后手段。

关于我应该做什么的任何想法?

PS。在使用shell脚本之前我可能会考虑的另一件事是,如果它有所不同,那就是使用Raspbian或其他一些发行版。

2 个答案:

答案 0 :(得分:1)

  1. 实际上从托管代码调用shell命令并不是一个坏主意。它们是可靠的,经过良好测试,大多数都是轻量级的,有时只是内核或其他模块功能的包装。这似乎与Node.js模块在访问低级别或与网络相关的内容时使用的方法相同。例如,请参阅此源代码:node-wireless/node_modules/wireless/index.js

  2. 如果您不喜欢这种方式,总会有“Interop”。与Windows中的DllImport()库相同,您可以在Linux中执行。见这里:http://www.mono-project.com/Interop_with_Native_Libraries

  3. 恕我直言第二种解决方案不值得努力。调用shell命令很优雅,也很整洁。

答案 1 :(得分:0)

我的pi开始使用hostapd作为AP启动wlan0,当AP也启动了lighttpd并且提供web界面时,确实会更改设置。 Web界面验证并在sqlite3中写入输入。第二个脚本是根据我的变化做的。 (比如在wpa_supplicant中添加,编辑或删除wifis,将wlan0重置为现有wlan的一部分,如设置为dhcp,告诉wpa_supplicants ...)

除了lighttpd和sqlite3之外,所有组件都已经在Raspery上了。你不需要任何单声道或c-library

用于编写脚本我使用python但perl工作(甚至php用于前端)