Adattatori W&T
per TCP/IP, Ethernet, RS-232, RS-485, USB, 20 mA
Fibra ottica di vetro e di plastica, http, SNMP, OPC, I/O digitale, I/O analogico, ISA, PCI, ecc.?
      Prodotti
Pagina iniziale Contatti   Distributori nel mondo
Lingue:
DE

US

ES

IT

RU
Misurazione climatica
Termografo web
WuTooth
Web-IO
Digitale
Analogico
Area speciale
Server dati
Motherbox 2
pure.box 2
memoria di rete
Server Ethernet TCP/IP
Com-Server (seriali)
Server USB
Adattatori seriali
USB, RS232, RS485, 20 mA
Isolatori & fibra ottica
USB, RS232, RS485, 20 mA
Schede PC
PCI Express, bus PCI e
Bus ISA
...
Adattatori stampanti
Accessori
Download
Cose vecchie
Carrello Il vostro carrello

 
      Conoscenze tecniche
Libri, articoli, glossari...
Informazione tecnica di base
Applicazioni per Com-Server,
Server USB
, Web-IO,
termometro web,
Motherbox e pure.box
 

Applicazione per la motherbox:

Interrogazione dati via rete con PHP



 Ulteriori link: Panoramica del prodotto Panoramica dell’applicazione Versione per la stampa


Un sito web mostra molti dispositivi...

motherbox php data request

La comunicazione di rete tra un browser e un terminale è possibile con tecniche web effettuate dal client (per es. JavaScript/AJAX, Java-Applet) solo se il terminale fornisce autonomamente il sito web interrogato. Le limitazioni di sicurezza collegate a queste tecniche web proibiscono severamente lo scambio di dati tra il browser (sito web caricato dalla periferica A) e altri terminali (B, C, ...).

Se venissero coinvolti più apparecchi contemporaneamente, p. es. per visualizzare le temperature misurate in più celle frigorifere su una pagina web, è necessario un accesso centrale con software eseguito dal server (p.es. PHP). Se sono presenti questi requisiti, limitazioni sopra menzionate non vengono più applicate. L’avvio della comunicazione è adesso compito del server web che è autorizzato a stabilire connessioni con un numero illimitato di terminali in rete.

Problema

Il presente esempio spiega come è possibile stabilire un collegamento socket ad una fonte di dati via PHP. Attraverso questo collegamento viene quindi consultato un valore di misura che viene visualizzato, alla fine, sul sito web nuovamente aperto. I parametri necessari (indirizzo IP, porta HTTP e numero del canale di misura) provengono da un modulo e vengono trasmessi per posta al richiamo della pagina.

Come server web con supporto PHP viene usata la Motherbox. La fonte di dati con punti di misura per temperatura, umidità dell’aria e pressione atmosferica è un termoigrobarografo web.

Per la realizzazione di questo esempio è necessario solo un file PHP che viene nuovamente richiamato alla richiesta di nuovi dati con il record di parametri necessari. Potete scaricare il file esempio qui.

Salvate il file esempio temperature_request.php nella cartella websites sulla motherbox. Utilizzate in seguito il seguente URL di richiamo da un browser qualsiasi:

http://<indirizzo IP>/websites/temperature_request.php

Screenshot sito web

Il testo sorgente

Nell’area PHP introduttiva si verifica l’inizializzazione delle variabili. Se il sito web viene richiamato inserendo l’URL nel browser, non viene trasmesso nessun valore per l’indirizzo IP, la porta HTTP e il numero del canale per posta. In questo caso le variabili vengono occupate con valori standard. Se il richiamo della pagina avviene attraverso l’interfaccia Request Data sul sito web, i valori inseriti dall’utente vengono trasmessi e attribuiti alle variabili.

<?php

if(isset($_POST["ip"])) {
  $ip = $_POST["ip"];
  $port = $_POST["port"];
  $slot = $_POST["slot"];
} else {
  $ip = "";
  $port = "80";
  $slot = 1;
}

?>

Nell’area head viene fissata la serie di caratteri e via CSS viene determinato l’orientamento e il design dei componenti HTML centrali.

Il modulo nel body serve all’immissione di dati da parte dell’utente. I campi di testo ip e port raccolgono dati su indirizzo IP e porta HTTP del Web-IO da consultare. I radiobutton slot stabiliscono il canale da consultare. Questi campi vengono compilati alla visualizzazione o con valori standard o con i valori attualmente interrogati via PHP. Se il modulo viene trasmesso, i dati inseriti vengono trasmessi per posta al server.

<form action="temperature_request.php" method="post">
  <table align="center">
    <tr>
      <th>IP-Address:</th>
      <td>
        <input name="ip" type="text" value="<?php echo $ip; ?>" />
      </td>
    </tr>
    <tr>
      <th>Port:</th>
        <td>
          <input name="port" type="text" value="<?php echo $port; ?>" />
        </td>
      </tr>
      <tr>
        <th>Channel:</th>
      <td>
        <input <?php if($slot == 1) echo "checked"; ?> name="slot" type="radio"
          value="1" />1&nbsp;
        <input <?php if($slot == 2) echo "checked"; ?> name="slot" type="radio"
          value="2" />2&nbsp;
        <input <?php if($slot == 3) echo "checked"; ?> name="slot" type="radio"
          value="3" />3&nbsp;
      </td>
    </tr>
    <tr>
      <td align="center" colspan="2">
        <input type="submit" value="Request Data" />
      </td>
    </tr>
  </table>
</form>

L’handling di comunicazione avviene nell’area PHP all’interno dell’elemento DIV measurement. Se al richiamo è stata trasmessa una serie di parametri, viene stabilito un collegamento socket con l’indirizzo IP e il numero di porta indicati. Per la realizzazione di un collegamento è definito un timeout di 3 s. In caso di errore viene visualizzato il testo Connection Error. Il simbolo @ davanti al comando fsockopen sopprire anche un messaggio di errore generato dal PHP. In caso di collegamento riuscito mediante la request GET /single, seguita dal numero di canale desiderato, viene richiesto il valore di misura. La risposta viene quindi letta carattere per carattere, fino a quando viene ricevuto un byte 0 che rappresenta la fine della risposta del Web-IO. La catena di caratteri composta alla ricezione viene ora convertita in un array, dove il punto e virgola è utilizzato come carattere di separazione dei singoli elementi. L’ultimo elemento dell’array rappresenta il valore di misura incl. l’unità, il penultimo elemento il nome del canale. Entrambi vengono visualizzati.

Al richiamo della pagina senza serie di parametri, non viene stabilita la comunicazione, vengono visualizzati esclusivamente tre trattini (---).

<?php

if($ip) {
  $handle = @fsockopen($ip, $port, $errno, $errstr, 3);
  if (!$handle)
    echo "Connection Error!";
  else {
    $response = "";

    fwrite($handle, "GET /single" . $slot);
    do {
      $data = fgets($handle, 2);
      if(ord($data) != 0)
        $response = $response . utf8_encode($data);
      else
        break;
    } while(true);
    fclose($handle);

    $parts = explode(";", $response);
    echo "<b>" . $parts[count($parts)-1] . "</b> (" . $parts[count($parts)-2] . ")";
  }
} else
  echo "---";

?>

In conclusione

La motherbox, con il suo server web PHP compatibile, offre tutto ciò che è necessario per la comunicazione con altri componenti della rete. Accedete ai valori di misura o ai dati di terminali diversi da un punto centrale e raggruppateli sul sito web. Questa funzione gateway è anch’essa utile per l’accesso dall’esterno a diversi terminali in reti private. Dovete solo impostare il NAT-Routing per la motherbox, invece che creare un accesso proprio per ogni terminale.


Applicazione precedente
Applicazione precedente
Applicazione successiva
Applicazione successiva
 
  • Mister Wong
  • Bookmark Google
  • Twitter
  • Facebook
  • Digg
   Colophon
Saremo lieti di fornirvi una consulenza personale! Wiesemann & Theis GmbH Tel.:: 0202/2680-110 (lun.-ven., ore 8-17)
Porschestr. 12 Fax: 0202/2680-265
42279 Wuppertal E-mail personale:

© Wiesemann & Theis GmbH, con riserva di errori e modifiche: poiché possono verificarsi errori, nessuna nostra informazione deve essere utilizzata senza essere stata verificata. Vi preghiamo di comunicarci tutti gli errori o gli equivoci che avete rilevato in modo tale che possiamo riconoscerli ed eliminarli quanto prima.