Here is a sound track I recorded using my MC60
so that you can use it to test the programs and see that you are doing
everything well. First you have to fix it using my script:
Linux prompt>./fixmc60wav.csh soundtrack.wav
and then decode it using my program with a command line like this (output also
included):
Linux prompt>sox fixed_soundtrack.wav -t dat - | grep -v Channels | ./soundtrack -t 1 -c 55 -m z
Bad or no peak duration parameter, using default: 1
Bad or no stop duration parameter, using default: 500
Reading track 1
Bad or no threshold level parameter, using data...
Noise max./mean/rms amplitude: 0.002/-0.000/0.000
Threshold: 0.003
Recognition error of bit 697, stopping.
Swipe time: 0.553 s
Data max./mean/rms amplitude: 0.111/-0.000/0.022
Bits: 696, individual duration: 0.795 ms
Start sentinel found
%RUEDA, J?
End sentinel found
LRC OK.
Improvements
I know the process described above is somewhat complicated and tedious, but
what did you expect for free? :-) It is very unpleasant to record stripes with
the mobile and later to have to transfer them to a PC with Windows and then
reboot in Linux (or transfer to a second PC with Linux) to decode data. Then
you can realize that some tracks were not correctly recorded and that you have
to swipe them again, but you may no longer have the chance; so I advise to
record more than one swipe per track.
To overcome these caveats I considered the possibility of writing a program
to record and decode the tracks, all in one, within the mobile itself, taking
advantage of the MC60 Java feature. You can download for free the Siemens Mobility
Toolkit (free registration is required) and the Java Software Development Kit for Windows
required by the Siemens kit. When I had a look I realized that the Siemens Java
API is rather primitive and limited. There is no API to capture sound from the
microphone, so you must use the "New ring tone" capture option anyway. Then you
should execute the application that loads and decodes the sound file. But even
that is difficult because the MC60 uses the MIDP 1.0 API which lacks the float
type!
Even given these restrictions, maybe in the near future I'll try to develop
a program to decode tracks within the mobile, so that you can avoid the
transfer to a PC and see in real time if the track was successfully read (this
have the additional advantage of having to store less data, so that the
autonomy is enlarged considerably), but you'll have to wait, so check this page
every now and then (not too often, I'm a very busy man! ;-).
Yet there is another possibility, though even more complicated. You can
attach an standard serial port magnetic stripe reader (or a non standard reader) to the mobile serial port (interface adapter will be required) and read data with a
custom application. However I find this option less useful due to power
considerations. If you want to avoid an external power supply (surely desired
because you are looking for something portable), no much devices are available
which might be powered from own (or mobile itself) battery, nevertheless a very
small power consumption device might be designed for that purpose. It's up to
you!
E-mail: padilla at
domain "gae ucm es" (my PGP/GPG public key)
First version: 30-Aug-2004, last update: 6-Dec-2009
This link: http://www.gae.ucm.es/~padilla/extrawork/mobilesoundtrack.html
Go to the parent page: Magnetic stripe reader.