สิ่งแรกที่แลงสังเกตเห็นเช่นกัน: ระดับคือสิ่งที่ตรงกันข้ามกับสิ่งที่ไมโครคอนโทรลเลอร์มักจะส่งออก:
ไม่ต้องกังวลเราจะเห็นว่าเราสามารถอ่านได้ด้วยวิธีนี้ เพียงแค่เราต้องจำไว้ว่าในขอบเขตบิตเริ่มต้นที่จะเป็นและบิตหยุด 1
0
μμμ1
μ0
0x00
1
μ
0xFF
μ
guesstimates:
0b11001111 = 0xCF
0b11110010 = 0xF2
0b11001101 = 0xCD
0b11001010 = 0xCA
0b11001010 = 0xCA
0b11110010 = 0xF2
แก้ไข
Olin ถูกต้องอย่างแน่นอนนี่คือสิ่งที่คล้าย ASCII แท้ที่จริงแล้วมันเป็นส่วนเสริมของ ASCII 1
0xCF ~ 0x30 = '0'
0xCE ~ 0x31 = '1'
0xCD ~ 0x32 = '2'
0xCC ~ 0x33 = '3'
0xCB ~ 0x34 = '4'
0xCA ~ 0x35 = '5'
0xF2 ~ 0x0D = [CR]
นี่เป็นการยืนยันว่าการตีความภาพหน้าจอของฉันถูกต้อง
แก้ไข 2 (ฉันจะตีความข้อมูลตามคำขอที่ได้รับความนิยม :-))
คำเตือน: นี่เป็นเรื่องยาวเพราะมันเป็นบันทึกของสิ่งที่เกิดขึ้นในหัวของฉันเมื่อฉันพยายามที่จะถอดรหัสสิ่งเช่นนี้ อ่านเฉพาะในกรณีที่คุณต้องการเรียนรู้วิธีจัดการกับมัน
ตัวอย่าง: ไบต์ที่สองในสกรีนช็อตที่ 1 เริ่มต้นด้วยพัลส์แคบ 2 อัน ฉันเริ่มต้นด้วยไบต์ที่สองโดยมีวัตถุประสงค์เพราะมีขอบมากกว่าในไบต์แรกดังนั้นมันจะง่ายกว่าที่จะทำให้ถูกต้อง พัลส์แคบ ๆ แต่ละอันอยู่ที่ประมาณ 1 ใน 10 ของการหารดังนั้นอาจจะสูงถึง 1 บิตในแต่ละครั้งโดยมีค่าต่ำระหว่างกัน ฉันไม่เห็นอะไรที่แคบไปกว่านี้ดังนั้นฉันคิดว่ามันน่าจะเป็นเรื่องเล็กน้อย นั่นคือการอ้างอิงของเรา
จากนั้นหลังจาก101
นั้นมีระยะเวลานานในระดับต่ำ ดูกว้างประมาณสองเท่าของรุ่นก่อนหน้าดังนั้นอาจเป็น00
ได้ 1111
ต่อไปนี้จะสูงที่เป็นอีกครั้งที่สองครั้งที่กว้างเพื่อที่จะ ตอนนี้เรามี 9 บิต: บิตเริ่มต้น ( 1
) บวก 8 บิตข้อมูล บิตถัดไปจะเป็นบิตหยุด แต่เพราะมัน0
มันไม่สามารถมองเห็นได้ทันที ดังนั้นการรวมทั้งหมดเข้าด้วยกันเรามี1010011110
รวมถึงการเริ่มต้นและหยุดบิต ถ้าบิตหยุดไม่เป็นศูนย์ฉันจะทำสมมุติฐานที่ไม่ดีที่ไหนสักแห่ง!
โปรดจำไว้ว่า UART ส่ง LSB (น้อยนิดอย่างมีนัยสำคัญ) ก่อนดังนั้นเราจะต้องย้อนกลับ 8 บิตข้อมูล: = 11110010
0xF2
ตอนนี้เรารู้ความกว้างของหนึ่งบิตสองบิตและลำดับ 4 บิตและเราดูที่ไบต์แรก ช่วงเวลาสูงครั้งแรก (พัลส์กว้าง) กว้างกว่าเล็กน้อย1111
ในไบต์ที่สองเล็กน้อยดังนั้นจะกว้าง 5 บิต ต่ำและงวดต่อไปนี้มันสูงแต่ละที่กว้างเป็นบิตคู่ในไบต์อื่น ๆ 111110011
เพื่อให้เราได้รับ อีก 9 บิตดังนั้นบิตถัดไปควรเป็นบิตต่ำบิตหยุด ที่ตกลงดังนั้นหาก guesstimating ของเราคือการที่ถูกต้องอีกครั้งเราสามารถย้อนกลับบิตข้อมูล: = 11001111
0xCF
งั้นเราก็ได้คำใบ้จากแลง การสื่อสารแรกมีความยาว 2 ไบต์สั้นกว่า 2 ไบต์ และ "0" ก็คือ 2 ไบต์ที่สั้นกว่า "255" ดังนั้นมันอาจเป็นอะไรบางอย่างที่เหมือนกับ ASCII แม้ว่าจะไม่ใช่อย่างแน่นอน ฉันยังทราบว่าไบต์ที่สองและสามของ "255" เหมือนกัน เยี่ยมมากนั่นจะเป็น "5" สองเท่า เราทำได้ดี! (คุณต้องให้กำลังใจตัวเองเป็นครั้งคราว) หลังจากถอดรหัส "0", "2" และ "5" ฉันสังเกตเห็นว่ามีความแตกต่างของ 2 ระหว่างรหัสสำหรับสองคนแรกและความแตกต่างของ 3 ระหว่างที่ผ่านมา สอง. และในที่สุดฉันก็สังเกตเห็นว่า0xC_
มันคือส่วนประกอบของ0x3_
ซึ่งเป็นรูปแบบของตัวเลขใน ASCII