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);
}


