2010-07-23 2 views
0

Мне назначили обновление встроенного приложения, написанного на C. Приложение настроено через веб-интерфейс.Передача значений формы http программе C

Когда пользователь изменяет веб-приложение, файл записывается в /var/www/settings.json, а файл /var/www/UPDATE_SETTINGS затрагивается.

В основной петле приложения он проверяет, существует ли UPDATE_SETTINGS. Если он обрабатывает settings.json с помощью json-c, а затем удаляет UPDATE_SETTINGS.

Это работает достаточно хорошо, однако мы предпочли бы перейти к управляемой событиями архитектуре (возможно, libev), в которой settings.json напрямую подается в программу с помощью сценария webapp на обычный UDP-порт, а затем выдавать обратный вызов для выполнения обновления.

Какие еще элегантные способы решения этой проблемы? Должны ли мы придерживаться нынешнего подхода?

ответ

1

Просто используйте inotify. Он был создан для таких случаев, как ваш.

+0

Я полагаю, что это будет работать достаточно хорошо. Благодарю. – CoolAJ86

0

Я делаю некоторые предположения здесь.

1) вы постоянно подключаетесь к Интернету с помощью встроенного устройства. 2) ваше устройство может настроить прерывания на такие вещи, как «USART RX buffer not empty»

Примечание: в зависимости от того, какое оборудование вы используете, вы можете настроить прерывания на такие вещи, как пинги и другие вещи, это может быть другое способ прерывания встроенного устройства.

Если эти два предположения верны, вы можете сделать это, иметь другой «скрипт» на сервере или компьютере где-нибудь, что следит за /var/www/settings.json для изменений, вы можете использовать что-то вроде rsync для просмотра изменений. этот «сценарий», когда он замечает, что изменения json-файла будут взаимодействовать со встроенным устройством, используя tcp/ip, вы можете либо пинговать устройство, либо просто отправить файл. Если вы можете установить прерывание USART на встроенном устройстве, устройство сможет обнаруживать входящие данные и, следовательно, реагировать либо на чтение данных, которые вы отправляете, либо на веб-сайт для загрузки json-файла, который нужно разобрать.

Таким образом, у вас будет встроенное устройство привода событий, и он не будет тратить время на проверку, чтобы увидеть, изменился ли этот json-файл.

Я надеюсь, что это помогает

+0

Веб-приложение предназначено для конфигурации. Устройство не часто связано с «Интернетом». Тем не менее, у нас есть сторонние пользователи, которые POST к веб-приложению на устройстве, чтобы изменить настройки с помощью своих собственных приложений. – CoolAJ86

+0

Какое соединение имеет устройство? Есть ли способ заставить его подключиться? – jramirez

Смежные вопросы