Characteristic: یہ کیا ہے، ڈیٹا کی اقسام اور اقدار کا پڑھنا

مصنف: IT Sectr اشاعت: 2026-07-15 مطالعے کا وقت: 7 منٹ

Characteristic — Bluetooth Low Energy میں ڈیٹا کی بنیادی اکائی ہے، جس کے ذریعے Central پیری فیرل ڈیوائس پر معلومات حاصل یا لکھ سکتا ہے۔ ہر Characteristic ایک مخصوص GATT-سروس سے تعلق رکھتی ہے، اس کا منفرد UUID اور خصوصیات کا ایک سیٹ (read, write, notify, indicate) ہوتا ہے جو ممکنہ آپریشنز کا تعین کرتا ہے۔ Bluetooth Core Specification 5.4 (2023) کے مطابق، Bluetooth SIG نے طبی، فٹنس اور صنعتی آلات کے لیے 500 سے زیادہ معیاری خصوصیات کی وضاحت کی ہے۔ ڈویلپر سینسر کی ریڈنگز سے لے کر ڈیوائس کمانڈز تک کسی بھی صارف ڈیٹا کی منتقلی کے لیے کسٹم خصوصیات بنا سکتا ہے۔

اہم نکات

  • Characteristic — BLE کے GATT-سروس کے اندر ڈیٹا کا نقطہ ہے، جس میں UUID، خصوصیات اور ایک مخصوص قسم کی ویلیو ہوتی ہے۔
  • خصوصیات دستیاب آپریشنز کا تعین کرتی ہیں: read (پڑھنا)، write (لکھنا)، notify (اطلاع)، indicate (تصدیق شدہ اطلاع)۔
  • معیاری خصوصیات (battery level, heart rate) کے پاس Bluetooth SIG رجسٹری سے 16-bit UUID ہوتے ہیں۔
  • ہر Characteristic میں ڈیسکریپٹرز ہو سکتے ہیں — میٹا ڈیٹا جو پیمائش کی اکائیوں یا اطلاعات کی تشکیل کو بیان کرتا ہے۔
  • Characteristic کے ذریعے ڈیٹا کے ایک پیکٹ کا زیادہ سے زیادہ سائز 20 بائٹ (MTU 23) یا MTU بڑھانے پر 244 بائٹ تک ہوتا ہے۔

BLE میں Characteristic کیا ہے؟

Characteristic — GATT-پروٹوکول کا ایک ایٹری بیوٹ ہے جس میں ویلیو اور میٹا ڈیٹا ہوتا ہے۔ BLE آرکیٹیکچر میں ڈیٹا براہ راست آلات کے درمیان منتقل نہیں ہوتا، بلکہ سروس کی خصوصیات کی اقدار کو پڑھنے اور لکھنے کے ذریعے منتقل ہوتا ہے۔ اگر سروس ایک فولڈر ہے، تو Characteristic اس فولڈر کے اندر ایک فائل ہے۔

ہر Characteristic تین اجزاء پر مشتمل ہوتی ہے: اعلان (declaration)، ویلیو (value) اور ڈیسکریپٹرز (descriptors)۔ اعلان میں UUID اور خصوصیات ہوتی ہیں۔ ویلیو وہ ڈیٹا ہے جو Central اور Peripheral کے درمیان منتقل ہوتا ہے۔ ڈیسکریپٹرز اضافی تشکیل فراہم کرتے ہیں۔

Bluetooth Core Specification 5.4 (2023) کے مطابق، BLE میں تمام ڈیٹا کا تبادلہ خصوصیات پر آپریشنز کے ذریعے ہوتا ہے۔ یہاں تک کہ معیاری پروفائلز جیسے Heart Rate Profile یا Battery Service بھی پہلے سے طے شدہ UUID والی خصوصیات کے سیٹ پر بنائے گئے ہیں۔ یہ مختلف مینوفیکچررز کے آلات کی پہلے سے ترتیب کے بغیر مطابقت کو یقینی بناتا ہے۔

ڈویلپر کے لیے یہ سمجھنا ضروری ہے: ہر Characteristic مختلف خصوصیات کے امتزاج کو سپورٹ کر سکتی ہے۔ ایک خصوصیت صرف پڑھنے کے لیے ہو سکتی ہے، دوسری لکھنے کے لیے، تیسری اطلاعات کے لیے۔ خصوصیات کا صحیح انتخاب استعمال کے منظر نامے اور ڈیوائس کی توانائی کی کھپت کا تعین کرتا ہے۔

Characteristic کی خصوصیات اور اجازتیں

خصوصیات (properties) اس بات کا تعین کرتی ہیں کہ اس پر کون سے آپریشنز کی اجازت ہے۔ یہ ایک بائٹ ماسک ہے، جہاں ہر بٹ ایک مخصوص آپریشن کو فعال یا غیر فعال کرتا ہے۔ ذیل میں اہم خصوصیات درج ہیں۔

خصوصیتبٹوضاحتعام استعمال
Read0x02Central موجودہ ویلیو پڑھ سکتا ہےاسٹیٹس، بیٹری لیول، کنفیگریشن
Write0x08Central نئی ویلیو لکھ سکتا ہےکمانڈز، سیٹنگز
Notify0x10Peripheral تصدیق کے بغیر ویلیو بھیجتا ہےاسٹریمنگ ڈیٹا (پلس، درجہ حرارت)
Indicate0x20Peripheral تصدیق کے ساتھ ویلیو بھیجتا ہےاہم ڈیٹا (الارم، اسٹیٹس)
Write Without Response0x04سرور سے تصدیق کے انتظار کے بغیر لکھناتیز رفتار کمانڈ ٹرانسمیشن

اجازتیں (permissions) — GATT-سرور کی سطح پر رسائی کی سطح ہے۔ خصوصیات کے برعکس، جو اعلان میں بتائی جاتی ہیں، اجازتیں ہر آپریشن پر چیک کی جاتی ہیں۔ ان میں خفیہ کاری اور تصدیق کی ضروریات شامل ہو سکتی ہیں۔

Bluetooth SIG کی معیاری خصوصیات

Bluetooth SIG نے 500 سے زیادہ معیاری خصوصیات کی وضاحت کی ہے جو BLE کے زیادہ تر عام استعمال کے منظرناموں کا احاطہ کرتی ہیں۔ معیاری UUID کا استعمال اس بات کی ضمانت دیتا ہے کہ کوئی بھی وصول کنندہ ڈیوائس پہلے سے ترتیب کے بغیر ڈیٹا کی صحیح تشریح کرے گا۔

ذیل میں سب سے زیادہ استعمال ہونے والی معیاری خصوصیات ہیں:

UUIDنامڈیٹا کی قسمسروس
0x2A19Battery Leveluint8 (0–100%)Battery Service
0x2A37Heart Rate Measurementuint8 + فلیگزHeart Rate
0x2A6ETemperatureint16 (0.01°C)Environmental Sensing
0x2A6FHumidityuint16 (0.01%)Environmental Sensing
0x2A00Device NameUTF-8 stringGeneric Access
0x2A01Appearanceuint16Generic Access

اگر موجودہ معیاری خصوصیت آپ کے کام کو کور کرتی ہے تو اسے استعمال کریں۔ یہ Bluetooth سرٹیفیکیشن کو آسان بناتا ہے اور ایکو سسٹم کے ساتھ مطابقت بڑھاتا ہے۔ کسٹم خصوصیات صرف منفرد ڈیٹا کے لیے بنائیں جو SIG رجسٹری میں موجود نہیں ہے۔

iOS اور Android میں Characteristic کیسے بنائیں

خصوصیت بنانا Peripheral کی طرف سے کیا جاتا ہے — وہ ڈیوائس جو ڈیٹا فراہم کرتی ہے۔ آئیے iOS (Swift) اور Android (Java) پر عمل درآمد دیکھتے ہیں۔

iOS: CBMutableCharacteristic

Core Bluetooth خصوصیت بنانے کے لیے CBMutableCharacteristic کلاس فراہم کرتا ہے جس میں UUID، خصوصیات اور ابتدائی ویلیو بتائی جاتی ہے۔

swift
import CoreBluetooth

let characteristicUUID = CBUUID("2A19") // Battery Level characteristic

let characteristic = CBMutableCharacteristic(
    type: characteristicUUID,
    properties: [.read, .notify],
    value: nil,
    permissions: [.readable]
)

// تبدیلی پر ویلیو اپ ڈیٹ کریں
let batteryData = Data([batteryLevel]) // uint8
peripheralManager.updateValue(
    batteryData,
    for: characteristic,
    onSubscribedCentrals: nil
)

Android: BluetoothGattCharacteristic

Android پر خصوصیت BluetoothGattCharacteristic کے ذریعے UUID، خصوصیات اور Permission کے ساتھ بنائی جاتی ہے۔

java
import android.bluetooth.*;

UUID charUuid = UUID.fromString("00002A19-0000-1000-8000-00805F9B34FB");

BluetoothGattCharacteristic characteristic =
    new BluetoothGattCharacteristic(
        charUuid,
        BluetoothGattCharacteristic.PROPERTY_READ
            | BluetoothGattCharacteristic.PROPERTY_NOTIFY,
        BluetoothGattCharacteristic.PERMISSION_READ
    );

// ویلیو سیٹ کریں
characteristic.setValue(batteryLevel, BluetoothGattCharacteristic.FORMAT_UINT8, 0);
gattServer.notifyCharacteristicChanged(device, characteristic, false);

پڑھنا، لکھنا اور اطلاعات

Characteristic پر آپریشنز تین قسموں میں تقسیم ہوتے ہیں: پڑھنا (read)، لکھنا (write) اور اطلاعات (notify/indicate)۔ آپریشن کا انتخاب منظر نامے پر منحصر ہے: درخواست پر ڈیٹا پڑھا جاتا ہے، کمانڈز لکھی جاتی ہیں، اسٹریمنگ ڈیٹا اطلاعات کے لیے سبسکرائب کیا جاتا ہے۔

Read — Central خصوصیت کی ویلیو پڑھنے کی درخواست بھیجتا ہے۔ Peripheral موجودہ ویلیو کے ساتھ جواب دیتا ہے۔ آپریشن مطابقت پذیر ہے اور ہر بار واضح درخواست کی ضرورت ہوتی ہے۔ یہ ان ڈیٹا کے لیے استعمال ہوتا ہے جو شاذ و نادر ہی تبدیل ہوتا ہے: فرم ویئر ورژن، سیریل نمبر، سیٹنگز۔

Write — Central Peripheral کو ڈیٹا بھیجتا ہے۔ دو طریقے ہیں: Write with Response (Peripheral سے تصدیق) اور Write Without Response (بغیر تصدیق کے)۔ Write with Response ترسیل کی ضمانت دیتا ہے — Peripheral لکھنے کے بعد تصدیق بھیجتا ہے۔ Write Without Response تیز ہے لیکن ترسیل کی ضمانت نہیں دیتا۔

Notify اور Indicate — Peripheral Central کو ڈیٹا بھیجنے کا آغاز کرتا ہے۔ Notify میں ڈیٹا بغیر تصدیق کے بھیجا جاتا ہے — اگر Central پیکٹ وصول نہ کر سکے تو وہ ضائع ہو جاتا ہے۔ Indicate میں Central تصدیق (PDU-سطح) بھیجتا ہے، جو ترسیل کی ضمانت دیتا ہے۔ Indicate سست لیکن زیادہ قابل اعتماد ہے۔ اطلاعات کی سبسکرائب کرنے کے لیے Central CCCD (Client Characteristic Configuration Descriptor) میں 0x0001 ویلیو لکھتا ہے۔

MTU اور منتقل کردہ ڈیٹا کا سائز

MTU (Maximum Transmission Unit) BLE ڈیٹا پیکٹ کے زیادہ سے زیادہ سائز کا تعین کرتا ہے۔ پہلے سے طے شدہ MTU 23 بائٹ ہے، جس میں سے 3 بائٹ ہیڈر کے ہیں — پے لوڈ (ATT payload) 20 بائٹ ہے۔ یہ زیادہ تر سینسر ڈیٹا کے لیے کافی ہے، لیکن فائلوں یا بڑی کنفیگریشنز کی منتقلی کے لیے ناکافی ہے۔

Bluetooth Core Specification 5.4 MTU negotiation (MTU کا تعین) کو سپورٹ کرتی ہے — Central اور Peripheral 517 بائٹ تک بڑے پیکٹ سائز پر متفق ہو سکتے ہیں۔ عمل اس طرح ہے: Central اپنے MTU کی تجویز کے ساتھ MTU Exchange کی درخواست بھیجتا ہے؛ Peripheral اپنے MTU کے ساتھ جواب دیتا ہے؛ دونوں میں سے کم ویلیو استعمال ہوتی ہے۔

swift
// iOS کنیکٹ ہونے پر MTU کی درخواست کرتا ہے
// iOS میں زیادہ سے زیادہ MTU 185 بائٹ ہے
func peripheral(
    _ peripheral: CBPeripheral,
    didDiscoverServices error: Error?
) {
    // مخصوص پیری فیرل کے لیے MTU کی درخواست کریں
    peripheral.maximumWriteValueLength(for: .withResponse)
}

Bluetooth SIG (2023) کے مطابق، MTU کو 23 سے 185 بائٹ تک بڑھانے سے پیکٹوں کی تعداد کم ہونے کی وجہ سے ڈیٹا کی منتقلی کے اضافی اخراجات 80% تک کم ہو جاتے ہیں۔ ان ایپلیکیشنز کے لیے جو زیادہ فریکوئنسی پر ریڈنگ منتقل کرتی ہیں (مثلاً ECG یا ایکسلرومیٹر)، MTU میں اضافہ سٹریم کے استحکام کے لیے اہم ہے۔

اکثر پوچھے گئے سوالات

ایک سروس میں کتنی خصوصیات ہو سکتی ہیں؟

BLE تصریح سروس میں خصوصیات کی تعداد کو محدود نہیں کرتی۔ عملی طور پر، حد GATT-سرور کی دستیاب میموری اور کارکردگی کی ضروریات سے طے ہوتی ہے۔ ایمبیڈڈ آلات کے لیے فی سروس 10–15 سے زیادہ خصوصیات نہ رکھنے کی سفارش کی جاتی ہے۔

Notify اور Indicate میں کیا فرق ہے؟

Notify تصدیق کے بغیر ڈیٹا بھیجتا ہے — بھیجنے والے کو اطلاع دیے بغیر پیکٹ ضائع ہو سکتا ہے۔ Indicate کو پروٹوکول کی سطح پر تصدیق (ACK) کی ضرورت ہوتی ہے، جو ترسیل کی ضمانت دیتا ہے۔ Indicate سست لیکن زیادہ قابل اعتماد ہے۔ اہم ڈیٹا (الارم، کمانڈز) کے لیے Indicate استعمال کریں۔

کیا ایک خصوصیت ایک ہی وقت میں Read اور Write رکھ سکتی ہے؟

ہاں، ایک خصوصیت خصوصیات کا امتزاج رکھ سکتی ہے۔ مثال کے طور پر، سیٹنگز کی خصوصیت Read (موجودہ ویلیو پڑھنا) اور Write (ترتیب تبدیل کرنا) دونوں کو سپورٹ کر سکتی ہے۔ اپنے استعمال کے منظر نامے کے مطابق خصوصیات کو یکجا کریں۔

BLE کے ذریعے 20 بائٹ سے زیادہ ڈیٹا کیسے منتقل کیا جائے؟

پیکٹ کا سائز 185–517 بائٹ تک بڑھانے کے لیے MTU negotiation استعمال کریں۔ اگر ڈیٹا پھر بھی بڑا ہے تو ایپلیکیشن کی سطح پر فریگمنٹیشن لاگو کریں: ڈیٹا کو کئی متواتر درخواستوں میں توڑیں اور انٹیگریٹی کنٹرول رکھیں۔

کیا معیاری UUID خصوصیات استعمال کرنا ضروری ہے؟

اگر آپ کا کام معیاری خصوصیت سے پورا ہوتا ہے تو Bluetooth SIG رجسٹری سے UUID استعمال کریں۔ یہ سرٹیفیکیشن کو آسان بناتا ہے اور ایکو سسٹم کے ساتھ مطابقت کو یقینی بناتا ہے۔ کسٹم UUID صرف تیسرے فریق کے منفرد ڈیٹا کے لیے بنائیں۔

خلاصہ

  • Characteristic — BLE میں ڈیٹا کی منتقلی کا بنیادی طریقہ کار ہے، جو UUID، خصوصیات اور ڈیسکریپٹرز کے ساتھ ایک ویلیو کی نمائندگی کرتا ہے۔
  • خصوصیات (Read, Write, Notify, Indicate) اس بات کا تعین کرتی ہیں کہ خصوصیت پر کون سے آپریشنز دستیاب ہیں۔
  • Bluetooth SIG نے 500 سے زیادہ معیاری خصوصیات کی وضاحت کی ہے — آلات کی مطابقت کے لیے انہیں استعمال کریں۔
  • خصوصیت بنانا Peripheral کی طرف سے Core Bluetooth (iOS) یا BluetoothGattCharacteristic (Android) کے ذریعے کیا جاتا ہے۔
  • اطلاعات (Notify/Indicate) اسٹریمنگ ڈیٹا کے لیے باقاعدہ پولنگ سے زیادہ موثر ہیں — انہیں Central سے مسلسل درخواستوں کی ضرورت نہیں ہوتی۔
  • ایک پیکٹ کا سائز MTU (پہلے سے طے شدہ 20 بائٹ) تک محدود ہے، لیکن MTU Exchange کے ذریعے 517 بائٹ تک بڑھایا جا سکتا ہے۔
  • خصوصیات اور UUID کا صحیح انتخاب BLE کنکشن کی توانائی کی کھپت، وشوسنییتا اور کارکردگی کا تعین کرتا ہے۔

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں