2014-07-19 10 views
9

के माध्यम से रिमोट कंट्रोल कोड डीकोड करें मैं वर्तमान में एक एंड्रॉइड ऐप लिख रहा हूं जो एक इंटरनेट रेडियो के रूप में काम करता है। ऐप की कार्यक्षमता का हिस्सा यह है कि यह इन्फ्रारेड रिमोट के माध्यम से नियंत्रित है। इन्फ्रारेड रिमोट कोड माइक्रोफोन पोर्ट के माध्यम से एनालॉग ऑडियो के रूप में आते हैं। अगर मैं कुछ सिग्नल रिकॉर्ड करता हूं और ऑडैसिटी में उन्हें देखता हूं, तो यह देखने के लिए मेरे लिए बहुत आसान है कि प्रत्येक कोड क्या है। उदाहरण के लिए, निम्नलिखित 0111111010011001011111101000001 या 0x3F4CBF41 है। enter image description here मेरा सवाल यह है कि जब वे अंदर आते हैं और उन्हें पूर्णांक कोड संख्या में परिवर्तित करते हैं तो मैं इन संकेतों को प्रोग्रामेटिक रूप से कैसे पहचान सकता हूं। मैंने एलआईआरसी जैसे कुछ पैकेज किए गए समाधानों को देखा है, लेकिन वे सी में लिखे गए हैं और एकीकृत करना मुश्किल होगा। यह मुझे ऐसा लगता है कि इस तरह के सरल विश्लेषण करने के लिए देशी की तरह मार डाला जाएगा। मैंने संगीत की तरह पुस्तकालयों में भी देखा, लेकिन मुझे वास्तविक समय में कोड को बदलने का कोई आसान तरीका नहीं मिला।ऑडियो इनपुट

+1

मुझे यकीन नहीं है कि मैं समझता हूं कि यहां कौन सी जानकारी गुम है। क्या मुझे डेटा युक्त ध्वनि फ़ाइल संलग्न करनी चाहिए? अब तक मेरा ऐप डेटा रिकॉर्ड और सहेजता नहीं है। यह माइक्रोफोन पोर्ट के माध्यम से एक एनालॉग सिग्नल के रूप में आता है। संसाधित होने के बाद मुझे उम्मीद है कि एकमात्र आउटपुट रिमोट कोड का प्रतिनिधित्व करने वाला एक पूर्णांक संख्या था जैसा मैंने प्रश्न में उल्लेख किया था। क्या आप गायब होने के बारे में अधिक विशिष्ट हो सकते हैं? जटिलता के लिए, मैं कंप्यूटर दृष्टि अनुप्रयोगों को लिखने में काफी समय बिताता हूं। मुझे लगता है कि यह जटिलता में समान होगा। क्या मैं गलत था? – krispy

+2

@Xaver किसी ऐसे व्यक्ति के रूप में जिसने समान आवश्यकता के लिए मालिकाना समाधान विकसित किए हैं, मुझे पोस्टर से सहमत होना है, आवश्यक जानकारी प्रदान की गई है। आपके प्रश्न जिज्ञासा केवल पोस्ट के प्रश्न के लिए स्पर्शिक हैं। –

उत्तर

5

यह आपके प्रश्न से स्पष्ट है कि आप पीडब्लूएम से परिचित हैं और आईआर रिसीवर से प्राप्त सिग्नल पढ़ने की विधि से परिचित हैं। इस प्रकार, मैंने देखा है कि आप डेटा को उस विधि में संग्रहीत करने के लिए जावा का उपयोग कैसे कर सकते हैं, जिसे आप अपनी ऑडसिटी विंडो के रूप में आसानी से समझ सकते हैं।

javax.sound.sampled.spi में कुछ विधियां हैं जो मुझे लगता है कि मदद मिलेगी।

पहला getAudioStream()AudioFileReader में पहला है। यह AudioStream देता है जिसमें कुछ और तरीके हैं जो उपयोगी साबित हो सकती हैं। जिसे मैं आपके उद्देश्य के लिए सबसे आसान मानता हूं वह read() है जो स्ट्रीम में अगला बाइट देता है। आप हिस्सों या यहां तक ​​कि पूरी स्ट्रीम को पढ़ने के लिए एक बाइट सरणी भी प्रदान कर सकते हैं, साथ ही यह अधिक सुविधाजनक है।

तो अब आपके पास बाइट्स की एक सूची या सरणी है, और आप उन्हें नियमित अंतराल पर उच्च या निम्न के रूप में व्याख्या कर सकते हैं (क्योंकि यह ऑडियो नमूना है, प्रत्येक बाइट के बीच का समय स्थिर है) जो आपको पीडब्ल्यूएम डिकोडिंग के लिए आवश्यक है !

अनुमानित एंडपॉइंट ढूंढकर, आप उच्च/निम्न अवधि के पैटर्न के साथ समय के साथ एक बाइट पैटर्न बदल सकते हैं। चूंकि मुझे पता है कि आप इसे पढ़ सकते हैं (आपके प्रश्न में प्रदर्शित) मैं पैडेंटिक रूपांतरण छोड़ दूंगा, लेकिन कोड के हेक्साडेसिमल प्रतिनिधित्व में hhhlhllhhhhhhlllhh को परिवर्तित करना मुश्किल है।

टीएल; डीआर: स्ट्रीम को कैप्चर करें, प्रत्येक बाइट पढ़ें, समय के माध्यम से कनवर्ट करें, बाइनरी में कनवर्ट करें।

+0

आपके उत्तर के लिए धन्यवाद। मैंने आपकी सलाह का पालन किया है और मैं निश्चित रूप से प्रगति कर रहा हूं। अभी मैं समझता हूं कि ऑडैसिटी में फ्रेम की तुलना में फ्रेम बहुत अधिक उतार-चढ़ाव कर रहे हैं। वे एक नाड़ी में कई बार सकारात्मक और नकारात्मक संख्याओं के बीच आगे बढ़ते हैं। क्या आप स्पष्टीकरण के बारे में सोच सकते हैं? – krispy

+0

अपनी नमूना दर बदलने का प्रयास करें। –

+0

आपको आईआर सेंसर डेटा को पोस्ट-प्रोसेस करने की आवश्यकता हो सकती है। एक बहुत ही उच्च दर पर नमूना, फिर एक चिकनी संकेत प्राप्त करने के लिए नमूना औसत औसत। उदाहरण के लिए टी = 9/10 * टी + 1/10 * टी 0 –

संबंधित मुद्दे