Stap 3: Decoderen van de barcode
. < seriële >. < CODE >. < BARCODE >.
< seriële > is het unieke serienummer dat elk cuecat heeft. Het idee is dat het bedrijf verdelen ervan kunt bijhouden wat u scant. Ik zie niet een behoefte, dus het zal negeren.
< CODE > is het type BarCode. Ik heb geen uitputtende lijst, maar ik heb gezien "E13", "IB5" enz. Ik zou denken dat dit kan helpen beslissen waar te het opzoeken van de bar-code, als ik me voorstellen dat er veel gegevensbronnen barcode. Ik veronderstel dat boeken, levensmiddelen en de barcodes die u afdrukken in verschillende formaten mogelijk. Ik weet dat sommige barcodes zijn alleen cijfers, sommige zijn een mix van letters en cijfers
< BARCODE > het interessante bit :-)
OK dus hoe te decoderen...
Ik trolled van het internet en vond veel voorbeeldcode in verschillende (niet verwerking/arduino) formaat met uitleg. Dus pakte ik een betrouwbare versie die werkte goed op mijn Linux-vak dat is geschreven in PERL.
Hier is het verbazingwekkend pregnante perlmanuscript door Larry Wall
http://www.Accipiter.org/download/decue.txt
Om te beschrijven en te begrijpen, ik deed het in excel als volgt... het bestand wordt gekoppeld om mee te spelen.
1) het breken van de code en breken in de 2 stukken zoals hierboven beschreven, en één filter tegelijk decoderen zoals beschreven
2) elke set van 4 tekens is "ongecodeerd" in 3. Dus de lengte van de uiteindelijke uitvoer 3/4 van de invoerreeks is, naar beneden afronden indien nodig. (encryptie gaan dat de andere kant duidelijk moet voor het opvullen van tekens om ervoor te zorgen geen informatie is verloren)
3) Neem de 4 tekens en kaart naar ASCII
-effectief "een-zA-Z0 - 9 +-" kaarten tot ASCII-tekens 32-96 (dwz ruimte ' ' naar '_')
-dus E, N, b, X kaart >, G,!, respectievelijk X
Ik vond het een probleem te houden conversie heen en weer tussen ASCII-tekens en Codes (bijvoorbeeld E <> - 69) zoals sommige niet-afdrukbare tekens waren moeilijk om op te lossen en welke niet-afdrukbaar teken uitwerkend was wordt afgedrukt is taai. Dus in de definitieve code ik uitsluitend in ASCII-codes tot de laatste stap werkte. IE de gele lijnen terwijl het omgekeerde engineering dit nuttig waren, maar geen deel uitmaken van de definitieve code...
4) aftrekken van 32 uit de ASCII-code
->, G,!, X heeft de ASCII-code voor 62,71,33,81
-Aftrekken van 32 geeft ons 30,39,1,49
5) behandelen de bovenstaande tekens en ASCII-codes als 6 bits getallen (4 x 6 = 24 bits)
-30 geeft ons 01110, dus
-30,39,1,49 geeft ons 0 1 1 1 1 0 1 0 0 1 1 1 0 0 0 0 0 1 1 1 0 0 0 1
6) behandelen de binaire tekenreeks als een tekenreeks van 8 bit karakters, dit is hoe het wordt 3/4 van de grootte! (3 x 8 = 24 bits)
-0 1 1 1 1 0 1 0 0 1 1 1 0 0 0 0 0 1 1 1 0 0 0 1
-122, 112,113 die is z, p, q in ASCII formaat
7) Neem elke van de 3 codes en exclusieve of met 67 = 01000011
-122 XOR 67 = 57
122 = 01111010
67 = 01000011
------------------------
00111001 = 57
-122, 112,113 wordt 57,51,50
8) converteren naar ASCII
-57,51,50 wordt 932, waarvan de eerste 3 cijfers van mijn barcode!!!
9) Herhaal deze stappen voor elk 4 cijfers totdat je een '.' :-)