3 回答

TA貢獻(xiàn)1786條經(jīng)驗 獲得超11個贊
一種方法是設(shè)置 Node.js 環(huán)境,然后試用 serial.io
我找到了這個,也許這就是要走的路。
對于實(shí)時應(yīng)用程序,Node.js 是與 socket.io 一起使用的方式,用于在您的網(wǎng)站上進(jìn)行實(shí)時更新

TA貢獻(xiàn)1830條經(jīng)驗 獲得超3個贊
我剛剛使用 PHP 和 Powershell 完成了這項工作。讓 powershell 讀取串行端口并將數(shù)據(jù)轉(zhuǎn)儲到 xampp 中的文件中。然后 PHP 可用于讀取文件并用作 REST 調(diào)用處理程序。您可以通過 Ajax 調(diào)用 localhost 來獲取數(shù)據(jù)。
在您的機(jī)器上設(shè)置 xampp 在管理員模式下打開 Poweshell 并執(zhí)行以下命令。這將釋放 powershell 限制。否則 ps1 腳本無法在運(yùn)行時運(yùn)行。
Set-ExecutionPolicy Unrestricted
在 xampp/htdocs/ weight中創(chuàng)建一個目錄。我稱它為重量,你可以調(diào)用任何你想要的東西。使用以下代碼在文件夾中創(chuàng)建 .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);
?>
你現(xiàn)在已經(jīng)準(zhǔn)備好了。從 Xampp 控制面板運(yùn)行 tomcat 服務(wù)器,您就可以通過 POST 請求接收權(quán)重了。您可以撥打電話至http://localhost/weight/weightUtil.php
如果您發(fā)現(xiàn)訪問 C 盤中文件的權(quán)限有任何問題,只需添加everyone對 xampp 的完全訪問權(quán)限即可。事情就會順利進(jìn)行。

TA貢獻(xiàn)1890條經(jīng)驗 獲得超9個贊
嗯......在嘗試了一個腳本并試圖讓它在 Linux 中工作之后,我無法用 PHP 完成它,因為在 Windows 中,腳本只能寫入而不能從設(shè)備讀取數(shù)據(jù)。
我按照 Ifaruki 的建議使用 Node 和 serial.io(謝謝!?。?,并且使用以下腳本,我能夠正確讀取秤中的數(shù)據(jù)
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 不是很熟悉。
我現(xiàn)在需要做的是在瀏覽器中運(yùn)行這個功能,這樣我就可以在網(wǎng)頁中從設(shè)備中吐出數(shù)據(jù)......如果有人能指出我正確的方向......
- 3 回答
- 0 關(guān)注
- 357 瀏覽
添加回答
舉報