การแยกข้อมูลการ์ดแถบแม่เหล็กจากไบนารี WAV


23

ฉันกำลังเผชิญกับความท้าทายที่หากิน: ในการดึงข้อมูลไบนารีจากเครื่องอ่านบัตรแถบแม่เหล็ก iPhone นี่คือลักษณะของการดึงดูดบนการ์ด:

ป้อนคำอธิบายรูปภาพที่นี่
แหล่ง

นี่คือ. WAVที่ iPhone ได้รับเมื่อคุณรูดบัตร (อย่าให้ความหวังมากเกินไปมันเป็นบัตรสะสมคะแนนโบนัส)) นั่นคือสาม swipes ตามวิธีที่แตกต่างกันความเร็ว นี่เป็นดัมพ์ SInt16 ดิบสำหรับการปัดที่ฉันกำลังใช้

ดูเหมือนว่ามีคนทำที่นี่ แต่ข้อมูลจริงที่ฉันจับไม่ได้เป็นเรื่องง่ายที่จะดำเนินการ

การอ่านเริ่มต้น (และเสร็จสิ้น) ด้วยจำนวนที่ไม่แน่นอนของ 'ศูนย์' - โปรดทราบว่าคลื่นซ้ำหลังจากที่รวบรวม ZEROS 2 ครั้งเท่านั้นซึ่งแสดงถึง NS ตามด้วย SN:

ป้อนคำอธิบายรูปภาพที่นี่

(โปรดทราบว่าแต่ละเส้นทั้งสามแสดงถึงฉันรูดการ์ดที่แตกต่างกันบัตรด้านล่างในภาพนี้คือ 15 ปีดังนั้นสนามแม่เหล็กจะเสื่อมโทรมอย่างรุนแรงในบางสถานที่ไม่เห็นในภาพนี้)

วิธีนี้จะทำให้อัลกอริทึมสามารถตรวจสอบเห็บนาฬิกา

สนามแม่เหล็กย้อนกลับในแต่ละขีดนาฬิกา นอกจากนี้สำหรับไบนารี่ 1 สนามแม่เหล็กจะกลับด้านตรงกลางของเห็บ:

ป้อนคำอธิบายรูปภาพที่นี่

ลำดับจะเริ่มต้นด้วย Sentinel เริ่มต้นที่ 1101 + 0 (บิตพาริตี) คุณสามารถเลือกได้จากการอ่านทั้งสามในกราฟด้านบน มีการระบุอย่างชัดเจนยิ่งขึ้นในบทความ cosmodro ที่ฉันเชื่อมโยงไว้ที่ด้านบนของคำถาม

นี่คือตัวอย่างของการสลายตัวของสนามแม่เหล็ก (นำไปอ่านเพิ่มเติมที่ด้านล่างของการ์ด): ป้อนคำอธิบายรูปภาพที่นี่

ฉันกำลังพยายามหาวิธีที่เหมาะสมในการแปลงรูปคลื่นนี้เป็นลำดับเลขฐานสองที่สอดคล้องกัน

ฉันพบPDF หนึ่งรายการที่มีรายละเอียดบางอย่าง แต่ฉันไม่สามารถหาอัลกอริทึมที่ใช้

PDF นี้มีภาพที่น่าสนใจหนึ่งภาพ: ป้อนคำอธิบายรูปภาพที่นี่

ถ้าฉันสามารถแยกเส้นสีแดงและสีน้ำเงินตามแผนภาพนี้ฉันสามารถใช้หนึ่งในนั้นเพื่อดึงข้อมูล แต่ฉันไม่สามารถหาตรรกะเบื้องหลังการสร้างได้

นี่คือคำถามของฉัน: ฉันจะแยกลำดับไบนารีได้อย่างไร

PS โปรดทราบว่าความเร็วการปัดจะไม่คงที่ ดังนั้นเมื่อนาฬิกาได้รับการพิจารณาในความต้องการที่จะต้องปรับอย่างต่อเนื่องจากหนึ่งขีดต่อไป

PPS ความสัมพันธ์อัตโนมัติจะจับคู่เห็บหรือไม่ (เมื่อเห็นว่าเห็บจะเลือก NS SN ... )


แก้ไข (มิถุนายน '12): ฉันต้องการความช่วยเหลือมากมายเกี่ยวกับสิ่งนี้ แต่ในที่สุดฉันก็เสร็จสิ้นการอ่าน solid ( http://www.magstripedecoder.com/ ) ขอบคุณสำหรับทุกคนที่ช่วย! ฉันแนะนำ #musicdsp บนช่อง efnet ของ IRC สำหรับทุกคนที่ทุ่มเทมากพอที่จะท้าทายการจับคณิตศาสตร์ - มันยากจริงๆ!


คุณสามารถโพสต์ไฟล์ wav ที่แท้จริงได้หรือไม่
endolith

1
ทำ! 9876543210
P ฉัน

อืมมม รูปคลื่นของคุณไม่เหมือนกับตัวอย่างอื่น ๆ ทั้งหมดที่ฉันสามารถหาได้ 2.bp.blogspot.com/_QF4k-mng6_A/TOzDBOzIB3I/AAAAAAAAAbM/... monografias.com/trabajos43/banda-magnetica/Image4228.gif embeddedsoftwareengineering.com/img/mag-flux.gif
endolith

ขอบคุณ Yoda เป็นอย่างมากสำหรับการแก้ไขและจัดเก็บคำถาม
P ฉัน

คุณพูดถึงไพ่สามใบในคำถามของคุณ ไฟล์ WAV ที่คุณแนบกับการ์ดใด
Jason R

คำตอบ:


10

สิ่งนี้เรียกว่ารหัสเครื่องหมาย biphaseและคุณต้องมุ่งเน้นไปที่การข้ามศูนย์แทนการใช้แอมพลิจูดพัลส์ อย่างไรก็ตามคุณมีการข้ามศูนย์หลายครั้งต่อหนึ่งพัลส์เนื่องจากตัวกรองที่ตัดต่ำที่มีอยู่ในรถปิคอัพและอินพุตไมโครโฟนของโทรศัพท์ คุณวางมากกว่านี้ระหว่างการเปลี่ยนและข้ามศูนย์:

ป้อนคำอธิบายรูปภาพที่นี่

คุณสามารถคืนค่ารูปทรงที่เป็นพัลส์มากขึ้นโดยใช้ฟิลเตอร์ low-boost:

ป้อนคำอธิบายรูปภาพที่นี่

จากนั้นวัดความยาวพัลส์ตามระยะเวลาที่พวกเขาใช้จ่ายเกินเกณฑ์ อาจเป็นความคิดที่ดีกว่าคือการแยกความแตกต่างของอินพุทเพื่อให้การเปลี่ยนเป็นสไปค์ขนาดใหญ่ใช้ค่าสัมบูรณ์และตรวจจับพวกมันเมื่อมันสูงกว่าขีด จำกัด :

ป้อนคำอธิบายรูปภาพที่นี่

จากนั้นวัดเวลาระหว่างพัลส์และเมื่อเวลาระหว่างพัลส์ทั้งสองใกล้เคียงกับพัลส์สองครั้งสุดท้ายจะเป็น 0 เมื่อประมาณครึ่งหนึ่งของเวลาที่อยู่ระหว่างพัลส์ทั้งสองครั้งมันคือ 1

ความเสื่อมของสนามแม่เหล็กที่คุณพูดถึงควรจะง่ายต่อการกำจัดออกด้วยตัวกรอง low-pass


ขอบคุณ! ฉันได้พบความสัมพันธ์ที่น่าสนใจบางอย่างที่ทำงานร่วมกับอนุพันธ์อันดับสองซึ่งฉันจะโพสต์ในหลักสูตรเนื่องจาก คุณอธิบายรายละเอียดเกี่ยวกับตัวกรอง low-boost ได้ไหม? ผมไม่ได้มีความคิดว่าฉันจะดำเนินการนี้ ...
P ฉัน

@endolith คุณช่วยเพิ่มแท็กให้กับคำถามได้ไหม ฉันติดแท็กเป็นรหัสต่างๆ ขึ้นอยู่กับคำตอบของคุณ แต่คุณรู้หัวข้อนี้ดีกว่า
Lorem Ipsum

@yoda: ฮ่าฮ่าฉันไม่ทำ ฉันเพิ่งเรียนรู้เกี่ยวกับเรื่องนี้ไม่กี่ชั่วโมงที่ผ่านมาเพื่อเขียนคำตอบนี้
endolith

@endolith ฉันเพิ่งเจอสิ่งนี้ - มันดี - คุณสามารถอธิบายได้ว่า 'low boost filter' นี้ได้อย่างไร ดูเหมือนว่าน่าสนใจจริงๆและ Google ไม่ได้ของความช่วยเหลือมาก ...
สเปซีย์

@ Mohammad: เพียงตัวกรองที่ช่วยเพิ่มความถี่ต่ำในขณะที่ยังคงเสียงสูง ฉันคิดว่าฉันใช้ตัวปรับแต่งเสียงกราฟิกใน Adobe Audition ลองใช้ตัวกรองการเก็บเข้าลิ้นชักcrca.ucsd.edu/~msp/techniques/latest/book-html/node142.html
endolith

4

นี่เป็นความท้าทาย ฉันพยายามอย่างน้อยสี่วิธีก่อนที่จะแคร็กมัน นี่คือวิธีที่ฉันทำ:

ป้อนคำอธิบายรูปภาพที่นี่

ฉันเริ่มต้นด้วยการทำให้ข้อมูลราบรื่น ( การอ่านครั้งแรก ) ด้วยวิธีที่ง่าย ...

x_new = 0.9 * x_prev + 0.1 * x_in

... ตัวกรอง IIR ฉันทำสิ่งนี้ทั้งสองทิศทาง ( การอ่านที่สอง ) นี่เป็นการกำจัดเสียงฟัซซี่ทั้งหมด แต่ก็สร้างความไม่ต่อเนื่องซึ่งกลับมาพร้อมกับการล้างแค้นในตราสารอนุพันธ์

จากนั้นฉันจะได้รับอนุพันธ์ทั้งหมดจนถึงระดับที่สี่ ( การอ่านที่สามและสี่เป็นการแทนอนุพันธ์ที่สามและสี่) และสร้างฟังก์ชั่นใหม่:

g(x) = f'''(x)^2 + k*f''''(x)^2

ทำไม? เพราะฉันสังเกตเห็นว่าเมื่อเราไปถึงอนุพันธ์อันดับที่สามสิ่งที่เรามีคือไซนัสอยด์ภายในซอง:

ป้อนคำอธิบายรูปภาพที่นี่

... และทุกคนรู้จากโรงเรียนมัธยมที่:

sin^2 + cos^2=1 

ป้อนคำอธิบายรูปภาพที่นี่

และบาปและcosแยกความแตกต่างในแต่ละอื่น ๆ :

ป้อนคำอธิบายรูปภาพที่นี่

ดังนั้นซองจดหมายโดยนัยสามารถกู้คืนได้

ทำไมต้องเป็นอนุพันธ์ 3 และ 4 โดยพื้นฐานแล้วอนุพันธ์ที่สูงขึ้นจะชำระสัญญาณให้บริสุทธิ์ สิ่งที่เป็น sinusoidal ยังคงเป็น sinusoidal (เพียงแค่เปลี่ยนเฟส 90 °ดังนั้น sin-> cos เป็นต้น) ในขณะที่สิ่งที่ไม่ได้หายไป

ฉันต้องการใช้ 11 & 12 หรือบางอย่างบ้าบอ แต่อนุพันธ์แตกสลายค่อนข้างเร็ว 4 คือสูงสุดที่ฉันสามารถทำได้ก่อนที่จะยุ่งเหยิงแม้กระทั่งเส้นอนุพันธ์เล็ก ๆ ที่คุณเห็นในภาพนั้นเรียบมาก

นี้ก่อให้ชนเล็ก ๆ น้อย ๆ ที่ยอดเยี่ยมในทุกการเปลี่ยนแปลงฟลักซ์ ( อ่านห้า )

ต่อไปฉันเดินผ่านจุดหักเหปฏิเสธเสื้อผ้า ( อ่านที่หก ) ..

ในที่สุดฉันก็เดินผ่าน maxima ( การอ่านที่เจ็ด ) ประเมินว่าการข้ามแต่ละครั้งเป็นครึ่งก้าวหรือทั้งขั้นตอนจากนั้นสร้างไบนารีใหม่

เย้!

แก้ไข: ตอนนี้หลายเดือนแล้วตั้งแต่ฉันทำโครงการนี้เสร็จ ความท้าทายที่ยากที่สุดคือการสร้างการเปลี่ยนแปลงบางอย่างที่แยกการเปลี่ยนฟลักซ์ ในทางเทคนิคการพูด 'การดึงซองแอมพลิจูด' สิ่งนี้ทำได้โดยการสร้างสัญญาณกะระยะπ / 2 จากเดิม (ซึ่งเป็นที่รู้จักกันในนามของสัญญาณพื้นที่สี่เหลี่ยมจัตุรัส) ดังนั้น E (t) ^ 2 = S (t) ^ 2 + Q (S (t)) ^ 2

ในการรับสัญญาณพื้นที่สี่เหลี่ยมจัตุรัสฉันเพียงแค่ทำ FFT และหมุนแต่ละถังขยะทีละไตรมาสจากนั้นทำการรวมส่วนประกอบสเปกตรัมที่ได้รับการดัดแปลงอีกครั้ง

มีคำศัพท์ที่ไม่เหมาะสมจำนวนมากในสาขานี้ คำหลักคือ 'สัญญาณการวิเคราะห์', 'การเปลี่ยนแปลงของฮิลแบร์ต' ... ฉันหลีกเลี่ยงการใช้คำหลักเหล่านั้นเนื่องจากสาขาวิชาต่าง ๆ กำหนดความหมายต่างกัน

มีวิธีที่ชาญฉลาดกว่ามากในการรับซองขนาดแอมพลิจูดนี้โดยใช้ฟิลเตอร์ดิจิตอลดังนั้นหลีกเลี่ยงการแปลงฟูริเยร์ สิ่งนี้ทำให้อัลกอริทึมทำงานบนไมโครคอนโทรลเลอร์ที่มีกำลังไฟต่ำมาก

กระบวนการนี้สร้างรูปแบบของคลื่นที่ควรมีการชนเฉพาะในแต่ละช่วงการเปลี่ยนภาพ

การถอดรหัสรูปคลื่นนี้เป็นลำดับเลขฐานสองยังคงเป็นงานที่ไม่สำคัญ ความซับซ้อนและองค์ประกอบนี้เป็นอัลกอริทึมมากกว่าทางคณิตศาสตร์ ความยากลำบากเปรียบได้

ทั้งหมดนี้เป็นปัญหาที่ยากมาก ฉันใช้เวลาส่วนที่ดีที่สุดของสามเดือนเพื่อให้ได้อัลกอริธึมประสิทธิภาพของพวกเขา ฉันจะจัดทำเอกสารแนวทางของฉันและจัดทำโปรแกรมถอดรหัสที่เผยแพร่สู่สาธารณะ


1
หัวอ่านอาจได้รับผลกระทบจากโดเมนแม่เหล็กที่อยู่ติดกันรวมถึงการเปลี่ยนแปลงในปัจจุบันภายใต้หัวอ่านซึ่งมีแนวโน้มที่จะผลักดันการเปลี่ยนการอ่านไปมาในเวลาขึ้นอยู่กับรูปแบบบิตโดยรอบ
hotpaw2

โปรดทราบว่าเทคนิคนี้ไม่น่าเชื่อถือ แม้ว่ามันจะให้ผลลัพธ์ที่ยอดเยี่ยมสำหรับแทร็กส่วนใหญ่ แต่ก็ไม่สามารถสร้างการชนที่ไม่เหมือนใครสำหรับการเปลี่ยนฟลักซ์แต่ละต้นได้ นั่นคือมันสร้างการชนสองครั้ง ฉันเดาเพราะรูปคลื่นสัญญาณอินพุทนั้นไม่ได้เป็นไซน์ไซด์ที่เหมาะสม ดังนั้นฉันยังคงมองหาเทคนิค
ฉัน

แค่อยากรู้อยากเห็นคุณมีคำจำกัดความอื่น ๆ ของ "สัญญาณวิเคราะห์" หรือ "แปลงฮิลแบร์ต"? หากคุณกำลังมองหาซองจดหมายของสัญญาณคุณจะพบว่าโดยการแปลงสัญญาณเป็นสัญญาณการวิเคราะห์ (เชิงซ้อน) มีสองสามวิธีในการทำสิ่งนี้ แต่สิ่งที่คุณระบุไม่ได้ใช้โดยทั่วไป
Jason R

@JR บางแหล่งดูเหมือนจะกำหนดสัญญาณการวิเคราะห์ว่าการเปลี่ยนเฟส 90 °คือ Quad (f (x)) อื่น ๆ เป็น f (x) + i.Quad (f (x)) ฉันคิดว่าฉันเคยเห็นการเปลี่ยนแปลงของฮิลแบร์ตซึ่งนิยามว่าเป็นทั้งสองอย่างนี้ ไม่แน่ใจอย่างสมบูรณ์ดังนั้นฉันจึงติดอยู่กับสัญกรณ์ที่ควรจะคลุมเครือ ฉันสนใจเทคนิคอื่น ๆ ในการดึงซองจดหมายของสัญญาณ dsp.stackexchange.com/questions/424/ … ดูเหมือนว่าเป็นสถานที่ที่เหมาะสมในการติดตามกระทู้นี้
ฉัน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.