Lezen van een kaart met magneetstrip met een vierkante lezer en een Android apparaat (4 / 5 stap)

Stap 4: decoderen de audio

Dus, nu hebben we een bos van audio op ons apparaat. Hoe we het decoderen? Ik mijn code gebaseerd op een Android tutorial die laat zien hoe gegevens vastleggen en vervolgens afspelen. In mijn geval zorgde ik ervoor dat de audio opslaan als 16-bits PCM gecodeerd. Ik bemonsterd op 44100hz. Op Android (en elders, die ik veronderstel) 16-bits PCM gegevens betekent dat elk monster een ondertekende 16 bit-waarde is. Aangezien wij alleen de zorg over de frequentie, moeten we alleen zorg over hoeveel tijd er is tussen "nul-kruisingen". Een nul-kruising is wanneer het signaal van postive naar gaat negatief of omgekeerd. Een 0-bit zal vertegenwoordigd worden door de ruimte tussen 2 kruisingen, en een 1 krijgen een extra Overstekende in ongeveer dezelfde periode.
Kaartgegevens in elk nummer begint met een (variabel) aantal 0s, om de basisfrequentie. Wat ik deed was luisteren voor de eerste steekproef boven een bepaalde drempel van de "stille", dan tellen het aantal monsters tussen nul-kruisingen. Dit nummer wordt de basiswaarde voor een 0. Aangezien deze kaarten hand-gejat, verandert de werkelijke frequenties enigszins vanaf het begin van de scan tot het einde. Dus maakte ik een eenvoudige methode die bepaalt of het aantal monsters sinds de laatste nul-kruising dichter bij de basisfrequentie of tweemaal de Basisfrequentie (halve basis hetaantal monsters is). Het past dan de verwachte basisfrequentie dienovereenkomstig. Dit werkt prima, zo lang als de veranderingen tussen elke twee logische bits vrij klein zijn. En zij zullen bijna zeker.

U wilt het opsporen van een nul-kruising, moeten we kijken naar het teken van elk monster en te vergelijken met het teken van het vorige voorbeeld.  Als ze verschillen (één positief, een negatief) stak het signaal 0 tussen deze monsters.

Het fundamentele algoritme is doorlopen van de byte-array, winning van monsters.  Tellen van het aantal monsters tussen nul-kruisingen en vergelijken van de telling aan het verwachte aantal voor een 0 of 1.

Oke, na enkele hand-golft hebben we nu een binaire reeks van gegevens, die we willen terug te zetten in ASCII. De meest voorkomende codering (en de enige die ik schreef een handler voor) codeert elk teken als een aantal bits, plus een pariteitsbit. In het geval van spoor 2, dat is 4 bits voor het teken, en 1 voor pariteit, 5 bit groepen te maken. De bits worden gelezen uit minst significante voor de meeste, met het pariteitsbit laatst. De pariteitsbit wordt ingesteld op het aantal 1s maken in de groep oneven. In mijn uitvoering, ik gewoon negeren de pariteitsbit, maar het zou helpen bepalen of het lezen of niet goed was. In nummer 1 is het 6 beetjes voor het teken, plus de pariteit.
De tekenset van de tracks te verschillen, maar beide zijn deelverzamelingen van ASCII met sommige offset. In het geval van spoor 2, waarin alleen worden gecodeerd sommige symbolen en cijfers, begint de tekenset op 48, wat de ASCII-code voor "0". Dus als we 0,0,0,0,1 als ons karakter krijgen, we dat omzetten van 0, voeg 48, en 48. Ook is 1,0,0,0,0 1. 1 + 48 = 49 = ASCII "1".
Nummer 1, de tekenset die begint met "" (spatie) die is ASCII 32. Dus we 32 aan de gedecodeerde numerieke waarde toevoegen en krijgen onze ASCII-teken. Na dat hebben we de gegevens, zodat alle dat blijft de UI lijm is aansluiten.

Gerelateerde Artikelen

Creëren van een Android app met behulp van Ionische

Creëren van een Android app met behulp van Ionische

Ionic is een raamwerk dat schrijven apps voor bijna alle platformen zeer gemakkelijk maakt. Als u een beetje css, js en HTML-code weet kunt u een Android / iOS of Windows app.Dit instructable zal zich richten op het maken van een Android app op een L
Maken van een domme apparaat smart met Pilight en HomeKit

Maken van een domme apparaat smart met Pilight en HomeKit

Hoi! In dit Instructable zul je leren how to turn 5 stom apparaten in de smart ones, alles voor de prijs van één enkele commerciële smart switch. Bent u klaar? We zullen beginnen binnenkort, maar eerst...Wat is dit?Dit project heeft tot doel om te he
Creëren van een Android Emulator met Qemu

Creëren van een Android Emulator met Qemu

Als een onderdeel van een academisch onderzoek dat ik heb gedaan tijdens de afgelopen zomer, heb ik een emulator voor android besturingssysteem op een Linux computer met behulp van Qemu. Na het installeren van de Android-emulator, ben ik in staat om
Hoe om te lezen van E-boek met Supercard dstwo?

Hoe om te lezen van E-boek met Supercard dstwo?

Hier is de stap voor stap handleiding om u te tonen hoe om te lezen van ebooks met supercard dstwo .Stap 1: na de dstwo op nintendo console instellen (hier is het leerprogramma als u niet instellen: het instellen van de dstwo met de nieuwste firmware
Het gebruik van een Android emulator (ANDY)

Het gebruik van een Android emulator (ANDY)

Het gebruik van een Android emulator (ANDY)"IK BEN EEN ENORME CLASH OF CLANS FAN EN HEBBEN ALTIJD AL WILDE SPELEN OP MIJN 17? HOME COMPUTER". Sinds ik gedownload ANDY sindsdien waarschijnlijk speel ik Clash van Clans op de PC meer dan mijn telef
Vervangen van de accu van een mobiel apparaat

Vervangen van de accu van een mobiel apparaat

Dit Instructable beschrijft de goedkope en slechte uitziende manier ter vervanging van de accu van een mobiel apparaat.In de meeste gevallen is de accu dood lang nadat de garantie verdwenen is. Door iemand anders voor u repareren zo laat is te duur.
Publiceren van een Android App naar de Google Play Store

Publiceren van een Android App naar de Google Play Store

na vele uren van ontwerpen, implementeren, testen en debuggen uw Androïde toepassing, je bent eindelijk klaar om te publiceren naar de Google Play Store. Deze instructies zal de taak van het publiceren van uw app zowel snel en pijnloos maken. Minder
Auto Reset van een USB-apparaat.

Auto Reset van een USB-apparaat.

Niet wij allen haten moetend haal dan opnieuw het aansluiten van een USB-apparaat als reageert? Mijn USB UIRT is de sleutel tot mijn huis toegang en comfort automatisering. Soms wordt het hangen en ik moet opnieuw aansluiten of herstart de pc.Hier is
Linux muziekserver bestuurd door een Android apparaat

Linux muziekserver bestuurd door een Android apparaat

doel:Een Linux-computer die als een muziekserver voor bestanden zoals MP3 en FLAC fungeert. Het zal ook spelen Pandora radio en alles kan worden gecontroleerd door een Android apparaat dus er is geen noodzaak de computer aansluiten op een monitor.Nod
Hoe de controle van de arduino board met behulp van een android telefoon en een bluetooth-module

Hoe de controle van de arduino board met behulp van een android telefoon en een bluetooth-module

In deze tutorial leert u hoe u met een bluetooth-module en MIT's app uitvinder maken van een draadloze seriële verbinding tussen een android telefoon en een arduino board.Hier is een korte video die toont een voorbeeld-app die ik heb gemaakt. Ik zal
Het gebruik van een Android telefoon als een webcam met Skype

Het gebruik van een Android telefoon als een webcam met Skype

er is een oud gezegde dat een foto zegt meer dan duizend woorden... en er een nieuw gezegde is dat een video is de moeite waard een miljoen. Nu dat lijkt misschien als een overdrijving, maar er is een enorm verschil tussen het spreken aan iemand op e
Hack een oude iPod met behulp van een Android en een Arduino.

Hack een oude iPod met behulp van een Android en een Arduino.

Deze tutorial toont je hoe een Arduino gebruiken om te schakelen van dat oude stoffige muziekspeler in een Bluetooth gecontroleerde docking station.Zelfs als er al een gebarsten scherm of een lege batterij die kan nog steeds worden gebruikt.De volgen
Toestellen van de echte wereld - uit dienst met behulp van een android telefoon.

Toestellen van de echte wereld - uit dienst met behulp van een android telefoon.

ik altijd al wilde mijn Galaxy s3 telefoon gebruiken voor mijn poort open of ontgrendelen mijn voordeur. Ik hou niet van het idee van het meenemen van extra afstandsbedieningen voor dergelijke basistaken.Komt het sainsmart rj45 8 relay-apparaat. Met
Bouwen van een Android App om te communiceren met de HC-06 Bluetooth-Module

Bouwen van een Android App om te communiceren met de HC-06 Bluetooth-Module

In dit Instructable zullen we kijken naar hoe het bouwen van een eenvoudige Android App die verbinding kan maken en praat met een Arduino via een draadloze Bluetooth-verbinding. Wij zullen de populaire en goedkope HC-06 Bluetooth-module gebruiken om