RS232 経由で接続されたはかりから重量を読み取り、それを Web アプリケーションにダンプできるかどうか尋ねられました。
これは JavaScript を介して直接行うことはできませんが、カスタムのクライアント側またはサーバー側のソリューションが役立ちます。この機能を Web ページに公開するサーバー側およびデスクトップ製品がいくつかあります (RS232 スケール、USB スケール)。
Gordonの推奨するQZ Tray アプローチ(PC に QZ Tray がインストールされていると仮定し、ページがQZ Tray を使用するように構成されていると仮定)について詳しく説明するために、メトラー トレド スケールに接続されたシリアル ポートで機能するテクニックを次に示します。コマンドははかりメーカーによって異なるため、必要に応じて調整してください。
免責事項、私たちは QZ Tray の作成者です。
COM1に接続、コマンド送信、切断
// MT = Mettler Toledo. Change as needed.
var port = 'COM1'; // <-- COM1, '/dev/ttyUSB0', etc
var cmd = 'W\n'; // <--- MT Weight command
var baud = {
baudRate: 9600,
dataBits: 7, // <--- MT Changed from 8
stopBits: 1,
parity: 'EVEN', // <--- MT Changed from NONE
flowControl: 'NONE'
};
var delims = {
begin: '\x02', // <--- MT start of message
end: '\x0D', // <--- MT end of message
width: null // <--- MT doesn't use width
};
qz.serial.openPort(port, delims).then(function() {
return qz.serial.sendData(port, cmd, baud);
}).catch(function(err) { console.error(err); } );
qz.serial.setSerialCallbacks(function(evt) {
if (evt.type !== 'ERROR') {
console.log('Serial', evt.portName, 'received output', evt.output);
} else {
console.error(evt.exception);
}
// Close port
return qz.serial.closePort(evt.portName);
});
Fedex と UPS のラベルで、似ているが逆の状況に陥っています。Web アプリケーション内でラベル データを取得できますが、生のプリンター ソケットを介してそのデータをローカル プリンターに送信する必要があります (つまり、[ファイル] > [印刷] だけではできません)。
https://stackoverflow.com/a/28783269/3196753の複製。