0

我被指派升级一个用 C 编写的嵌入式应用程序。该应用程序是通过 Web 界面配置的。

当用户修改 Web 应用程序时,会写入一个文件并触摸/var/www/settings.json该文件。/var/www/UPDATE_SETTINGS

在主应用程序循环中,它检查是否UPDATE_SETTINGS存在。如果是这样,它会解析settings.jsonwith json-c 然后删除UPDATE_SETTINGS.

这工作得很好,然而,我们更愿意转移到一个事件驱动的架构(可能是 libev),在这种架构中,settings.jsonwebapp 脚本直接将其馈送到程序到一个普通的 UDP 端口,然后发出一个回调来执行更新.

还有什么其他优雅的方法可以解决这个问题?我们应该坚持目前的方法吗?

4

2 回答 2

1

只需使用inotify。它是为像您这样的情况而创建的。

于 2010-08-19T12:08:04.077 回答
0

我在这里做一些假设。

1)您一直使用嵌入式设备连接到互联网。2)您的设备可以在“USART RX 缓冲区不为空”之类的内容上设置中断

注意:根据您使用的硬件类型,您可以在 ping 和其他内容上设置中断,这可能是中断嵌入式设备的另一种方式。

如果这两个假设是正确的,您可以这样做,在服务器或计算机上放置另一个“脚本”来监视 /var/www/settings.json 的更改,您可以使用 rsync 之类的东西来监视更改。当这个“脚本”注意到 json 文件更改将使用 tcp/ip 与嵌入式设备通信时,您可以 ping 设备或只是发送文件。如果您可以在嵌入式设备上设置 USART 中断,那么该设备将能够检测到传入的数据,因此通过读取您发送的数据或访问网站下载要解析的 json 文件来响应。

这样,您将拥有一个事件驱动嵌入式设备,并且不会浪费时间检查此 json 文件是否已更改。

我希望这有帮助

于 2010-07-23T21:21:32.493 回答