我不知道这是否真的可行,但我需要用JavaScript或PHP从卡车的电子衡中获得重量。
目前,该称重连接到一台运行Windows XP且运行速度极慢的个人电脑上,以及该公司开发的一款定制软件,该软件用于记录每天称重的不同车辆。
不幸的是,这台电脑无法升级,因为我会丢失所有驱动程序,而且该软件无法在更新版本的Windows上运行。
我在想,如果我可以与串行设备通信并获得数据,无论是通过Javascript还是PHP,并获得与自定义软件相同的重量,那么我可以用PHP和MYSQL后端制作一个小网页,它做的事情与自定义软件做的事情相同,但具有我实际上缺少的所有功能,并升级PC。
我买了一个串口转USB卡,把它连接到我的Windows10笔记本电脑上,就像你在this picture中看到的那样,它似乎可以正确地传输数据
我已经寻找了使用Javascript与串行设备通信的方法,我认为使用NodeJS可以做到这一点,但我不知道是否可以将其实现为网页。此外,我没有用C、C++或C#写过任何东西,所以我不知道如何使用这些语言(我看到的很多答案都是使用这些语言中的一种)。
我还看到有一个名为chrome.serial的chrome应用程序,但我还没有找到任何可以指导我如何继续操作的工作示例。
非常感谢您的帮助!:)
发布于 2020-01-26 01:06:59
一种方法是设置Node.js环境,然后试用serial.io
我发现了这一点,也许这就是解决之道。
对于实时应用程序,Node.js是与socket.io配合使用的方式,用于在您的网站上进行实时更新
发布于 2020-01-28 02:43:25
好吧..。在尝试了一个脚本并试图让它在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并不是很熟悉。
我现在需要做的是在浏览器中运行这个函数,这样我就可以在网页中显示来自设备的数据……如果有人能给我指出正确的方向,请……
发布于 2020-07-19 12:07:22
我刚刚使用PHP和Powershell完成了这项工作。让powershell读取串行端口并将数据转储到您的xampp中的一个文件中。然后,可以使用PHP读取文件并充当REST调用处理程序。您可以对localhost进行Ajax调用以获取数据。
在您的机器上设置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进行post调用
如果您发现C驱动器中的文件访问权限有任何问题,只需添加具有完全访问xampp权限的everyone即可。然后事情就会顺利进行。
https://stackoverflow.com/questions/59911277
复制相似问题