Serial Port Packets to network.
可以将收发的数据包发送到服务器吗?
是的!最终,SerialTool 允许您将串口数据直接发送到网络。
您可以选择以下不同的方法:
-
TCP - SerialTool 通过 TCP/IP 链接设备,将串口数据安全地传输到服务器。它确保 SerialTool 与服务器之间的可靠有序通信。这就像带有确认的电话呼叫。
您可以使用名为 PacketSender 的免费跨平台软件测试这些功能,以评估 TCP 连接。
在免费版本中限制为 5 个数据包。 -
UDP - SerialTool 使用 UDP 快速将串口数据发送到服务器,无需 TCP 握手的复杂性。适用于超高速通信,但以可靠性为代价,追求速度。这就像快速的消息-方便但不太可靠。
您可以使用名为 PacketSender 的免费跨平台软件测试这些功能,以评估 UDP 连接。
在免费版本中限制为 5 个数据包。 -
HTTP/HTTPS POST - SerialTool 提供了使用 HTTP/HTTPS POST 方法将数据传输到 Web 服务器的灵活性。该方法模仿提交在线表单的操作,数据封装在 HTTP 请求中,安全地发送到服务器。无论是发送传感器读数、用户输入还是其他任何形式的数据,SerialTool 的 HTTP/HTTPS POST 功能都简化了这个过程。这种方法可以与各种基于 Web 的应用无缝集成,允许数据得到高效处理、存储或由服务器执行操作。通过利用这种方法,SerialTool 增强了其功能和连接性,为与 Web 服务器的实时数据交互打开了广泛的可能性。
提供了一个 PHP 代码片段以测试 POST 和 GET 调用。
标准端口为 HTTP 的 80 和 HTTPS 的 443。
仅在 PRO 版本中受支持。 -
HTTP/HTTPS GET - SerialTool 通过 HTTP GET 方法便捷地将数据传输到 Web 服务器。类似于在浏览器中输入 URL,SerialTool 构建带有数据参数的 HTTP 请求,并将其附加到 URL 中。当请求到达服务器时,服务器会处理参数并做出相应的响应。该方法适用于获取信息或在服务器端触发操作。通过使用 HTTP GET 方法,SerialTool 实现了与 Web 基础系统的无缝集成,允许高效地检索数据并与远程服务器进行交互。这个功能扩展了工具的能力,使其成为适用于各种需要基于 Web 的数据交换和交互的应用的多功能选择。
提供了一个 PHP 代码片段以测试 POST 和 GET 调用。
标准端口为 HTTP 的 80 和 HTTPS 的 443。
仅在 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 . "
";
}
?>