私が取り組んでいる配送システムのLinuxサポート(ドライバーなど)がすでにある郵便はかりを探しています。Ubuntu 9.04を使用する予定ですが、互換性のためにディストリビューションを切り替えます。
現在機能している体重計を知っている人はいますか?スケールドライバーなどに取り組んでいるオープンソースプロジェクトはありますか?
ありがとう!
私は5ポンドのstamps.comスケールを使用しています。彼らと一緒にアカウントにサインアップしてからキャンセルすると、$10で受け取ることができます。
Linuxで読み取るには、次のスクリプトを入手してください:http: //gist.github.com/503896
スクリプトファイルを編集して、適切なhidrawデバイスパスを設定します。スケールを接続した後に実行すると、パスを見つけることができますdmesg
。「/ dev/hidraw2」のようなものが表示されます。
スクリプトでhidrawパスを設定した後、実行権限を追加して、rootとして実行します。
chmod + x usbscale.pl
sudo ./usbscale.pl
体重計に物を置くと、体重が印刷されます。
アップデート:
mattismynameがリンクした以前のスクリプトの新しいバージョンを作成しました。これはCで書かれており、 https://github.com/erjiang/usbscaleで見つけることができます。
これを使用するには、ソースコードをダウンロードして(ディレクトリ内で)実行するだけです。
sudo aptitude install libusb-1.0-0-dev
make
./usbscale
パーミッションエラーが発生した場合は、をにコピーする必要がある場合があり50-usb-scales.rules
ます/etc/udev/rules.d
(または、として実行します)。root
指数値は符号付き整数として渡され、重みはリトルエンディアンのバイト順で渡されます。他の回答はこれらの要因を適切に説明していません。ここでより包括的な例を参照してください。
<?php
$binary = fread(fopen('/dev/hidraw3', 'r'), 7);
$data = (object) unpack('Creport/Cstatus/Cunit/cexponent/vweight', $binary);
if ($data->report == 0x03 && $data->status == 0x04) {
$data->weight = $data->weight * pow(10, $data->exponent);
if ($data->unit == 0x0B) {
// convert ounces to grams
$data->weight *= 28.349523125;
// and unit to grams
$data->unit = 0x02;
}
if ($data->unit == 0x02) {
echo "{$data->weight} g\n";
} else {
echo "{$data->weight} in other unit\n";
}
}