3 回答

TA贡献1786条经验 获得超11个赞
一种方法是设置 Node.js 环境,然后试用 serial.io
我找到了这个,也许这就是要走的路。
对于实时应用程序,Node.js 是与 socket.io 一起使用的方式,用于在您的网站上进行实时更新

TA贡献1830条经验 获得超3个赞
我刚刚使用 PHP 和 Powershell 完成了这项工作。让 powershell 读取串行端口并将数据转储到 xampp 中的文件中。然后 PHP 可用于读取文件并用作 REST 调用处理程序。您可以通过 Ajax 调用 localhost 来获取数据。
在您的机器上设置 xampp 在管理员模式下打开 Poweshell 并执行以下命令。这将释放 powershell 限制。否则 ps1 脚本无法在运行时运行。
Set-ExecutionPolicy Unrestricted
在 xampp/htdocs/ weight中创建一个目录。我称它为重量,你可以调用任何你想要的东西。使用以下代码在文件夹中创建 .ps1 脚本
Start-Process PowerShell -Verb RunAs
$COM = [System.IO.Ports.SerialPort]::getportnames()
function read-com {
$port= new-Object System.IO.Ports.SerialPort $COM,9600,None,8,one
$port.Open()
do {
$line = $port.ReadLine() | Out-File -FilePath C:\xampp\htdocs\weight\weight.txt
Write-Host $line # Do stuff here
}
while ($port.IsOpen)
}
read-com
添加一个 PHP 文件。我称它为 weightUtil.php。将以下代码添加到其中。
<?php
header("Access-Control-Allow-Origin: *");
$data = '';
$myFileName = "weight.txt";
$myfile = fopen($myFileName, "r") or die("Unable to open file!");
if(filesize($myFileName) > 0){
$data = fread($myfile,filesize($myFileName));
}
echo $data;
fclose($myfile);
?>
你现在已经准备好了。从 Xampp 控制面板运行 tomcat 服务器,您就可以通过 POST 请求接收权重了。您可以拨打电话至http://localhost/weight/weightUtil.php
如果您发现访问 C 盘中文件的权限有任何问题,只需添加everyone对 xampp 的完全访问权限即可。事情就会顺利进行。

TA贡献1890条经验 获得超9个赞
嗯......在尝试了一个脚本并试图让它在 Linux 中工作之后,我无法用 PHP 完成它,因为在 Windows 中,脚本只能写入而不能从设备读取数据。
我按照 Ifaruki 的建议使用 Node 和 serial.io(谢谢!!),并且使用以下脚本,我能够正确读取秤中的数据
var SerialPort = require('serialport');
var io = require('socket.io').listen(3000);
var serialPort = new SerialPort("COM4", {
baudRate: 9600,
parser: new SerialPort.parsers.Readline("\n"),
dataBits: 7,
parity: 'none',
stopBits: 1,
flowControl: false
});
io.sockets.on('connection', function(socket){
socket.on('message', function(msg){
console.log(msg);
});
socket.on('disconnected', function(){
console.log('disconnected');
});
});
var clearData = "";
var readData = "";
serialPort.on('open',function(){
console.log('open');
serialPort.on('data', function(data){
const buf2 = Buffer.from(data)
let wArray = buf2.toString('utf8');
//this part just removes characters I don't need from the data
let wSlice = wArray.slice(3, wArray.length);
let rawWeight = wSlice.slice(0, -3);
let fWeight = rawWeight.trim();
let weight = parseInt(fWeight);
console.log(weight);
});
});
setTimeout(function(){
serialPort.close(function(){
console.log("Port Closed!");
});
}, 3000);
我对 Node.js 不是很熟悉。
我现在需要做的是在浏览器中运行这个功能,这样我就可以在网页中从设备中吐出数据......如果有人能指出我正确的方向......
- 3 回答
- 0 关注
- 312 浏览
添加回答
举报