collapse

* Posts Recentes

Emulador NES em ESP32 por dropes
[Ontem às 15:31]


Arame de Estendal por almamater
[18 de Abril de 2024, 16:16]


O que é isto ? por SerraCabo
[12 de Abril de 2024, 14:20]


Amplificador - Rockboard HA 1 In-Ear por almamater
[11 de Abril de 2024, 20:46]


Meu novo robô por josecarlos
[29 de Março de 2024, 18:30]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]

Autor Tópico: Leitor de Cartoes Magneticos  (Lida 12047 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline ghostbuster

  • Mini Robot
  • *
  • Mensagens: 339
Re: Leitor de Cartoes Magneticos
« Responder #15 em: 25 de Abril de 2010, 00:54 »
Afinal já recebi a cabeça.
Em anexo está o codigo em C que a magtek aconselha, e aqui fica um esboço do meu codigo mas da um erro qeu não sei o que é  :(
O loop está vazio pois ainda não cheguei a essa parte

Código: [Seleccione]
#define WAIT_FOR_CARD_PRESENT  0
#define WAIT_FOR_BUFFER_READY  1
static unsigned byte DataAcquisitionState;
const int DataPin = 2;   
const int StrobePin =  3;
volatile  unsigned byte ReceiveBufferReadySignal;
 int CardDataReady;

void setup(){
     DataAcquisitionState = WAIT_FOR_CARD_PRESENT;
     pinMode(DataPin, INPUT);
     pinMode(StrobePin, INPUT); 
     digitalWrite(StrobePin, HIGH);
     delay(10);
     Reset();
     Armar();
     ReceiveBufferReadySignal = 0;
}

void loop(){
}


//-------------------------------------------------------------------------------
int DataAcquisitionManager()
{
     switch (DataAcquisitionState)
   {
      case WAIT_FOR_CARD_PRESENT:
         if (digitalWrite(DataPin, LOW) && !CardDataReady)
         {
            ClearCardPresent();
            DataAcquisitionState = WAIT_FOR_BUFFER_READY;
            ReceiveBufferReadySignal = 31; /* 3 seconds minimum */
         }
         break;

      case WAIT_FOR_BUFFER_READY:
         if (digitalRead(DataPin) == LOW)
         {
            CardDataReady = true;
            DataAcquisitionState = WAIT_FOR_CARD_PRESENT;
         }
         else if (ReceiveBufferReadySignal == 0)
         {
            Reset();
            Armar();
            DataAcquisitionState = WAIT_FOR_CARD_PRESENT;
         }
         break;         
   }
}

//------------------------------------------------------------------------------
int ClearCardPresent()

   
   delayMicroseconds(1);
   digitalWrite(StrobePin, HIGH);
   delayMicroseconds(2);       
   digitalWrite(StrobePin, LOW);
}
//-------------------------------------------------------------------------------
int Reset()
{
        delayMicroseconds(1);       
digitalWrite(StrobePin, HIGH);
delayMicroseconds(1);
digitalWrite(DataPin, LOW);
        delayMicroseconds(5);
digitalWrite(StrobePin, LOW);
        delayMicroseconds(1);
digitalWrite(StrobePin, HIGH);
        delayMicroseconds(1); 
digitalWrite(StrobePin, LOW);
        delayMicroseconds(1);
digitalWrite(DataPin, HIGH);
        delayMicroseconds(1);
digitalWrite(StrobePin, HIGH);
delayMicroseconds(130);
digitalWrite(StrobePin, LOW);
}
//------------------------------------------------------------------
int Armar()
{

delayMicroseconds(1);
digitalWrite(StrobePin, HIGH);
        delayMicroseconds(1);
digitalWrite(StrobePin, LOW);
}

//-----------------------------------------------------------
int ClearCardData()
{
   if (CardDataReady)
   {
      CardDataReady = false;
      Reset();
      Armar();
   }
}
//-----------------------------------------------------
int GetData(unsigned byte xdata * pryubTkData, uword uwCntInBits)
{
   unsigned byte ubTkBitPos;
   ubTkBitPos = 1;
   *pryubTkData = 0;
   delayMicroseconds(1);
   while (uwCntInBits--)
   {
     
      digitalWrite(StrobePin, HIGH);
      delayMicroseconds(1);
      digitalWrite(StrobePin, LOW);
      delayMicroseconds(1);
      if (digitalWrite(DataPin, LOW)) {
         *pryubTkData |= ubTkBitPos;
      }
                     
      ubTkBitPos <<= 1;
      if (ubTkBitPos == 0)
      {
         ubTkBitPos = 1;
         pryubTkData++;
         if (uwCntInBits)
         {
            *pryubTkData = 0;
         }
      }
   }
}
//--------------------------------------------------------------------------

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Leitor de Cartoes Magneticos
« Responder #16 em: 25 de Abril de 2010, 14:37 »
Que tipo de erro dá?
Avr fanboy

Offline ghostbuster

  • Mini Robot
  • *
  • Mensagens: 339
Re: Leitor de Cartoes Magneticos
« Responder #17 em: 26 de Abril de 2010, 20:35 »
Que tipo de erro dá
Portando diz assim...

error: expected ',' or '...' before 'xdata' In function 'void setup()':
 In function 'int DataAcquisitionManager()':
 At global scope:
 In function 'int GetData(unsigned int)':

o #define WAIT_FOR_BUFFER_READY  1 fica a amarelo
Mas atenção, ele so da o erro se tiver ai a função read data, porque se ela nao tiver ai ele compila bem, Para terem uma melhor idea é abrirem os ficheiros em C do anexo, que la está tudo explicado

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Leitor de Cartoes Magneticos
« Responder #18 em: 28 de Abril de 2010, 09:31 »
Falta ai algum caracter como ele te está a dizer, agora é só dar com o erro, as vezes isso é muito chato
Avr fanboy

Offline ghostbuster

  • Mini Robot
  • *
  • Mensagens: 339
Re: Leitor de Cartoes Magneticos
« Responder #19 em: 04 de Maio de 2010, 13:46 »
Afinal vou fazer o codigo do zero, queria um sketch se alguem tiver de como faço, para ler o seguinte:
Quando detecta Digital Pin High é 1 e Low é 0, e eu quero que ele grave isso numa variavel tudo de seguida
ou seja a cabeça vai-me mandar no maximo 250 bytes de informaçao mas em binario

Offline shime

  • Mini Robot
  • *
  • Mensagens: 1
Re: Leitor de Cartoes Magneticos
« Responder #20 em: 19 de Agosto de 2010, 03:10 »
Eu posso ajudar, me envie seu MSN
--
I can help you, send me your MSN