Я стикаюся з складним завданням: витягнути двійкові дані з зчитувача магнітних смужок iPhone . Ось як виглядає намагнічування на картці:
Ось .WAV, який iPhone отримує, коли ви проведете карту (не сподівайтесь на сподівання, це бонусна картка лояльності;)). Це три перегони, до речі, з різною швидкістю. Це сирий відвал SInt16 для швидкого переходу, який я використовую.
Хтось, здається, це зробив тут, але фактичні дані, які я збираю, обробляти не особливо просто.
Читання починається (і закінчується) невизначеною кількістю «нулів» - зауважте, що хвиля повторюється лише після того, як зібрані 2 ZEROS, це означає НС, а потім SN:
(зауважте, що кожен з трьох рядків представляє мене, коли я переношу іншу карту; нижній картці на цьому зображенні 15 років, тому магнітне поле десь сильно погіршується, не видно на цьому знімку)
Це дозволить алгоритму встановити галочку годинника.
Магнітне поле обертається на кожній галочці годинника. Також для двійкового 1 магнітне поле повертається рівно посередині кліща:
Послідовність завжди починається з дозорного старту 1101 + 0 (біт парності). Ви можете вибрати це у всіх трьох читаннях у наведеному вище графіку. Це чіткіше зазначено у статті про космодро, яку я пов’язував у верхній частині питання.
Ось приклад магнітної деградації (взяті далі на читанні нижньої карти):
Я намагаюся знайти розумний спосіб перетворити цю форму хвилі у відповідну бінарну послідовність.
Я знайшов один PDF, який детально описується, але я не можу з’ясувати алгоритм, який вони використовують.
Цей PDF містить одне цікаве зображення:
Якби я міг витягти червоні та сині лінії відповідно до цієї діаграми, я міг би використати будь-яку з них для вилучення даних, але я не можу зрозуміти логіку побудови.
Отже, це моє запитання: Як витягти бінарну послідовність?
PS. Зауважте, що швидкість повороту не буде постійною. Отже, як тільки годинник визначений, його потрібно постійно регулювати від однієї галочки до іншої.
PPS. Чи може автокореляція спіймати пари кліщів? (бачачи, як кліщі будуть чергувати NS SN ...)
EDIT (червень '12): Мені потрібна була велика допомога в цьому, але, нарешті, я закінчив надійного читача ( http://www.magstripedecoder.com/ ). Дякуємо всім, хто допоміг! Я рекомендую #musicdsp на каналі efnet IRC для тих, хто присвячений достатньо завдань, щоб вирішити проблему з математикою - це дійсно важко!