How-To: un'applicazione di verifica / debugger della memoria condivisa basata su browser, in tempo reale [chiusa]

2

Sfondo:

Ho un'applicazione C in esecuzione su Linux che utilizza memoria condivisa. Ho anche un debugger scritto in Python che può collegarsi a detta memoria condivisa e accedere a valori di variabili individuali di portata globale.

Domanda:

Come posso sviluppare un'applicazione / una pagina locale basata su browser che, tramite il mio processo Python, posso connettermi per visualizzare valori di variabili quasi in tempo reale in una forma prettificata?

Usage:

Dovrei essere in grado di avviare le mie applicazioni in background, quindi avviare questa applicazione server / client in un browser, quindi avere un'opzione per caricare una pagina con un elenco di nomi di variabili (comunicazione a 2 vie), dopo di che dovrebbe semplicemente inizia a visualizzare tutti i nomi con i loro valori.

Cosa mi serve:

Soluzione tecnica per flussi di processo, che utilizza solo Python se possibile (è necessario comprendere html / css / js / etc) e fornisce la possibilità di aggiornare automaticamente l'elenco di valori della pagina del browser a > = 20Hz.

Ulteriori dettagli:

  • È necessario aggiornare la pagina tra 20-60 Hz, preferibilmente nell'ordine (ad esempio, "tempo" può essere un valore e si desidera aggiornare come 1.3 - > 1.4 - > 1.5 ...
  • Deve solo lavorare con Firefox
  • Sviluppo solo per Linux, non preoccuparti di Windows o Mac
  • Non voglio usare una vera app GUI come QT / WX / GTK
posta 5upa 22.10.2014 - 01:19
fonte

2 risposte

4

Il concetto di app web locale è buono e appropriato. Ho costruito molti di questi e funzionano bene. Hanno tempi di aggiornamento molto rapidi e mi permettono di lavorare con gli strumenti Web piuttosto che con il declino dei toolkit della GUI.

Raccomando una connessione WebSocket basata sul tuo codice Python e sulla tua pagina web / client / app. Questo ti darà velocità di aggiornamento quasi in tempo reale e la possibilità di comunicare bidirezionalmente tra Python e un'applicazione / front-end basata su JavaScript. Puoi usare qualunque framework JavaScript o widget che ti piace. Ci sono alcuni grafici , grafici abbastanza buoni, e , e I visualizzazione dei framework per le app Web in questi giorni - alcuni meglio di quelli che si vedono in genere nelle GUI, anche.

Ci sono un numero crescente di modi per integrare WebSockets e Python. Preferisco il Flask framework di app web per la sua combinazione di semplicità e generalità. Puoi eseguirlo in modo nativo (ha un web server integrato), in cima a Tornado, dietro un vero server web, ecc. Per un'app locale, puoi controllare questa semplice demo che non richiede middleware extra .

    
risposta data 22.10.2014 - 03:24
fonte
1

Potresti utilizzare una libreria server HTTP come libonion (o forse Wt) , forse anche nella tua applicazione C, e usa AJAX tecniche (magari con Jquery ) e forse WebSocket - per aggiornare periodicamente la pagina web dinamica. FWIW, il mio monitor MELT sta facendo questo.

Si noti che la tecnologia Web non può garantire alcuna frequenza di aggiornamento, in particolare in caso di latenza prolungata (immagina che il browser sia in Australia e l'applicazione C in esecuzione negli Stati Uniti con un < em> cattiva connessione Internet tra di loro). Ma se sia il programma server HTTP (ad esempio l'applicazione C che utilizza libonion ) e il browser sono vicini (sulla stessa LAN) probabilmente sarebbe in grado di ottenere aggiornamenti a 20Hz.

A mio avviso, potrebbe non essere necessario alcun codice Python o PHP (aggiungendo l'abilità del server HTTP nell'applicazione C con libonion ). Tuttavia, è necessario acquisire familiarità con le tecnologie web ( HTML5 , Javascript , DOM ) e HTTP . Per questo w3schools -e altri siti web- non è perfetto ma ha molte informazioni utili.

Se per qualsiasi motivo hai ancora bisogno di un processo Python separato, sono sicuro che saresti in grado di trovare le librerie del server HTTP Python.

    
risposta data 22.10.2014 - 09:00
fonte

Leggi altre domande sui tag