iPhoneの磁気ストリップカードリーダーからバイナリデータを抽出するという難しい課題に直面しています。これは、カードの磁化がどのように見えるかです:
カードをスワイプしたときにiPhoneが受け取る.WAVは次のとおりです(期待をかけすぎないでください、これはボーナスポイントカードです;))。ちなみに、異なる速度での3回のスワイプです。これは、使用しているスワイプの未加工のSInt16ダンプです。
ここで誰かがやったようです が、実際にキャプチャしたデータを処理するのは特に簡単ではありません。
読み取りは「ゼロ」の不定数で開始(および終了)します-波は2つのZEROSが収集された後にのみ繰り返されることに注意してください。これはNSに続いてSNを表します。
(3行のそれぞれが私が別のカードをスワイプすることを表していることに注意してください。この画像の一番下のカードは15歳ですので、このショットでは見えない場所で磁場が明らかに著しく低下しています)
これにより、アルゴリズムはクロックティックを確認できます。
クロックティックごとに磁場が反転します。 また、バイナリ1の場合、ティックの中央で磁場が正確に反転します。
シーケンスは常に1101 + 0(パリティビット)開始センチネルで始まります。上記のグラフの3つの測定値すべてでこれを選択できます。これは、質問の冒頭でリンクしたcosmodroの記事でより明確に示されています。
磁気劣化の例を次に示します(下のカードの読み取りについてさらに詳しく説明します)。
この波形を対応するバイナリシーケンスに変換する賢明な方法を見つけようとしています。
詳細を説明するPDFを1つ見つけましたが、使用しているアルゴリズムがわかりません。
このPDFには興味深い画像が1つ含まれています。
この図のように赤と青の線を抽出できれば、どちらかを使用してデータを抽出できますが、構造の背後にあるロジックを理解することはできません。
これが私の質問です:バイナリシーケンスを抽出するにはどうすればよいですか?
PS。スワイプ速度は一定にならないことに注意してください。そのため、クロックが決定されたら、1つのティックから次のティックに常に調整する必要があります。
PPS。自己相関はティックのペアをキャッチしますか?(ダニがNS SNを代替するように見える...)
編集(12年6月):これについて多くの助けが必要でしたが、最終的にはしっかりした読者(http://www.magstripedecoder.com/)を完成させました。助けてくれたみんなありがとう!IRCのefnetチャンネルで#musicdspをお勧めします。数学に慣れるのに挑戦するのに十分な熱心な人なら、本当に難しいです!