Serial Port Packets to network.


Peut-on envoyer les paquets reçus et envoyés vers un serveur ?

Oui ! Enfin, SerialTool vous permet d'envoyer le trafic du port série COM directement sur le réseau.
Vous pouvez choisir parmi ces différentes méthodes :

  • TCP - SerialTool connecte les dispositifs via TCP/IP et transmet les données du port série de manière sécurisée vers un serveur. Cela garantit une communication fiable et ordonnée entre SerialTool et le serveur. C'est comme un appel téléphonique avec confirmation.
    Vous pouvez tester ces fonctionnalités en utilisant un logiciel multiplateforme gratuit appelé PacketSender pour évaluer la connexion TCP.
    Limité à 5 paquets dans la version gratuite.

  • UDP - SerialTool utilise l'UDP pour envoyer rapidement des données série vers un serveur sans les complexités du handshake TCP. Idéal pour une communication ultra-rapide, il sacrifie une certaine fiabilité au profit de la vitesse. C'est comme des messages rapides, pratiques mais moins garantis.
    Vous pouvez tester ces fonctionnalités en utilisant un logiciel multiplateforme gratuit appelé PacketSender pour évaluer la connexion UDP.
    Limité à 5 paquets dans la version gratuite.

  • HTTP/HTTPS POST - SerialTool offre la flexibilité d'utiliser la méthode HTTP/HTTPS POST pour transmettre des données à un serveur web. Cette méthode imite l'envoi d'un formulaire en ligne, où les données sont encapsulées dans la requête HTTP et envoyées en toute sécurité au serveur. Que ce soit pour envoyer des lectures de capteurs, des saisies utilisateur ou tout autre type de données, la fonction HTTP/HTTPS POST de SerialTool simplifie le processus. Cette approche permet une intégration transparente avec diverses applications basées sur le web, permettant de traiter, stocker ou agir efficacement sur les données côté serveur. En exploitant cette méthode, SerialTool étend ses capacités et sa connectivité, ouvrant la voie à une large gamme de possibilités pour l'interaction en temps réel avec les serveurs web.
    Un extrait de code PHP est fourni pour tester les appels POST et GET.
    Les ports standard sont 80 pour HTTP et 443 pour HTTPS.
    Disponible uniquement dans la version PRO.

  • HTTP/HTTPS GET - SerialTool facilite la transmission de données vers les serveurs web en utilisant la méthode HTTP GET. Similaire à la saisie d'une URL dans un navigateur, SerialTool construit une requête HTTP avec des paramètres de données et les ajoute à l'URL. Lorsque la requête atteint le serveur, elle traite les paramètres et répond en conséquence. Cette méthode est pratique pour obtenir des informations ou déclencher des actions côté serveur. En utilisant la méthode HTTP GET, SerialTool permet une intégration transparente avec les systèmes basés sur le web, permettant une récupération efficace de données et une interaction avec les serveurs distants. Cette fonctionnalité élargit les capacités de l'outil, en en faisant un choix polyvalent pour diverses applications nécessitant l'échange et l'interaction de données basées sur le web.
    Un extrait de code PHP est fourni pour tester les appels POST et GET.
    Les ports standard sont 80 pour HTTP et 443 pour HTTPS.
    Disponible uniquement dans la version PRO.

PHP code snippet for HTTP/HTTPS POST and GET packet sending

HTTP/HTTPS GET usage from SerialTool

• Select "HTTP/HTTPS Get" as "Protocol"
• Set "https://yourwebsite.com/receive_test.php?value1=1" as "Server Address"
• Press [Send Test Packet] button

If the receive_test.php is loaded and functioning on your server, you should receive a message in the SerialTool message box stating:

#RES>OK - Written: XX bytes in received_packet.txt

HTTP/HTTPS POST usage from SerialTool

• Select "HTTP/HTTPS Post" as "Protocol"
• Set "https://yourwebsite.com/receive_test.php?myvalue=1" as "Server Address"
• Press [Send Test Packet] button

If the receive_test.php is loaded and functioning on your server, you should receive a message in the SerialTool "Connection Test" message box stating:

#RES>OK - Written: XX bytes in received_packet.txt

The result is a file called received_packet.txt located in the same folder where you loaded the PHP script and shoud look like this:

                    
                      @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
                      @   SerialTool received packets log file
                      @   Date: 2023-08-23
                      @   Time: 20:00:00
                      @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
                       Message received from IP [111.110.109.108] at 2023-08-23 20:00:00 [POST DATA 16 bytes] 0001020304050607
Message received from IP [111.110.109.108] at 2023-08-23 20:00:01 [GET DATA] Key: myvalue, Value: 1

PHP script
                        
<?php                          
/*
 ____________________________________________________________________________
║                                                                            ║
║  Application Name  : SerialTool                                            ║
║  Author            : SerialTool Dev Team                                   ║
║  IDE:              : php                                                   ║
║  File Generated    : 23/08/2023                                            ║
║                                                                            ║
╚════════════════════════════════════════════════════════════════════════════╝

 Usage: path/to/this/file/receive_test.php
 Logfile will be on the same directory with the name received_packet.txt

*/
   // Set your local time here
  date_default_timezone_set("Europe/Rome");

  // Prepare Header to HOST Incoming Data
  $MessagePayload = "";
  $MessagePayload .= " Message received from IP [" . $_SERVER['REMOTE_ADDR']. "] at " . date('Y-m-d H:i:s');

  // ----------------------------------------------
  // Receive the POST or GET data
  // ----------------------------------------------
  if ($_SERVER['REQUEST_METHOD'] === 'POST') {
      // The request method is POST
      $MessagePayload .= " [POST DATA ";
      $MessagePayload .= strlen(file_get_contents('php://input')) . " bytes] ";
      $MessagePayload .= file_get_contents('php://input') . PHP_EOL;;      
  } elseif ($_SERVER['REQUEST_METHOD'] === 'GET') {
      // The request method is GET      
      $MessagePayload .= " [GET DATA] ";      
      foreach ($_GET as $key => $value) {
          $MessagePayload .=  "Key: $key, Value: $value" . PHP_EOL;          
      }
  } else {
      // Handle other HTTP methods as needed
      $MessagePayload .= " [UNSUPPORTED HTTP METHOD] 
"; } // ---------------------------------------------- // Save Message to file // ---------------------------------------------- $LOG_Paypload = ""; $LogFilePath = "received_packet.txt"; if (file_exists($LogFilePath) === false){ // Put header $currentTimestamp = time(); $currentDate = date('Y-m-d', $currentTimestamp); // Format date as 'YYYY-MM-DD' $currentTime = date('H:i:s', $currentTimestamp); // Format time as 'HH:MM:SS' $LOG_Paypload .= "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" . PHP_EOL; $LOG_Paypload .= "@ SerialTool received packets log file" . PHP_EOL; $LOG_Paypload .= "@ Date: $currentDate" . PHP_EOL; $LOG_Paypload .= "@ Time: $currentTime" . PHP_EOL; $LOG_Paypload .= "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" . PHP_EOL ; } $logDay = date('d'); $logMonth = date('F'); $logYear = date('Y'); $logTime = date('H:i:s'); // Add Payload $LOG_Paypload .= $MessagePayload . PHP_EOL; $iResult = file_put_contents($LogFilePath, $LOG_Paypload, FILE_APPEND); if ($iResult === false){ echo "#RES>KO
"; } else{ echo "#RES>OK - Written: " . $iResult . " bytes in " . $LogFilePath . "
"; } ?>