2012-06-11 18 views
5

ब्लूटूथ कोर स्पेक वी 4.0 वॉल्यूम के साथ एकाधिक ब्लूटूथ कम ऊर्जा विशेषता मान लिखना। 3 भाग जी अनुभाग 4.9.3 राज्यों, प्रतिक्रिया के साथ विशिष्ट मूल्यों के लिखने के लिए, विशेषता प्रोटोकॉल लिखें लिखें प्रक्रिया का उपयोग किया जाता है।प्रतिक्रिया

Bluetooth कोर युक्ति V4.0 खंड 3 भाग एफ धारा 3.3.2 का वर्णन करता है, कि

एक ग्राहक एक बार एक सर्वर के लिए अनुरोध भेजता, कि ग्राहक एक ही सर्वर के लिए कोई अन्य अनुरोध भेजेगा प्रतिक्रिया पीडीयू प्राप्त होने तक।

मैं CoreBluetooth का उपयोग कर आईओएस ऐप में प्रतिक्रिया के साथ कई मान लिखना चाहता हूं। क्या मुझे यह विनिर्देश स्वयं प्रबंधित करना है? या क्या मैं बस एक ही समय में सभी मानों को लिखने के लिए - writeValue:forCharacteristic:type का उपयोग कर सकता हूं, और आईओएस प्रबंधित करता है कि प्रत्येक अनुरोध केवल पिछली बार संसाधित होने के बाद ही भेजा जाता है?

मैं किसी भी तरह लगता है कि आईओएस यह प्रबंधन करेगा, क्योंकि Bluetooth कोर युक्ति V4.0 खंड 3 भाग एफ धारा 3.4.5.2लिखें प्रतिक्रिया के अनुसार लिखा विशेषता के लिए एक लिंक शामिल नहीं है। हालांकि, - peripheral:didWriteValueForCharacteristic:error विधि से पता चलता है कि आईओएस किसी भी तरह से ट्रैक करता है कि प्रतिक्रिया किस प्रकार से जुड़ी हुई है।

क्या कोई इसे पुष्टि या अस्वीकार कर सकता है?

+0

क्या आपने इसे समझ लिया है? – chwi

+0

नहीं। अभी नहीं। :-( – Etan

उत्तर

2

मुझे नहीं लगता कि आपको सीबी से निपटने के दौरान एटीटी/जीएटीटी के बारे में चिंता करने की ज़रूरत है। कारण यह है कि सीबी का उपयोग करने वाले बहुत से लोग ब्लूटूथ कोर 4.0 spec तक पहुंच नहीं पाते हैं, न ही उन्हें पढ़ने की उम्मीद है।

कारण यह है कि सीबी जानता है कि विशेषता को कैसे जोड़ना है यह है कि प्रोटोकॉल यह निर्देश देता है कि प्रत्येक कमांड और प्रतिक्रिया जोड़े जाते हैं। जब आप एक कमांड भेजते हैं, तो आपको एक प्रतिक्रिया प्राप्त होगी।

तो आप कई बार लिखने के लिए उपयोग कर सकते हैं, और सीबी आपके लिए कॉल कतारबद्ध कर देगा, यानी यह अगले लिखने से पहले एटीटी परत पर प्रतिक्रिया की प्रतीक्षा करेगा। और प्रतिनिधियों के कॉलबैक को उसी क्रम में होने की गारंटी दी जाती है, जो लिखते हैं।

+3

क्या आप कृपया अपने कथन में कोई स्रोत जोड़ सकते हैं? इसके अलावा, ब्लूटूथ कोर स्पेक संस्करण 4.0 http://bluetooth.org/spec – Etan

+0

के तहत किसी के लिए स्वतंत्र रूप से उपलब्ध है, आप इन-एयर को खोजने के लिए एक स्नफ़फर का उपयोग कर सकते हैं ट्रैफिक कहलाते समय यातायात। इसके अलावा, तर्कसंगत रूप से सीबी आपके प्रतिनिधि पर भरोसा नहीं कर सकती है या अन्य अनुरोधों को संभालने की आवश्यकता से पहले खत्म हो सकती है, इसे प्रतिनिधि कॉलबैक पर इंतजार किए बिना सभी प्रोटोकॉल लेनदेन को संभालना होगा। फिर, आप नहीं हैं सीबी का उपयोग करने के लिए spec के 1000 पृष्ठों को पढ़ने की आवश्यकता है। यदि आपको संदेह है, तो आप https://devforums.apple.com/community/ios/core/cbt पर इस प्रश्न से पूछ सकते हैं – yuklai

1

मैं यानी "प्रतिक्रिया के साथ एक से अधिक अनुरोध" लिखने में सक्षम था

[आत्म परिधीय] writeValue: valueToWrite forCharacteristic: dataPointCharacteristic प्रकार: CBCharacteristicWriteWithResponse];

एक गुच्छा में - वास्तव में मैंने उनमें से 14 भेजे - और वे सभी देरी के बाद प्रतिक्रियाओं के साथ वापस आ गए। लेकिन - लिखने के जवाब में डेटा शामिल नहीं था जो विशेषता को लिखा गया था - यानी - विशेषता के भीतर केवल मूल्य प्रतिक्रिया में अमान्य था।

नोट के करीब होना प्रतीत होता है "ब्लूटूथ कोर स्पेक वी 4.0 वॉल्यूम 3 भाग एफ अनुभाग 3.4.5.2 के अनुसार लिखें प्रतिक्रिया में लिखित विशेषता का एक लिंक नहीं है" एक अंतर के साथ यह केवल [ characteristc मान] यह गलत है - लेकिन आईओएस ने आंतरिक रूप से अनुक्रमण की देखभाल की। तो अगली करने के लिए चरणों के अनुक्रम को संभालने के लिए अनुक्रमिक तर्क को हुक करने के लिए लिखने के जवाब (यानी बीएलई स्वीकृति) का उपयोग करना संभव नहीं लगता है।

तो - टेकवे है - यदि आप बीईएल को परिधीय को "कार्य # 1" संदेश "लिखने के लिए लिखते हैं" लिखते हैं, तो परिधीय से बीएलई प्रतिक्रिया "ठीक है!" है।प्रतिक्रिया आपको यह नहीं बताती है कि परिधीय संदेश "कार्य # 1" संदेश प्राप्त हुआ है, लेकिन इसके बजाय कुछ है - हां, मुझे वह मिल गया जो आप कह रहे हैं। मैं आपको सटीक आदेश दोहराने के लिए आलसी हूं :)

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