Latskap og utdeling av elevdatamaskiner

Jeg er lat. Nevnt det før, jeg veit. Jeg er fortsatt lat.

Om litt over en uke skal jeg dele ut rundt hundre datamaskiner. Jeg må holde orden på hvilken elev som har hvilken datamaskin, sånn at det ikke blir bare rot. Informasjonen om hvilken datamaskin som tilhører hvilken elev skal jeg lagre i en sentral database.

Har jeg tenkt å taste inn noe særlig manuelt her? Neppe.

Først og fremst fletter jeg elevenes navn og personnummer, skolenavn og annen informasjon direkte til utskrift av kontrakter. Jeg bare gjør en bitteliten vri på flettedokumentet. I tillegg til “det vanlige”, så fletter jeg inn en strekkode som representerer personnummeret til hver elev.

Strekkode får jeg ved å bruke den gratis skrifttypen Code 39 truetype barcode font. Sånn. Det er lett. Merk at hvis du bruker Microsoft Word, så kan Word ha det gøy med å autoformatere inn mellomrom og andre artige ting du ikke vil ha i samme font. Det kan du løse ved å vise skjulte tegn og formatere det som _ikke_ skal være strekkode i en annen font igjen.

Sådah, det var den enkleste biten. Når elevene da kommer tilbake med den ferdig underskrevne kontrakten med strekkode på, så gir jeg dem en datamaskin. Denne har også en strekkode under, og jeg vil da bare skanne strekkoden på kontrakten og på datamaskinen, og så er jeg ferdig med registreringen.

Det er tusen måter å gjøre dette på, her er min måte. Jeg bruker SL4A og Python interpreter for Android på telefonen og legger inn følgende python-skript:

import android
droid = android.Android()
(id, result, error) = droid.scanBarcode()
fnr = str(result[‘extras’][‘SCAN_RESULT’]
(id, result, error) = droid.scanBarcode()
snr = str(result[‘extras’][‘SCAN_RESULT’]
url = ‘http://10.10.10.10/cgi-bin/get.cgi&snr=’ + snr + ‘&fnr=’ + fnr
droid.startActivity(‘android.intent.action.VIEW’, url)

På datamaskinen som har ip 10.10.10.10 har jeg på forhånd klargjort et cgi-skript som ser slik ut:

#!/usr/bin/perl
sub populateQueryFields {
%queryString = ();
my $tmpStr = $ENV{ “QUERY_STRING” };
@parts = split( /\&/, $tmpStr );
foreach $part (@parts) {
( $name, $value ) = split( /\=/, $part );
$queryString{ “$name” } = $value;
}
}
&populateQueryFields;
$fnr = $queryString{ “fnr” };
$snr = $queryString{ “snr” };

print “Content type: text/html\n\n”;
print “$fnr,$snr\n”;
open (UTFIL, ‘>>/home/torarne/utfil.csv’);
print UTFIL “$fnr,$snr\n”;
close (UTFIL);
exec(“barcode -b $snr -c -e 39 | lpr -P QL-500 -o media=Custom.90x29mm”);

Tadah. Da er databasefila lagret i utfil.csv (og den kan pelles inn i eksisterende database med navn og sånt), og to etikketter kommer automatisk ut på etikettskriveren. Disse klistrer jeg på hver kopi av kontrakten.

Leave a Reply

Your email address will not be published. Required fields are marked *