質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.75%

  • Monaca

    940questions

    「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

  • Cordova

    406questions

    Cordovaは様々なデバイスで使うことができるオープンソースなモバイル用開発プラットフォームです。開発者に各デバイスの元のプラットフォームで開発する必要をなくし、HTML・JavaScript・CSSなどの一般的なウェブのテクノロジーを使ってすべてのデバイスで展開することができるモバイルのアプリケーションを生成することを可能にします。

  • Bluetooth

    216questions

    Bluetoothとは短距離の間でデータを交換するための無線通信規格である。固定・モバイル両方のデバイスから、短波の電波送信を行うことで、高いセキュリティをもつパーソナルエリアネットワーク(PAN)を構築する。

Monaca cordova-plugin-ble-central で データが取得できません

解決済

回答 3

投稿

  • 評価
  • クリップ 1
  • VIEW 252

kumakake

score 15

BLEでデータの取得を機器(UA-651BLE)からしようとしています。
プラグインはcordova-plugin-ble-centralを使用しています。

IDやNameの取得はでき、connectionもできました。:1kkkjj

そのあと、ble.startNotification(0x2902)でデータを取得しようとしているので、indicationの設定の仕方がわからずな状態になっています。

ble.writeで0x2902に書き込みをやってみてもNot Foundとなってしまいます。

Androidのサンプルるとか見ているとwriteDescriptorとなっており、writeとは違う?

どなたか、このあたりご教授ください。

それと、cordova-plugin-ble-centralにこだわっているわけではないのでcordova-plugin-bluetoothのほうができるとかでも結構です。

よろしくお願いします。

app.js

var event = typeof cordova === 'undefined' ? 'DOMContentLoaded' : 'deviceready';
console.log("event:" + event );
document.addEventListener(event, onDeviceReady, false);
function onDeviceReady() {
    alert( device.cordova );
}
var myApp = ons.bootstrap();
var app;

var ua = navigator.userAgent;
alert( "ua:" + ua );

ons.ready(function() {
});

var heartRate = {
    service_uuid: '1810',
    characteristic_uuid: '2a35',    // BloodPressureMeasurement
    cccd_uuid : '2902'              // CCC Descriptor for Blood Measurement
}

myApp.controller('AppController', function() {
    this.pushes = 0;
    this.pops = 0;

    monaca.pushPage();
});

myApp.controller('MainMenuController', function( $scope ) {
    this.world = 'World';
    var gPeripheral;

    //---- Connect関連
    $scope.onConnect= function(){
        function fncConnect( peripheral ) {
            // データフェッチ
            doLog("Connected to:" + gPeripheral.id );
            var data = new Uint8Array(2);
            data[0] = 0x02;
            data[1] = 0x00;
//          window.ble.write( gPeripheral.id, heartRate.service_uuid, heartRate.cccd_uuid, data.buffer,
//              function() {
                    window.ble.startNotification( gPeripheral.id, heartRate.service_uuid, heartRate.characteristic_uuid,
                                                fncCbOnData, fncOnError);
//              },
//              function( reason ) {
//                  doLog( "Err CCCD:" + JSON.stringify( reason ));
//              });
//          window.ble.read( gPeripheral.id, heartRate.service_uuid, heartRate.characteristic_uuid,
//                                          fncOnData, fncOnError);
        }
        function fncDisconnect( reason ) {
            doLog( 'Disconnected' );
            window.ble.stopNotification( gPeripheral.id, heartRate.service_uuid, heartRate.characteristic_uuid,
                                        function() {
                                            alert( "OK stopNotification" );
                                        },
                                        function() {
                                            alert( "NG stopNotification" );
                                        });
        }
        function fncOnData( buffer ) {
            var data = new Uint8Array(buffer);
            var wStr = '';
            data.forEach( function( item ) {
                wStr += ( item + ':' );
            });
            var wAb = String.fromCharCode.apply("", new Uint8Array( buffer ));
            var wStr1 = '';
            doLog( 'Data:' + wStr );
            doLog( 'Asci:' + wAb );
        }
        function fncOnError( reason ) {
            console.log( JSON.stringify( reason ));
            doLog( "Err:" + JSON.stringify( reason ));
        }

        window.ble.connect( gPeripheral.id, fncConnect, fncDisconnect);
    }

    function fncCbOnData( buffer ) {
        alert( "fncCbOnData" );
    }

    //---- Scan関連
    $scope.onScan = function(){
        var foundHeartRateMonitor = false;
        $scope.statusMsg = 'Scan Module';

        window.ble.isEnabled( function() {
            function onScan(peripheral) {
                console.log("Found:" + JSON.stringify(peripheral));
                doLog("Found:" + JSON.stringify(peripheral));
                foundHeartRateMonitor = true;
                gPeripheral = peripheral;
                doLog( 'ID:' + gPeripheral.id );
                doLog( 'NAME:' + gPeripheral.name );
            }

            function scanFailure(reason) {
                alert("BLE Scan Failed:" + reason);
            }

            window.ble.scan([], 5, onScan, scanFailure);

            setTimeout(function() {
                if (!foundHeartRateMonitor) {
                    alert( "Did not find a heart rate monitor." );
                }
            }, 5000);
        }, function() {
            alert( "BluetoothをONにしてください" );
        })

    }

    function doLog( str ) {
        d_data.innerHTML = d_data.innerHTML + str + '<br />';
    }
});
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

check解決した方法

0

とくに意識する必要がなかったです。
Indicator設定せずとも通信ができました。
お騒がせしました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

ルール破り?回答ではないのですが、お書きになったプログラムを参考にさせて頂いているのですが、monacaにcordova-plugin-ble-centralのプラグインは成功したようですが、貴殿のプログラムが動かないのですが、基本的なところをもう少しご解説頂けませんでしょうか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/08/07 13:28

    はい、対応させていただきます。
    動かないとはどのようにでしょう?

    キャンセル

  • 2018/08/07 13:53

    ご返信、御対応ありがとうございます。 そもそもmonacaの開発環境を使い始め初心者なのですが、貴殿のプログラムをOnsenUI-HelloWorldテンプレートから動かしてみようと安易に考えましたが、BLE-Central pluginを持ってこれず、https://github.com/don/cordova-plugin-ble-central をインポートして、貴殿のプログラムを動かしてみようとindex.htmlに<script "src=app.js"></script>として、動かしてみようと考えたのですが、app.jsのalert()は表示されるもののapp.js内のons_ready()が、UA-651BLEを動かしても、まったく反応していないようです。

    そもそも、私の貴殿プログラムの実装環境に問題が有りそうなのですが、宜しかったら、monacaでの実装環境を御教授頂けませんでしょうか?

    キャンセル

  • 2018/08/08 13:31

    ヘッダーはこんな感じです。
    <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
    <meta http-equiv="Content-Security-Policy" content="default-src * data: gap: https://ssl.gstatic.com; style-src * 'unsafe-inline'; script-src * 'unsafe-inline' 'unsafe-eval'">
    <script src="lib/angular/angular.min.js"></script>
    <script src="lib/onsenui/js/onsenui.min.js"></script>
    <script src="lib/onsenui/js/angular-onsenui.min.js"></script>
    <script src="lib/fastclick.js"></script>
    <script src="lib/zepto.min.js"></script>
    <script src="components/loader.js"></script>

    <link rel="stylesheet" href="components/loader.css">
    <link rel="stylesheet" href="lib/onsenui/css/onsenui.css">
    <link rel="stylesheet" href="lib/onsenui/css/onsen-css-components.css">
    <link rel="stylesheet" href="css/style.css">

    <script src="js/app.js"></script>

    </head>

    ble-centralは記載されていますようにgithubからダウンロードしてインストールしています。

    キャンセル

  • 2018/08/09 15:46

    解説有難うございます。"fastclick.js"と”zepto.min.js"は、ネットから落としてLIBに入れました。
    monacaもEducationから、Proにプラン変更し、妙なエラー等も出なくなりました。
    ただ、Alertで、6.4.0と表示された後、コンソールも”event:deviceready”と表示されているだけで、UA-651BLEで血圧測定、BLE通信開始になっても、なんの変化もない状況です。
    私が、余りにもmonacaプログラムに疎いのが原因と思いますが、index.htmlに貴殿のプログラムを張り付けて下さったように呼び出せばいいのでしょうか?
    index.htmlに<body></body>部に何か記述が必要なのでしょうか?
    また、monacaプロジェクトを作る時に、Angular JSの"Onsen UI V2 Angular 1 Minimum"で、プロジェクトを作っているのですが、この辺は問題ないのでしょうか?

    お忙しいことと思いますが、monaca駆け出しのレベルの低い御質問とは存じておりますが、宜しくお願い申し上げます。

    キャンセル

  • 2018/08/10 23:09

    きょうも、ほぼ一日、貴殿プログラムの実装挑戦しておりましたが、今日の結論としては、$scope.onScan = function()をindex.htmlなりから、動かさないとダメなのかな?っと思うのですが、その方法が分からずで、その辺を御教授頂けましたら、とても助かります。
    それとも、まったく、的を得ないレベルでしょうか? A&DさんのSDKも見ているのですが、Android Studioで、トライしても、上手く通信できず、貴殿のプログラムを参照させて頂くしか、先に進まず、質問させて頂いております。 宜しくお願いします。

    キャンセル

0

済みません(-_-;)
やった事をそのまま列挙させて頂きます。
monacaのプロジェクトインポートで、「https://github.com/don/cordova-plugin-ble-central」をインポートしました。
貴殿のプログラムapp.jsをwww下にアップロードして、index.htmlに
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<meta http-equiv="Content-Security-Policy" content="default-src * data: gap: content: https://ssl.gstatic.com; style-src * 'unsafe-inline'; script-src * 'unsafe-inline' 'unsafe-eval'">
<script src="components/loader.js"></script>
<link rel="stylesheet" href="components/loader.css">
<link rel="stylesheet" href="css/style.css">
<script src="app.js"></script>
―――――
として、ビルドエラーが出たので、js/cssコンポーネントにOsen UI(Monaca Version)2.9.1を追加したという状態です。

ところどころ、貴殿のプログラムにconsole.logを入れてみても、BLEイベントを拾えていないようです。

そもそも、貴殿のプログラムを展開する私の環境に問題があるのだと思うのですが、2Weeks悩んでも回答を見いだせずお聞きした次第です。

どうか、御教授、宜しくお願いします。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.75%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Monaca

    940questions

    「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

  • Cordova

    406questions

    Cordovaは様々なデバイスで使うことができるオープンソースなモバイル用開発プラットフォームです。開発者に各デバイスの元のプラットフォームで開発する必要をなくし、HTML・JavaScript・CSSなどの一般的なウェブのテクノロジーを使ってすべてのデバイスで展開することができるモバイルのアプリケーションを生成することを可能にします。

  • Bluetooth

    216questions

    Bluetoothとは短距離の間でデータを交換するための無線通信規格である。固定・モバイル両方のデバイスから、短波の電波送信を行うことで、高いセキュリティをもつパーソナルエリアネットワーク(PAN)を構築する。