Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Scrivere su seriale a seconda di una variabile

    Buongiorno a tutti!
    ho realizzato una pagina online per una gestire un sistema di ticketing.
    ho usato dei codici già esistenti per poter avere un portare che controlli sul database del mio sito se il ticket hanno già fatto il check in o meno e a seconda del riscontro del controllo sul mio database mostra un diverso messaggio in un pop up in videata.
    mi è venuta la pazza idea di provare ad interfacciare questa videata con arduino in modo di accendere una luce rossa se appare sul monito “biglietto già convalidato” o una lucina verde quando appare sullo schermo “biglietto ok”
    per arduino non è un problema accendere le luci dato che conosco abbastanza c++ (stavo giocandoci giusto stamane con due lucine e due pulsanti con anche un piccolo lcd) ma non ho la più pallida idea di come interfacciare arduino con la pagina web.....
    qualcuno sarebbe in grado di aiutarmi nella creazione di uno script da istallare sul pc che prenda la variabile della pagina HTML (app Google chrome) e la trasformi in un output sulla seriale come ad esempio una lettera (che sarebbe la cosa più comoda per poi programmare arduino)?

    grazie mille in anticipo a tutti i consigli ed aiuti che arriveranno
    Obitech

    ps. la variabile deve essere presa dalla pagina HTML dell’app
    Ultima modifica di Obitech96; 22-06-2020 a 14:26

  2. #2
    più che "prendere", non sarebbe meglio che fosse la pagina a "mandare"?

  3. #3
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,521
    Ciao,
    di modi possono essercene pi� di uno, ma HTML5 entra in gioco solo alla fine, quindi direi che il tuo problema parte da prima.
    La cosa pi� facile da fare � un programmino (in qualsiasi linguaggio che lo permetta) che scriva sulla seriale collegata ad arduino un comando relativo (che so 1 accende 0 spegne) ed accetti in ingresso un input quando deve attuare (pu� essere una lettura temporizzata da qualcosa, oppure accettare connessioni in ingresso ecc.)
    Ovviamente in questo caso il tuo server si dovrebbe trovare nella stessa macchina in sui � collegato Arduino, se cos� non dovesse essere allora � necessario che il computer a cui � collegato Arduino (in cui dovrebbe girare il software collegato alla seriale) possa essere visto dal server, in modo che esso possa interrogarlo (quindi firewall e nat configurati oppure sistemi per bypassarli).

    Quindi ricapitolando dovresti fare un software su una macchina collegata ad arduino che prenda in input il comando da attuare ricevuto dall'utente finale (pagina web) e mandi il comando alla seriale. Solo dopo che hai risolto questo puoi pensare ad html5.

    Ma c'� un ulteriore e (forse) pi� semplice modo, colleghi arduino direttamente al server tramite una scheda di rete oppure usi un modem collegato ad esso o ancora puoi usare dei modulini wifi (tipo ESP8266) che ti offre un po piu di potenza di arduino (niente di che si intenda) e gestisce il wifi, a qual punto puoi scegliere come configurare la rete (aprire nat e porte oppure usare websocket se il server lo permette) e mettere il sistema in attesa di comando. In questo caso il software di "collegamento" tra l'attuatore e il web sta dentro il firmware dell'arduino (o ESP8266) e ovviamente lo scrivi in c++. Ovviamente nel Modulino (o arduino) ti basta avere un server web nel caso attendi richieste http/s per comandare l'attuatore, o un server websocket o, nel caso il server websocket sia nel server web del "sito", usi un client websocket.

    Poi sto tralasciando i vari protocolli tipo MQTT ecc. ma il concetto comunque � quello.

  4. #4
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,521
    In effetti un altra possibilità (che non ho mai provato) è quella di provare ad interrogare la seriale direttamente da una pagina web tramite le api seriali HTML5
    Ma da quel che ho capito non c'è molta compatibilità con i browser.

  5. #5
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,521
    Ho fatto una prova e funziona se si imposta il browser (chrome) in modalità "sperimentale" (chrome://flags/#enable-experimental-web-platform-features e abilitarlo)

    Poi il codice è semplice:
    codice:
    async function sendCommand(command, vel) {
                var buffer = new ArrayBuffer(1);
                buffer[0] = command;
                var port = await navigator.serial.requestPort();
                await port.open({ baudrate: vel});
                var reader = port.readable.getReader();
                var writer = port.writable.getWriter();
                writer.write(buffer);
                while (true) {
                    var res = await reader.read();
                    if (res.done) break;
                    console.log(res.value);
                }
            }
    
    .....
    
    
    <button onclick="sendCommand(1,9600)">Write</button>
    in pratica recuperi la porta e la apri (passando la velocità oppure la metti fissa, vedi tu), poi dalla porta ricavi il reader e il writer e tramite quest ultimo invii il comando alla seriale, dopo leggi la seriale per eventuali risposte.
    Ovviamente il codice è minimale e va gestito ed adattato per le tue esigenze.

    Detto questo il fatto che devi impostare appositamente il browser fa passare tutta la fantasia. Diciamo che va bene se ad usarlo è un utente con device "locale" (tipo fornito da te che ti puoi impostare il browser), ma è ovvio che non è utilizzabile con i mezzi dell'utente, dovrai usare il tuo o impostare il browser dell'utente. Se invece ti serve "in produzione" senza fornire tu il device allora non rimane che un intermediario tra il browser e la seriale come suggerito in precedenza.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.