Взлом
Уважаемые гости! При посещении нашего сайта просим вас ознакомиться с разделами форума, прежде чем оставлять ваши объявления и т.п., а также при обращении за помощью просим быть внимательными: на сайте есть как проверенные специалисты, так и непроверенные. Если вы обратились к специалисту, который проверку НЕ проходил, рекомендуем воспользоваться услугой гарант-сервиса. Спасибо, что посетили XakerPlus!

Arduino from Magtek 21006541

J

Johny

Гость
исходник скетча для ардуины с выводом дампа в терминал в бинарном формате, можете на его основе изготовить собственный ридер.
Код:
//ноги ардуины для magtek
#define STROBE 3
#define DATA 2

int led = 13;

//порты B для magtek
#define STROBE_HIGH PORTB|=1
#define STROBE_LOW PORTB&=~(1
#define DATA_LOW DDRB|=1
#define DATA_RELEASE DDRB&=~(1


void f2fArmToRead(){
    STROBE_LOW;
    DDRB|=1
    DATA_RELEASE;
    PORTB&=~(1
        STROBE_HIGH;
        delay(3);
        DATA_LOW;
        delay(3);
        STROBE_LOW;
        delay(3);
        STROBE_HIGH;
        delay(3);
        STROBE_LOW;
        delay(3);
        DATA_RELEASE;
        delay(3);
        STROBE_HIGH;
        delay(3);
        STROBE_LOW;
        delay(3);
        STROBE_HIGH;
        delay(3);
        STROBE_LOW;
        delay(3);
} 


void f2fWaitData(){
        while(bit_is_set(PINB,DATA));
        delay(3);
        STROBE_HIGH;
        delay(3);
        while(!bit_is_set(PINB,DATA));
        delay(3);
        STROBE_LOW;
        delay(3); 
        digitalWrite(led, HIGH);
        while(bit_is_set(PINB,DATA));
        delay(3);

  } 

  
void f2fRead176bytes(){
    char bitCnt,bufCnt,tmpBuf=8;  
    int cnt = 0;
	 
    Serial.print("$");          
     
    for(cnt=0;cnt
        STROBE_HIGH;
		delay(3);
		STROBE_LOW;
		delay(3);
                }      
    bufCnt=0;   
    Serial.print("T");
    Serial.print("1");
    Serial.print(":");   


for (cnt=0;cnt
            if(cnt==88){  
    Serial.print("T"); 
    Serial.print("2"); 
    Serial.print(":"); 
    
        }
  
            if(cnt==176){  
    Serial.print("T"); 
    Serial.print("3"); 
    Serial.print(":"); 
        } 
         
      

                for(bitCnt=0;bitCnt
        STROBE_HIGH;
		delay(3);
		STROBE_LOW;
		delay(3); 
                        if(!bit_is_set(PINB,DATA)){
                                tmpBuf|=1
                bufCnt=0;
            }else{
                tmpBuf&=~(1
                bufCnt++;
                    } 
                     
                }    
                 
       if(bufCnt
    }  

}  

void setup()
{

  pinMode(led, OUTPUT);
  Serial.begin(9600); 
  while(!Serial);

  Serial.println(" ARDUINO CARD READER");
  Serial.println("");
  
  interrupts();
} 


void loop() {
  // put your main code here, to run repeatedly:
     f2fArmToRead();
     f2fWaitData();        
    f2fRead176bytes();
    digitalWrite(led, LOW);
}
 


Сверху