Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Javascript或PHP从数字秤的串行端口获取数据?_Javascript_Php_Serial Port - Fatal编程技术网

使用Javascript或PHP从数字秤的串行端口获取数据?

使用Javascript或PHP从数字秤的串行端口获取数据?,javascript,php,serial-port,Javascript,Php,Serial Port,我不知道这是否真的可能,但我需要用JavaScript或PHP从卡车的数字秤上获取重量 目前,电子秤连接到一台速度非常慢的PC上,该PC上运行的是Windows XP以及该公司开发的定制软件。该公司开发了电子秤,用于保存不同车辆的注册表 每天都要称重 不幸的是,这台电脑无法升级,因为我会丢失所有的驱动程序,而且该软件在较新版本的Windows上无法运行 我在想,如果我可以与串行设备通信,通过Javascript或PHP获取数据,并获得与自定义软件相同的权重,那么我可以使用PHP和MYSQL后端制

我不知道这是否真的可能,但我需要用JavaScript或PHP从卡车的数字秤上获取重量

目前,电子秤连接到一台速度非常慢的PC上,该PC上运行的是Windows XP以及该公司开发的定制软件。该公司开发了电子秤,用于保存不同车辆的注册表 每天都要称重

不幸的是,这台电脑无法升级,因为我会丢失所有的驱动程序,而且该软件在较新版本的Windows上无法运行

我在想,如果我可以与串行设备通信,通过Javascript或PHP获取数据,并获得与自定义软件相同的权重,那么我可以使用PHP和MYSQL后端制作一个小网页 这与定制软件的功能相同,但我实际上缺少了所有功能并升级了PC

我买了一个串行到USB适配器,并将该设备连接到我的Windows 10笔记本电脑上,看起来它正在正确地传输数据,如图所示

我一直在寻找使用Javascript与串行设备通信的方法,我认为使用NodeJS可以做到这一点,但我不知道是否可以将其实现到网页上。而且我还没有在C或C++或C语言中写任何东西,所以我不知道我会从这些语言中做些什么(我看到的很多答案是用其中的一个来做的)。p> 我还看到了一个名为chrome.serial的chrome应用程序,但我还没有找到任何工作示例来说明如何继续


任何帮助都将不胜感激!!!:)

一种方法是设置Node.js环境,然后尝试serial.io

我已经找到了,也许这就是路


对于实时应用程序,Node.js是与socket.io一起使用的方式,用于在您的网站上进行实时更新。。。在尝试了一个脚本并试图让它在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不太熟悉


我现在需要做的是在浏览器中运行此功能,这样我就可以在网页中从设备中吐出数据。。。如果有人能给我指出正确的方向,请告诉我……

我刚刚用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


如果您发现在C驱动器中访问文件的权限有任何问题,只需添加对xampp具有完全访问权限的
everyone
。然后事情就会顺利进行。

你能试着用一下吗?我现在就去看看。谢谢我想我不想通过Node来做这件事,因为我不熟悉它,我必须在几周内完成这件事,最多或者再等6个月,以获得可用的时间,但我已经安装了它,我正在检查它。谢谢你的提示!