php网站通过wifi利用Socket与单片机通信封装函数,网站接收来自单片机的两个数据
时间: 2024-04-16 14:29:21 浏览: 72
PHP的Socket通信
要实现 PHP 网站通过 WiFi 利用 Socket 与单片机通信,并接收来自单片机的两个数据,你可以对上述的封装函数进行一些修改。以下是一个示例代码:
```php
// 创建与单片机的 Socket 连接
function createSocketConnection($host, $port) {
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
echo "Socket creation failed: " . socket_strerror(socket_last_error()) . "\n";
return false;
}
$result = socket_connect($socket, $host, $port);
if ($result === false) {
echo "Socket connection failed: " . socket_strerror(socket_last_error($socket)) . "\n";
return false;
}
return $socket;
}
// 发送消息给单片机
function sendMessageToMicrocontroller($socket, $message) {
$result = socket_write($socket, $message, strlen($message));
if ($result === false) {
echo "Message sending failed: " . socket_strerror(socket_last_error($socket)) . "\n";
return false;
}
return true;
}
// 从单片机接收消息
function receiveMessageFromMicrocontroller($socket, $length) {
$message = socket_read($socket, $length);
if ($message === false) {
echo "Message receiving failed: " . socket_strerror(socket_last_error($socket)) . "\n";
return false;
}
return $message;
}
// 关闭 Socket 连接
function closeSocketConnection($socket) {
socket_close($socket);
}
// 使用示例
$host = "192.168.0.100"; // 单片机的 IP 地址
$port = 1234; // 单片机监听的端口号
$socket = createSocketConnection($host, $port);
if ($socket !== false) {
// 发送第一个数据给单片机
$message1 = "Data1";
sendMessageToMicrocontroller($socket, $message1);
// 接收来自单片机的第一个数据
$receivedMessage1 = receiveMessageFromMicrocontroller($socket, 1024);
echo "Received message from microcontroller 1: " . $receivedMessage1 . "\n";
// 发送第二个数据给单片机
$message2 = "Data2";
sendMessageToMicrocontroller($socket, $message2);
// 接收来自单片机的第二个数据
$receivedMessage2 = receiveMessageFromMicrocontroller($socket, 1024);
echo "Received message from microcontroller 2: " . $receivedMessage2 . "\n";
// 关闭 Socket 连接
closeSocketConnection($socket);
}
```
在上述示例中,我们在使用示例的过程中调用了 `sendMessageToMicrocontroller` 函数两次,分别发送了 "Data1" 和 "Data2" 两个数据给单片机,并调用了 `receiveMessageFromMicrocontroller` 函数两次,分别接收了来自单片机的两个数据。你可以根据实际需求修改这些数据和函数名称来实现你的目标。同时,请确保单片机端也能正确发送和接收数据。
阅读全文