3

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

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

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

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

PS。在使用 shell 脚本之前我可能会考虑的另一件事是使用 Raspbian 或其他发行版来代替。

4

2 回答 2

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

  2. 如果你不喜欢这种方式,总会有“互操作”。就像在 Windows 中可以使用 DllImport() 库一样,在 Linux 中也可以这样做。见这里:http ://www.mono-project.com/Interop_with_Native_Libraries

恕我直言,第二种解决方案不值得付出努力。调用 shell 命令足够优雅和整洁。

于 2013-11-08T20:46:02.490 回答
0

我的 pi 作为带有 h​​ostapd 的 AP 开始进入 wlan0,当 AP 也启动 lig​​httpd 并提供 Web 界面时,请更改设置。Web 界面验证并在 sqlite3 中写入输入。第二个脚本正在根据我的更改来执行 canges。(如在 wpa_supplicant 中添加、编辑或删除 wifi,将 wlan0 重置为现有 wlan 的一部分,如设置为 dhcp,告诉 wpa_supplicants...)

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

为了编写脚本,我使用 python,但 perl 也在工作(即使是前端的 php)

于 2014-03-15T00:22:51.213 回答