Main Content

read

Bluetooth Low Energy 周辺デバイス上で特性または記述子のデータを読み取る

R2019b 以降

説明

特性の値の読み取り

characteristicData = read(c) は、Bluetooth® Low Energy 周辺デバイスから特性の値を読み取ります。データの読み取りは、入力 characteristic オブジェクト cAttributes プロパティに依存します。read のすべての可能な動作の詳細については、characteristicData を参照してください。

characteristicData = read(c,mode) は、mode を読み取りモードとして指定します。

[characteristicData,timestamp] = read(___) は、前述のいずれかの構文でタイムスタンプを読み取ります。

記述子の値の読み取り

descriptorData = read(d) は、Bluetooth Low Energy 周辺デバイスから記述子の値を読み取ります。

すべて折りたたむ

周辺デバイス上の特性にアクセスしてそのデータを読み取ります。

近くにある Bluetooth Low Energy 周辺デバイスへの接続を作成します。

b = ble("Thingy")
b = 
  ble with properties:

               Name: "Thingy"
            Address: "F2DF635320F6"
          Connected: 1
           Services: [9×2 table]
    Characteristics: [38×5 table]

Show services and characteristics

"Temperature" 特性を表す characteristic オブジェクトを作成します。

c = characteristic(b,"Weather Station Service","Temperature")
c = 
  Characteristic with properties:

             Name: "Temperature"
             UUID: "EF680201-9B35-4933-9B10-52FFA9740042"
       Attributes: "Notify"
      Descriptors: [1x3 table]
 DataAvailableFcn: []

Show descriptors

この特性は "Notify" をサポートするため、readを使用して最新のデータを取得できます。

data = read(c)
data = 1×2

    23    75

また、最新のデータのタイムスタンプを返すこともできます。

[data,timestamp] = read(c)
data = 1×2

    23    73

timestamp = datetime
   16-May-2019 16:20:00

データを摂氏単位で解釈します。最初のバイトは温度の整数部を表し、2 番目のバイトは小数部を 0.01 の分解能で表します。

temperature = data(1) + data(2)*0.01
temperature = 23.7300

周辺デバイス上の特性にアクセスし、そのデータを読み取るコールバック関数を作成します。

近くにある Bluetooth Low Energy 周辺デバイスへの接続を作成します。

b = ble("Thingy")
b = 
  ble with properties:

               Name: "Thingy"
            Address: "F2DF635320F6"
          Connected: 1
           Services: [9×2 table]
    Characteristics: [38×5 table]

Show services and characteristics

"Temperature" 特性を表す characteristic オブジェクトを作成します。

c = characteristic(b,"Weather Station Service","Temperature")
c = 
  Characteristic with properties:

             Name: "Temperature"
             UUID: "EF680201-9B35-4933-9B10-52FFA9740042"
       Attributes: "Notify"
      Descriptors: [1x3 table]
 DataAvailableFcn: []

Show descriptors

この特性は "Notify" をサポートするため、コールバック関数を作成できます。関数に displayCharacteristicData という名前を付け、以下のように定義します。読み取りモードを 'latest' ではなく 'oldest' として指定します。'latest' データを呼び出すと、前のデータのフラッシュが原因でコールバック関数にエラーが発生する場合があります。

function displayCharacteristicData(src,evt)
    [data,timestamp] = read(src,'oldest');
    disp(data);
    disp(timestamp);
end

@ 演算子を使用して、関数ハンドルを特性の DataAvailableFcn プロパティに割り当てます。新しい通知が利用できるときには、データがコマンド ウィンドウに表示されます。

c.DataAvailableFcn = @displayCharacteristicData
c = 
  Characteristic with properties:

             Name: "Temperature"
             UUID: "EF680201-9B35-4933-9B10-52FFA9740042"
       Attributes: "Notify"
      Descriptors: [1x3 table]
 DataAvailableFcn: displayCharacteristicData

Show descriptors

特性の操作が終了したら、unsubscribe を使用して通知を無効にします。

unsubscribe(c)

周辺デバイス上の記述子にアクセスしてそのデータを読み取ります。

近くにある Bluetooth Low Energy 周辺デバイスへの接続を作成します。

b = ble("DemoDev")
b = 
  ble with properties:

               Name: "DemoDev"
            Address: "FF548EA5658F"
          Connected: 1
           Services: [5×2 table]
    Characteristics: [10×5 table]

Show services and characteristics

"Heart Rate Measurement" 特性を表す characteristic オブジェクトを作成します。

c = characteristic(b,"Heart Rate","Heart Rate Measurement")
c = 
  Characteristic with properties:

             Name: "Heart Rate Measurement"
             UUID: "2A37"
       Attributes: "Notify"
      Descriptors: [1x3 table]
 DataAvailableFcn: []

Show descriptors

"Client Characteristic Configuration" 記述子を表す descriptor オブジェクトを作成します。

d = descriptor(c,"Client Characteristic Configuration")
d = 
  Descriptor with properties:

          Name: "Client Characteristic Configuration"
          UUID: "2902"
    Attributes: ["Read"    "Write"]

この記述子には、通知と表示が有効か無効かに関する情報が含まれます。read を使用して現在のデータを取得できます。

data = read(d)
data = 1×2

     0     0

Bluetooth SIG Web サイトの Bluetooth Core Specification にあるこの記述子の仕様を参照して、このデータを解釈します。

通知または表示のステータスが変更されると、この値は変化します。たとえば、subscribe を使用して通知をサブスクライブします。次に、記述子を再度読み取って、値の変化を確認します。

subscribe(c,'notification');
data = read(d)
data = 1×2

     1     0

入力引数

すべて折りたたむ

Bluetooth Low Energy 周辺デバイスの特性。characteristic オブジェクトとして指定します。

データを読み取るには、characteristic オブジェクトの Attributes プロパティに "Read""Notify"、または "Indicate" が含まれていなければなりません。

例: data = read(c) は、characteristic オブジェクト c の値を読み取ります。

読み取りモード。'latest' または 'oldest' として指定します。'latest' を使用すると、最新のデータを返し、前のデータをフラッシュします。'oldest' を使用すると、最後の読み取り以降の最も古いデータを返します。

メモ

'oldest' をコールバック関数 DataAvailableFcn 内で使用すると、前のデータのフラッシュによるエラーが回避されます。

例: data = read(c,'oldest') は、characteristic オブジェクト c での最後の読み取り以降の最も古い値を読み取ります。

データ型: char | string

Bluetooth Low Energy 周辺デバイスの記述子。descriptor オブジェクトとして指定します。

データを読み取るには、descriptor オブジェクトの Attributes プロパティに "Read" が含まれていなければなりません。

例: read(d) は descriptor オブジェクト d の値を読み取ります。

出力引数

すべて折りたたむ

周辺デバイスからの特性データ。数値または数値の配列として返されます。

データの読み取りは、characteristic オブジェクトの Attributes プロパティおよび指定されている読み取りmodeに依存します。

c.Attributesread(c) または read(c,'latest')read(c,'oldest')
  • "Read"

現在のデータ。サポートなし。
  • "Notify""Indicate" のいずれか、または両方

最新の通知または表示のデータ。

  • 通知または表示が無効で、read を呼び出すのはこれが初めての場合は、通知または表示が自動的に開始される。

  • 前のデータはフラッシュされる。

最後の読み取り以降の最も古い通知または表示。

  • 通知または表示が無効で、read を呼び出すのはこれが初めての場合は、通知または表示が自動的に開始される。

  • "Read"

    および

  • "Notify""Indicate" のいずれか、または両方

  • 通知または表示が無効な場合、characteristicData は現在のデータ。

  • 通知または表示が有効な場合、characteristicData は最後の通知または表示。

  • 通知または表示が無効な場合、read(c,'oldest') はサポートされない。

  • 通知または表示が有効な場合、characteristicData は最後の読み取り以降の最も古い通知または表示のデータであり、前のデータはフラッシュされる。

データ型: double

特性または記述子のデータをコンピューターで受信したことを示すタイムスタンプ。datetime 配列として返されます。

データ型: datetime

周辺デバイスからの記述子データ。数値として返されます。

データ型: double

バージョン履歴

R2019b で導入