Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2001
    Messaggi
    743

    [javascript] lanciare un python con jscript

    Salve,
    devo lanciare un file.py
    sono riuscito a farlo con una pagina .php
    ma vorrei farlo senza refresh e in trasparenza con jscript

    il pulsante in html


    <form action="file.php" method="get">

    <input type="submit" value="luce" id="luce" style="height:23px;width:150px"/><br>

    </form>
    il file "file.php"



    <?php

    $param1 = '400'; #numero registro
    $param2 = '1'; #bit della word in questo caso %MX400.1


    $command= "python scrivi.py"; #nome del file python che scrivera' sul modbus
    $command .= " $param1 $param2 2>&1"; #crei la stringa da passare al python
    $pid = popen( $command,"r"); #passa la stringa al python
    pclose($pid); #chiude il processo...credo


    passthru("cat /var/www/pagina.html"); #ritorna alla pagina iniziale da cui hai schiacciato il bottone



    ?>



    come si può fare in un modo migliore??

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    il javascript agisce sul pc dell'utente... se anche avessi i permessi di esecuzione concessi dall'utente stesso dovresti avere installate anche tutte le librerie occorrenti per l'esecuzione del pyton ... e se il lancio lo facessi per tramite del php servirebbe pure quello.

    Se invece il .py risiede e deve essere eseguito sul server... hai sbagliato sezione
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2001
    Messaggi
    743
    si il .py deve essere eseguito sul server
    scusa.. allora in che seizione devo mettermi?

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2014
    residenza
    Voltati
    Messaggi
    913
    se vuoi eseguirlo tramite il php in php, se vuoi eseguire direttamente il python puoi richimarlo con ajax (e quindi la sezione js era ok )
    No

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2001
    Messaggi
    743
    che faccio lo riscrivo in js ?

    ma ho scritto in javascript no??

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2014
    residenza
    Voltati
    Messaggi
    913
    si si, la sezione allora era giusta

    se non devi ricevere dati basta fare
    codice:
    var ajax = new XMLHttpRequest;
    ajax.open("get", "url_della_pagina_sullo_stesso_dominio");
    ajax.send(/*Variabili da passare (facoltativo) (var1=val1&var2=val2...) */);
    altrimenti, http://www.html.it/guide/guida-ajax/
    No

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2001
    Messaggi
    743
    allora inquadro brevemnte la situzione con un esempio di pagina web
    ho un server debian web collegato alla domotica di casa.
    la pagina web in questione ha 5 link con 5 icone affianco che indicano se è accesa o spenta

    LUCE SALA (icona)
    LUCE INGRESSO (icona)
    LUCE CUCINA (icona)
    LUCE STANZA (icona)


    allora ho 2 script.. uno scrive i registri con python, e l'altro che li legge
    però sulla pagina web li voglio vedere sempre aggiornati.. quindi chiedo a voi qual'è la strada migliore
    1) creare un python che legge ogni 2 secondi e scrive in un DB i registri, poi nella pagina web fare in modo che ogni secondo il java controlli il DB e aggiorni le icone.
    2) non fare il database e ogni 2 secondi il java lancia il python che legge i dati e aggiorna la pagina

    che fare??

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2014
    residenza
    Voltati
    Messaggi
    913
    Ti faccio un esempio di come farei io lo script

    leggi.py
    codice:
    # (non badare alla correttezza sintattica, ho ddimenticato pure le basi ormai
    # Prendi i dati
    # Qui li assegno così, tu prendili da un db o dagli aggeggi che controllano le luci
    luci = {
        "sala": 1
        "ingresso": 0
        "cucina": 1
        "stanza": 0
    }
    chiavi = luci.keys()
    # Geanero la stringa in formato json
    risultato = '{'
    for stanza in chiavi:
        risultato = risultato + '"' + stanza + '":' + luci[stanza]
        if stanza != luci[chiavi[-1]]: risultato = risultato + ","
    risultato = risultato + "}"
    print(risultato)
    E la pagina che visualizza i dati:
    codice HTML:
    <table id="luci">
    </table>
    codice:
    document.addEventListener ("DOMContentLoaded", function () {
        setInterval (function () {  // Ripeto la chiamata ogni tot secondi
            var ajax = new XMLHttpRequest; // Chiamata ajax
            ajax.open ("get", "leggi.py");
            ajax.send ();
            ajax.onreadystatechange = function () {
                if (ajax.readyState == 4
                    && ajax.status == 200
                ) { // Agguorno la tabella
                    var dati = JSON.parse (ajax.responseText);
                    document.getElementById("luci").innerHTML = "<tr><td>Luogo</td><td>È accesa?</td></tr>";
                    for (luogo in dati) {
                        if (dati.hasOwnProperty (luogo)) {
                            document.getElementById("luci").innerHTML += "<tr><td>" + luogo + "</td><td>" + dati[luogo] + "</td></tr>";
                        }
                    }
                }
            };
        }, 5000);
    });
    No

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2001
    Messaggi
    743
    il mio .py per scrivere i registri che ho usato con la pagina di prova in php è questo:

    Codice PHP:
    #!/usr/bin/python
    import time
    import sys
    import minimalmodbus
    import os
     
    instrument 
    minimalmodbus.Instrument('/dev/ttyUSB0'1# port name, slave address (in decimal)
    instrument.serial.baudrate 57600   # Baud
    instrument.serial.bytesize 8
    instrument
    .serial.stopbits 1
    instrument
    .serial.timeout  0.2   # seconds
     
    int(sys.argv[1])   #variabile registro
    int(sys.argv[2])  #variabile bit
     
     
    instrument.write_register(s,q# comando accensione 
    invece per leggere i registri è cosi
    Codice PHP:
    instrument.read_register(s,q# comando accensione 

  10. #10
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Per evitare ulteriori rimbalzi fra sezioni del forum, approfondisci e risolvi la parte javascript, poi casomai ti sposto altrove.

    Se vedo altro codice lato server chiudo
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.