硬件启用应用程序的软件设置

Posted

技术标签:

【中文标题】硬件启用应用程序的软件设置【英文标题】:Software setup for hardware enabled application 【发布时间】:2014-08-25 05:47:38 【问题描述】:

我有一个与我想要控制的设备紧密耦合的 Raspberry PI。

我想要的设置如下所示:

    在设备上具有交互式硬件控件(扬声器、麦克风、按钮)的物理设备 与设备耦合的 Raspberry PI

    关于 PI:

      一个对硬件变化做出反应的守护程序应用 显示设备当前状态并允许配置设备的 Web 界面

    系统应该能够在新软件可用时以某种方式自我更新(apg-get 或其他一些机制)。

对于 Web 界面,我将使用 rails 应用程序,这本身不是问题。我不清楚的是通过 gpio 与硬件对话的事件驱动软件。首先,我更喜欢使用 ruby​​ 来做这件事,这样我在开发解决方案时不会有很大的技术差距。

    如何确保树莓派启动时两个应用程序都在后台启动和运行 如何将事件通知 web 应用(例如按下按钮)。 我想知道这两个软件有一个共享数据库来通信是否有意义。 如何最好地为这两个软件设置一些自动更新机制,而无需用户采取任何行动。

【问题讨论】:

为你写一些想法的答案:) @RichPeck 期待您的意见。我知道这个问题相当广泛,但它确实有助于我找到一些方向。 【参考方案1】:

应用程序

这取决于操作系统

如果你安装一个轻量级的 Linux 版本,你也许可以创建一些运行时应用程序之类的东西。我从来没有做过这样的事情;但我知道在 Windows 中你可以创建 startup 程序——同样,你在 Linux 中是 should be able to do something similar

顺便说一句,您不会“运行” Rails 应用程序 - 您将启动服务器以捕获任何请求。您基本上会在“生产”模式下在本地运行您的应用程序 - 允许您通过 localhost 发送请求,或者在您的盒子的 HOSTS 文件中设置一个伪域

--

网络应用

网络应用程序本身是 RESTful,意思是(我相信),它只会在收到请求时才会采取行动。因为这适用于 HTTP 协议,所以它本质上意味着您需要某种(网络)服务来向网络应用发送请求:

具象状态转移 (REST) 是一种创建、读取、 使用简单的 HTTP 调用更新或删除服务器上的信息

虽然我自己从未这样做过,但我会使用您 PI 上的 ruby 应用程序向您的 Rails 应用程序发送 HTTP 请求。这肯定会增加一定程度的复杂性,但会确保您为两种类型的数据传输提供接口

您的区别是Rails/任何其他网络应用程序只会根据请求执行。只要操作系统在运行,“本机”应用程序就会运行;这意味着您可以“收听”来自硬件等的更新。

我要做的是拆分功能:

    硬件输入 > 发送到服务 服务 > 发送到 Rails Rails > 向服务发送响应 服务 > 处理响应

这可能看起来效率低下,但我认为这是从硬件捕获基于本地的输入的最佳方式。您必须使用 localhost rails 应用程序,使用 nginx 或其他一些高效的服务器运行

--

数据库

只有在他们共享数据时才有意义。您应该记住databasedatatable 不同。 数据库 存储许多表,通常用于单一目的;而数据表存储单一类型的数据

根据您所写的,我建议使用在同一数据库服务器上运行的 两个 数据库。这将使您能够为这些数据库创建任意数量的 - 让您可以为每个数据库添加任意数量的不同数据。可以使用 API 或 Web 服务共享数据

--

更新

Rails 应用不需要“更新” - 您只需部署一个新版本。以互联网为中心的软件之美 :)

就您的 Rasberry-PI“板载”软件更新而言 - 我对此没有太多经验,因此只能推荐

【讨论】:

以上是关于硬件启用应用程序的软件设置的主要内容,如果未能解决你的问题,请参考以下文章

没有任何事先设置的硬件中断如何触发软件处理程序[关闭]

软件仿真和硬件仿真

如何查看虚拟网卡

请教kettle任务自动重启问题

按键精灵--设置模拟方式

电脑无法安装应用程序