Läs alla magnetremsa kort med en fyrkantig läsare och en Android-enhet (4 / 5 steg)

Steg 4: avkoda ljud


Så, nu har vi fått en massa ljud på vår enhet. Hur vi avkodar det? Jag bygger min kod på en Android tutorial som visar hur man spela in data och sedan spela upp den. I mitt fall såg jag till att spara det ljudet som 16-bitars PCM-kodat. Jag provtas på 44100hz. På Android (och på andra håll, antar jag) 16-bitars PCM data innebär att varje prov är ett signerat 16-bitars värde. Eftersom vi bara bryr sig om frekvensen, behöver vi bara bryr sig om hur mycket tid det är mellan "noll-korsningar". En noll-korsning är när signalen går från postive till negativa eller vice versa. Lite 0 kommer att företrädas av utrymmet mellan 2 korsningar, och en 1 kommer att ha en extra passage i ungefär samma tidsperiod.
Kortdata i varje spår som inleds med några (variabel) antal 0s, att upprätta bas frekvensen. Vad jag gjorde var lyssna för det första provet ovanför en viss "tyst" tröskel och sedan räkna antalet prover mellan noll-korsningar. Detta nummer blir basvärde för en 0. Eftersom dessa kort är hand-swiped, ändras de faktiska frekvenserna något från början av sökningen till slutet. Så gjorde jag en enkel metod som avgör om antalet prov sedan den senaste noll-korsningen är närmare basen frekvensen eller dubbelt baserafrekvens (halv bas antalet prover). Det justerar sedan den förväntade baserafrekvens därefter. Detta fungerar bra, så länge förändringarna mellan de två logiska bitarna är ganska små. Och de nästan säkert kommer att vara.

För att upptäcka en noll-korsning, måste vi titta på tecken på varje prov och jämföra det med tecknet för föregående prov.. Om de skiljer sig åt (ett positivt, en negativ) korsade signalen 0 mellan dessa prover.

Den grundläggande algoritmen är att iterera genom bytearrayen, extrahera prover. Räkna antalet prover mellan noll-korsningar och jämför räkningen till antalet förväntade för en 0 eller 1.

Okej, efter några hand-waving har vi nu en binär sekvens av data, vilket vi vill vända tillbaka in i ASCII. Den vanligaste kodning (och den enda jag skrev en hanterare för) kodar varje tecken som ett antal bitar, plus en paritetsbit. När det gäller spår 2, som är 4 bitar för karaktären, och 1 för paritet, att göra 5 bit grupper. Bitarna Läs från minst signifikanta för de flesta, med paritetsbiten senast. Paritetsbiten är inställd på att antalet 1s i gruppen udda. I min genomförande, jag bortse från bara paritetsbiten, men det skulle hjälpa avgöra om Läs var bra eller inte. Spår 1 är det 6 bitar för karaktären, plus paritet.
Teckenet-uppsättning av spåren skiljer sig också, men båda är delmängder av ASCII med vissa offset. När det gäller spår 2, som kodar endast några symboler och siffror, börjar teckenuppsättningen på 48, vilket är ASCII-koden för "0". Så om vi får 0,0,0,0,1 som vår karaktär, vi förvandla det till 0, lägga till 48 och få 48. Likaså är 1,0,0,0,0 1. 1 + 48 = 49 = ASCII "1".
För spår 1, den teckenuppsättning som börjar med "" (blanksteg) som är ASCII-32. Så vi lägger till 32 avkodade numeriska värdet och få våra ASCII-tecken. Efter det har vi data, så alla att resterna upphakning UI limmet.

Se Steg
Relaterade Ämnen

Utskrift av GIF på VGA från SD-kort med hjälp av Zybo styrelsen

Detta är en handledning om hur man bygger ett system som matar ut GIF-filer till en VGA-bildskärm med en Zybo styrelse. GIFs är förinstallerad på ett SD-kort. Detta var vårt sista projekt för en inbäddade realtidssystem klass (CPE 439) på Cal Poly SL...

Android handledning: Ansluta, konfigurera App på riktiga Android-enhet och kör Hello World-programmet med Android Studio

I detta inlägg kommer vi lära oss hur du ansluter och konfigurerar Android-enhet (Smartphone etc.) med Android Studio. Efter som vi kommer att köra en enkel Hello World-programmet. Följ bara följande steg:Steg 1: Aktivera utvecklaren alternativet i A...

Arduino Universal Bluetooth Anslut - kontroll din Arduino med din Android-enhet

Jag ville alltid enkelt styra min Arduino med min Smartphone, men jag hittat aldrig den perfekta lösningen för att göra. Jag vill inte säga att detta är perfekt, men det gör vad jag vill att det ska do...well inte helt men jag är nära... Jag tror.I d...

Magnetremsa kort spoofer

detta instructable visar hur du använder en elektromagnet, en enkel förstärkarkrets, och en personlig musikspelare att inducera signaler i en magnetremsa kortläsare, orsakar det att tror att du har swiped ett kort genom den.Detta instructable förutsä...

Fotoutskriftstjänst Live Streaming från alla SD kort aktiverad kamera

IntroJag är en software engineering student som också brinner för fotografering så jag ville kombinera två intressen på ett roligt projekt. Vad jag slutade med är en webbserver för att automatiskt visa bilder till alla anslutna webbläsare när en bild...

DIY CELEBRATE kort - med handledning :)

Hej till alla. Min nya Video är '' DIY CELEBRATE kort - med handledning ''Jag använder: ett tjockt A4 papper (rosa) en normal A4 papper (grön) 2 olika akvarell (rosa och grön) ett papper hjärta (rosa) A bandet (rosa)Jag är i sociala medier:YouTube: h...

Alla syfte ram med kartong och tejp

var det för att hänga upp våra bilder, foton eller ens att markera listan nytt år upplösning eller ens för att hänga den vardagliga uppgiftslistan, ramar är något som vi alla behöver.Idag kommer jag visa dig hur enkelt du kan göra din egen ram, bara...

Logga data på SD-kort med LightBlue Bean

Denna tutorial lär dig att skriva data till ett SD-kort med Ljusblå Bean.LightBlue Bean är en Arduino kompatibel mikrokontroller med integrerad Bluetooth lågenergi som du kan programmera trådlöst från din smartphone eller skrivbordet.Vi kommer att få...

Hur man tar bort alla låtar med utropstecken i Mac iTunes 12

Nyligen hittade jag några låtar med utropstecken i iTunes på min Mac. När du spelar denna typ av låtar, det kommer att varna "låten... kunde inte användas eftersom den ursprungliga filen inte kunde hittas, vill du hitta den?".Då jag sökte och hi...

Arduino Nano: Loggar GPS-Information till MicorSD kort med Visuino

MicroSD kort är billigt och enkelt data lagringsmedium, och de är mycket bekvämt för att lagra Arduino sensordata. Det finns också ett antal billiga lätt tillgängliga MicroSD kort moduler för Arduino, och jag har redan gjort Instructable om hur du lo...

Interaktiva E-kort med hjälp av Makey Makey och Scratch!

Göra en interaktiv E-kort som du kan ändra om och om igen och skicka till familj och vänner :) Följ dessa steg för att få igång beslutsfattare!Steg 1: Samla material Saker du behöver inkludera:En ruta om den storlek som visas på bilden, jag använde e...

Hur man läser en arduino kort med LabVIEW

Denna video visar hur man läser en Arduino kort med LabVIEW. LabVIEW har ett bra användargränssnitt som gör det enkelt att spara data från en Arduino kort. En av de största utmaningarna när du använder en Arduino är att det är djävulskt svårt att spa...

Bunn-e-kort - hur man gör en animerad hälsningar kort med ditt husdjur. Creer une e-carte de voeux personnalisee

ha kul att skapa ett personligt kort som du kan skicka via internet eller ladda upp till din favoritsajt.Du behöver en sällskapsdjur eller husdjur, något de gillar att äta och en kamera på ett stativ eller placering på bordsyta. Videon förklarar hur...

Telefon med inbyggd MicroSD kortläsare

Nedan är min rant om bristen på utrymme på min telefon och hur jag fick inspirerade och motiverade att skapa detta projekt. Känn dig fri att hoppa framåt och dyka in i instruktionen från steg 1.Mobiltelefon är ett viktigt verktyg i många människors d...

Göra roterande Christmas Tree Light med hjälp av lysdioder och leksak Motor

DIY Awsome julgran med mini led lampor och leksak likströmsmotor dess lätt DIY och bra present till jul, kan du göra någon färg på ditt val genom att välja olika färg led lampor, för att göra det kräver bara 3v mynt batteri och 9v batteri eller kan d...

Trådlöst styr en Robot med hjälp av Arduino och RF-moduler!

/*Redigera 05/05/2016Hej killar, jag har varit upptagen med college och kunde inte svara på commments. De flesta av y'all ville koden och scheman gjort lite bättre så jag har gjort scheman på Eagle 7.2.0 och laddat upp allt på Github.Här är länken: h...

Styra en robotarm med Arduino, 1Sheeld och en Android Smart Phone

I denna artikel vi visar dig hur du använder smart 1Sheeld och din Android phone sensorer (orientering & närhet sensorer) till kontroll en Robotic beväpna trådlöst.Kort om 1Sheeld:http://1sheeld.com/Steg 1: Våra verktyg 1 - robotarm (bilda din egen d...

Hur man gör smycken med hjälp av kartong och superlim

i ett nötskal: här kommer vi att försöka göra smycken och sånt genom att bygga det med kartong och superlim, slipa och sedan lackering för att stärka och vattentät det.Jag började göra detta främst eftersom jag ville göra ganska utarbeta utseende hän...

Avlägsen kontrollerade LED med HC-05 Bluetooth, Arduino och mobiltelefon App

Tekniken utvecklas i halsbrytande fart, alla av oss har smarta telefoner nu för tiden, det finns coola apps som låt oss hålla kontakt med våra vänner och familj, få senaste väderinformation eller vistelse-uppdaterad med senaste nyheterna men vad är n...