Go Down

Topic: magnetic card reader with lcd (Read 940 times) previous topic - next topic

Jennsn

Hi,

I'm trying to make magnetic card reader which reads track1 & track2. I'm using this code http://code.google.com/p/magstripelib/ to read tracks, but the problem is that I can only read 1 track. I need to read both tracks. My skills ends here, but I think that I can write that code if somebody can help me with the beginning. I also need lcd to display data from cards, but I think that I can do it myself :) Thanks for help!

PaulS

Quote
but the problem is that I can only read 1 track.

The example contains this:
Code: [Select]
  // Initialize the library for reading track 1...
  card.begin(1);


What does your code contain to read track 2?

Jennsn


Quote
but the problem is that I can only read 1 track.

The example contains this:
Code: [Select]
  // Initialize the library for reading track 1...
  card.begin(1);


What does your code contain to read track 2?


Oup, sorry. I mean that I can only read track 1 or track 2 at one time. I'm using that example code provided with that library. I need to read track 1 and 2 at same time.

Code: [Select]
/*
* MagStripeReader - Read data from a magnetic stripe card (track 1, 2 or 3).
*
* Copyright (c) 2010 Carlos Rodrigues <cefrodrigues@gmail.com>
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/


#include <MagStripe.h>


// Visual feedback when the card is being read...
static const byte READ_LED = 13;
static const byte ERROR_LED = 12;

MagStripe card;

/*
* Track 3 is the one that can contain the most characters (107).
* We add one more to accomodate the final '\0', as the data is a C string...
*/
static const byte DATA_BUFFER_LEN = 108;
static char data[DATA_BUFFER_LEN];


void setup()
{
  pinMode(READ_LED, OUTPUT);
  pinMode(ERROR_LED, OUTPUT);
 
  // The card data will be sent over serial...
  Serial.begin(9600);
 
  // Initialize the library for reading track 1...
  card.begin(1);

  // Start with the feedback LEDs off...
  digitalWrite(READ_LED, LOW);
  digitalWrite(ERROR_LED, LOW);
}


void loop()
{
  // Don't do anything if there isn't a card present...
  if (!card.available()) {
    return;
  }
 
  // Show that a card is being read...
  digitalWrite(READ_LED, HIGH);
 
  // Read the card into the buffer "data" (as a null-terminated string)...
  short chars = card.read(data, DATA_BUFFER_LEN);
 
  // Show that the card has finished reading...
  digitalWrite(READ_LED, LOW);
 
  // If there was an error reading the card, blink the error LED...
  if (chars < 0) {
    digitalWrite(ERROR_LED, HIGH);
    delay(250);
    digitalWrite(ERROR_LED, LOW);

    return;
  }

  // Send the data to the computer...
  Serial.println(data);
}


/* EOF - MagStripeReader.pde */

Jennsn

I just examined code bit more, and I see that it uses 2 Interrupt. And arduino UNO has only 2 interruptus, so I need 2 more. I tried to change "MAGSTRIPE_RDT" pin (data pin) to D7 with adding new interrupt using this tutorial: http://www.me.ucsb.edu/~me170c/Code/How_to_Enable_Interrupts_on_ANY_pin.pdf

But it didn't work. I used this code:
Code: [Select]
  PCICR |= (1<<PCIE2);
PCMSK2 |= (1<<PCINT23);
MCUCR = (1<<ISC01) | (1<<ISC00);


And I have edited that interrupt pin on file named: MagStripe.cpp (Old interrupt pin: 0, I tried with pin 5). Please help, I really need to get this work. Thanks.


Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy