2010-04-23 7 views
8

Sto cercando una bilancia postale che abbia già il supporto per linux (driver, ecc.) Per un sistema di spedizione su cui sto lavorando. Sto pensando di usare Ubuntu 9.04, ma sono disposto a cambiare la distro per compatibilità.Qualcuno sa di una bilancia postale USB compatibile con Linux?

Qualcuno sa di qualsiasi bilancia che attualmente funziona? Esiste un progetto open source che funziona su driver di scala o simili?

Grazie!

risposta

9

Uso la scala 5sb stamps.com. Puoi ritirarlo per $ 10 se ti registri un account con loro e poi annullarlo.

Per leggere da esso in linux, ottenere questo script: http://gist.github.com/503896

Modificare il file di script per impostare il percorso del dispositivo hidraw corretta. Puoi trovare il percorso eseguendo dmesg dopo aver collegato la bilancia. Vedrai qualcosa come "/ dev/hidraw2".

Dopo aver impostato il percorso hidraw nello script, aggiungere il permesso di esecuzione e quindi eseguirlo come root:

chmod + x usbscale.pl

sudo ./usbscale.pl

Inserire un oggetto sulla bilancia e stamperà il peso.

+0

Grazie per le informazioni! Siamo già clienti di stamps.com (è la loro API che utilizziamo per la nostra app). MA la scala libera che abbiamo (molto tempo fa) non ha affatto USB. Deve essere una scala più recente compatibile con USB. Potrei chiamare e chiedere loro se ci daranno la scala più recente. 5 LBS farà la maggior parte di ciò che spediamo. Tuttavia, a volte abbiamo bisogno di andare fino a 30 LBS. MA grazie per il link dello script, è un buon punto di partenza per me da modificare. – Nick

+0

Questa scala di Stamps.com assomiglia a 25LBS. È come quello che hai che funziona con la sceneggiatura? http://customer.stamps.com/Store/catalog/sku.jsp?productId=prod22441145&id=SC00002510 – Nick

+1

Non sono sicuro ... ha detto 5 libbre sul sito Web quando l'ho preso. Ma, l'ho sicuramente usato per pesare cose che sono più di 5 libbre e sembrava accurato. – mattismyname

5

Aggiornamento:

Ho creato una versione più recente del mio script in precedenza che mattismyname legato. E 'scritto in C, e lo si può trovare a https://github.com/erjiang/usbscale

Per usarlo, basta scaricare il codice sorgente e run (all'interno della sua directory):

sudo aptitude install libusb-1.0-0-dev 
make 
./usbscale 

potrebbe essere necessario copiare il 50-usb-scales.rules al /etc/udev/rules.d (o eseguito come root, haha) se si verifica un errore di autorizzazione.

0

Il valore dell'esponente viene passato come numero intero con segno e il peso viene passato nell'ordine byte little endian. Altre risposte do not properly account per questi fattori. See a more comprehensive example here.

<?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"; 
    } 
}