正如标题中所写,我使用 PHP Desktop 制作了一个独立的 Web 应用程序,现在我希望它从串行端口发送和读取数据。
我首先尝试使用这个 PHP Serial 类(https://github.com/rubberneck/php-serial),但我遇到了一些问题,尤其是在读取数据方面,所以我转向了 javascript 和 node.js。
我安装了 Node.js,并使用了 npm、serialport 和 ws 包,并且我使 serialport 仅与 Windows cmd 上的 node 命令一起工作。我尝试遵循一些示例并使用 ws 包将代码扩展到我的 PHP 桌面应用程序,但似乎没有任何效果,现在我不知道如何继续。
大家有什么建议吗?(特别是关于如何继续使用 ws 包)
这样做的最佳解决方案是什么?
提前致谢。
这是我使用的代码:
PHP代码:
<?php
session_start();
include_once 'PhpSerial.php';
if(isset($_POST['serial'])) {
$serial = new phpSerial;
$serial->deviceSet("COM3");
$serial->deviceOpen('w+') ;
$serial->confBaudRate(115200);
$serial->sendMessage($_POST['serial'],1);
$_SESSION['serial_data'] = $serial->readPort();
$serial->deviceClose();
}
else
header('Location: index.php');
?>
JS 代码:(没有 ws 部分,不想工作)
var serialport = require('serialport');
var portName = "COM3";
var myPort = new serialport(portName, {
baudRate: 115200
});
myPort.on('open', showPortOpen);
myPort.on('data', readSerialData);
myPort.on('close', showPortClose);
myPort.on('error', showError);
function showPortOpen() {
console.log('port open. Data rate: ' + myPort.baudRate);
}
function readSerialData(data) {
console.log(data);
}
function showPortClose() {
console.log('port closed.');
}
function showError(error) {
console.log('Serial port error: ' + error);
}