2012-09-07 11 views
5

के साथ डेटा प्रेषण मैं एक साथ ब्लूटूथ LE परिधीय के साथ एक आईओएस ऐप विकसित कर रहा हूं। एक कदम जो मैं हल करने में सक्षम नहीं हूं, यह है कि वास्तव में मेरे ऐप से डेटा को परिधीय या इसके विपरीत कैसे प्रसारित करना है।CoreBluetooth

जो मैंने अभी तक बनाया है वह एक परीक्षण ऐप है जो मेरे नमूना ब्लूटूथ परिधीय से कनेक्ट हो सकता है, और इसकी सभी सेवाओं/विशेषताओं/वर्णनकर्ताओं को पढ़ सकता है। यह किसी विशेष विशेषता के लिए नोटिफिकेशन टॉगल कर सकता है, और दिए गए विशेषताओं को लिख सकता है। यह केवल अंतिम चरण है "परिधीय को एन बाइट्स ट्रांसमिट करें, और परिधीय से एम बाइट प्राप्त करें" जो मुझे पता लगाना प्रतीत नहीं होता है।

बाहरी एक्सेसरी फ्रेमवर्क को देखकर (यदि मैं वास्तव में इस परियोजना के लिए मुझे एमएफआई अनुमोदन देता हूं तो मैं क्या उपयोग करूंगा), वे आपको एक्सेसरी के साथ संवाद करने के लिए किसी दिए गए सत्र में इनपुट और आउटपुट स्ट्रीम देते हैं, लेकिन ऐसी कोई वस्तु मौजूद नहीं है CoreBluetooth के लिए।

क्या यह कोरब्लूटूथ की कार्यक्षमता पर ऐप्पल के हिस्से पर बस एक निरीक्षण है? या क्या मुझे बस परिधीय से डेटा के प्रवाह/बहिर्वाह को संभालने के लिए अपनी खुद की ब्लूटूथ सेवा प्रोफ़ाइल विकसित करने की आवश्यकता है?

+0

आपको बीएलई अनुप्रयोगों को विकसित करने के लिए एमएफआई अनुमोदन की आवश्यकता नहीं है – chwi

उत्तर

2

LE मूल रूप से इन जीएटीटी आधारित प्रोफाइल के साथ काम करने के लिए डिज़ाइन किया गया है, जो सेंसर की निगरानी के लिए उपयुक्त हैं, डेटा स्ट्रीम के लिए नहीं। जबकि LE कस्टम प्रोटोकॉल के लिए अतिरिक्त L2CAP स्ट्रीम खोलने की अनुमति देता है, ऐप्पल का कोरब्लूथूट ऐसा करने की सुविधा प्रदान नहीं करता है।

+0

मैं एक समय में 1k के आदेश पर, शायद एक सौ बाइट्स पर भी, बहुत अधिक डेटा धाराओं को प्रेषित नहीं कर रहा हूं। मुझे लगता है कि मुझे आवश्यक डेटा संचारित करने के लिए पर्याप्त गुणों के साथ एक सेवा प्रोफ़ाइल तैयार कर सकते हैं? –

+0

हां, आप एक विशेषता या गुणों का सेट उपयोग कर सकते हैं जहां आपके "डेटा स्ट्रीम" को विशेषता के मूल्य को अपडेट करके संभवतः परिवर्तन पर स्वचालित संकेत के साथ पूरा किया जाता है। – TJD

+0

जानकारी के लिए धन्यवाद, मुझे डेटा धाराओं तक बीएलई पर बहुत कुछ नहीं मिला। –

2

आप bluetooth.org 'तत्काल चेतावनी सेवा' uuid = 1802 विशेषता वाले यूयूआईडी = 2 ए06 के साथ संपत्ति = write_no_response के साथ अपने आईफोन से अपने परिधीय डिवाइस को एक बाइट मान भेजने के लिए उपयोग कर सकते हैं। परिधीय उपकरण को भेजे गए डेटा पर कार्य करने के लिए प्रोग्राम किया जाना चाहिए। उदाहरण के लिए, आप एक हेक्स पते भेजने के लिए एक आईफोन ऐप पर एक बटन का उपयोग कर सकते हैं जो परिधीय पर एक या अधिक बंदरगाह पिन चालू या बंद कर देता है। हालांकि यह अलर्ट सेवा का उपयोग नहीं कर रहा था, क्योंकि यह एक परिधीय डिवाइस में डेटा हस्तांतरण का परीक्षण करने का एक आसान तरीका प्रदान करता है। सीरियल डेटा स्ट्रीम के समान अनुक्रमिक डेटा बाइट भेजने के लिए एक ही प्रक्रिया का उपयोग किया जा सकता है। मैंने अभी तक अधिक जटिल डेटा स्ट्रीम भेजने की कोशिश नहीं की है। Write_no_response ऐप को कोई प्रतिक्रिया नहीं देता है कि डेटा परिधीय द्वारा प्राप्त किया गया था या नहीं।

आईओएस तापमान सेंसर.एक्सप्रोज़ परिधीय से तापमान डेटा पढ़ने के लिए कोड का एक उदाहरण है। OSX HealthThermometerClient.xproj में कुछ जटिल थर्मामीटर डेटा संरचना को डीकोड करने के लिए आवश्यक कोड है। IOS TI-BLE-Demo.xproj TIBLECBKeyfob.m में विशिष्ट मान पढ़ने और लिखने के लिए कोड है, जैसे परिधीय डिवाइस से तापमान या बैटरी स्तर पढ़ना।

2

आप निजी सेवाओं और विशेषताओं के साथ एक कस्टम प्रोफ़ाइल बना सकते हैं और यह एसएसपी की तरह काम कर सकते हैं; इस तरह से मैं अपने एप में कुछ सेंसर से डेटा प्राप्त करने के लिए अपने बीएलई मॉड्यूल का उपयोग कर रहा हूं। मैंने जो मॉड्यूल खरीदा है (माइक्रोचिप के आरएन -4020) में पहले से ही एक कस्टम प्रोफ़ाइल है जिसे विशेष रूप से एमएलडीपी (माइक्रोचिप लो-एनर्जी डेटा प्रोफाइल) के नाम से जाना जाता है।

जिस तरह से मुझे अपने आईओएस ऐप में डेटा मिलता है वह निजी विशेषता की सदस्यता लेता है, इस प्रकार मूल्यों को अद्यतन होने पर अधिसूचित किया जा रहा है। अब तक यह बहुत अच्छा काम कर रहा है, और माइक्रोचिप के अनुसार डेटा दर 20 केबीपीएस तक जा सकती है (मैंने इसकी सीमाओं का परीक्षण नहीं किया है, क्योंकि मुझे ज्यादा गति की आवश्यकता नहीं है)। यहां माइक्रोचिप के उत्पाद पृष्ठ का एक लिंक दिया गया है: http://www.microchip.com/wwwproducts/Devices.aspx?product=RN4020

शुभकामनाएँ!