Uno sviluppatore C incorporato che desidera interfacciare codice con una pagina Web

2

Ok, come dice il titolo, sono uno sviluppatore C / C ++ integrato.

In questo momento, sto lavorando a un progetto che coinvolge un'applicazione C client / server. Il lato server dell'applicazione è in esecuzione su più nodi SoC che vengono distribuiti in posizioni casuali (vengono scaricati da una batteria e utilizzano un modem cellulare per la comunicazione).

In questo momento, vorrei effettuare il polling delle informazioni su questi nodi. Quindi ho un computer centrale che chiamo il mio server, ma che sta eseguendo l'applicazione lato client del progetto (tenere presente la nomenclatura qui). Eseguo il mio programma dalla riga di comando con un indirizzo IP e altri parametri come input. Stabilisce una connessione TCP con un nodo, lo invia un pacchetto di richiesta e il nodo risponde con un pacchetto di risposta. Quindi scrivo questi dati in un file CSV sul computer server (quello che ha avviato la richiesta). Il socket è chiuso, e il gioco è fatto.

Una delle modalità in cui viene eseguita è la "modalità live", in cui il client crea una connessione TCP a uno dei nodi (eseguendo la parte server dell'applicazione) e restituisce i dati una volta al secondo. Quando i dati vengono restituiti, un file CSV viene aggiunto a. Una volta che il programma riceve un segnale di interruzione, si arresta con garbo.

Ora mi piacerebbe fare un po 'di più. Vorrei che un utente fosse in grado di controllare questa applicazione tramite un browser web.

La soluzione hacky che mi è venuta in mente è di avere un pulsante su una pagina. Quando si preme questo pulsante, faccio un shell_exec(/srv/bin/myApp_cli <parameters> &) . Quindi attraverso AJAX Javascript, la pagina inizia a leggere dal suo file di output una volta al secondo. Guarda l'ultima riga del file CSV e la pubblica sullo schermo. Quando voglio interrompere questa applicazione, faccio shell_exec(killall -2 myApp_cli) .

Funziona, ma il mio dio è un modo hacky di fare qualcosa che dovrebbe essere facile. Queste due parti del progetto più grande: la porzione web e la porzione del server client C; sono estremamente indipendenti l'uno dall'altro.

La mia domanda è .. come posso interfacciare il mio semplice programma C con PHP o qualsiasi altro linguaggio web facilmente (ho scelto PHP perché è l'unica vera lingua di back-end che conosco). Quale sarebbe l'approccio migliore per ottenere ciò che mi piacerebbe fare? Soprattutto nel caso in cui eseguo un programma indefinitamente fino a quando non desidero inviarlo un segnale per interrompere?

    
posta justynnuff 11.02.2015 - 01:14
fonte

1 risposta

1

Il miglior linguaggio server Web back-end per un programma C incorporato è ... C!

Ci sono molti server Web C incorporati che sono banalmente facili da usare, ho aggiunto civetweb al mio servizio qualche tempo fa ed era troppo facile. Civetweb è un fork non GPL di Mongoose, ma ce ne sono altri come NxWeb.

Civetweb ha alcuni esempi, inclusi quelli che includono il supporto Lua e le websocket se hai bisogno di risposte push al browser web, il tutto in una manciata di linee di codice.

    
risposta data 11.02.2015 - 11:56
fonte

Leggi altre domande sui tag