コード例 #1
0
    //デバイスから睡眠データを取得する
    IEnumerator GetSleepData(int dataCount, Action <List <string> > onGetCSVPathList, Action <List <string> > onGetCSVNameList)
    {
        //スリープしないように設定
        Screen.sleepTimeout = SleepTimeout.NeverSleep;
        //データが存在すれば以下の処理を実行
        Debug.Log("データ取得コマンド");
        CsvHeaderSet(); //GET前に必ず実行する

        //データ取得開始
        LoadingDialog.Show("本体から睡眠データを取得しています。\n" + 0 + "/" + dataCount + "件");
        bool          isSuccess    = false;
        bool          isFailed     = false;
        List <string> filePathList = new List <string>(); //CSVの添付パスリスト
        List <string> fileNameList = new List <string>(); //CSVのファイル名リスト

        BluetoothManager.Instance.SendCommandId(
            3,
            (string data) =>
        {
            //エラー時
            Debug.Log("GetData:failed:" + data);
            isFailed = true;
        },
            (bool success) =>
        {
            Debug.Log("GetData:commandWrite:" + success);
            if (!success)
            {
                isFailed = true;
            }
        },
            (string data) =>
        {
            Debug.Log("GetData:commandResponse:" + data);
            var j        = Json.Deserialize(data) as Dictionary <string, object>;
            bool success = Convert.ToBoolean(j["KEY2"]);
            if (!success)
            {
                isFailed = true;
            }
        },
            (string data) =>
        {
            //データ取得情報
            var json             = Json.Deserialize(data) as Dictionary <string, object>;
            int currentDataCount = Convert.ToInt32(json["KEY1"]);       //現在の取得カウント(例:1件取得完了したら1で返される)
            bool isExistNextData = Convert.ToBoolean(json["KEY2"]);     //TRUEなら次のデータがある
            bool isEndData       = Convert.ToBoolean(json["KEY3"]);     //TRUEなら次のデータはな(Unity側でアプリ処理を行ってから、5秒以内にデータ取得完了応答を返す)
            string csvFilePath   = (string)json["KEY4"];                //CSVのパスの添付パス。dataフォルダ以下のパスが返される(例:/1122334455:66/yyyyMMdd/tmp01.csv)
            csvFilePath          = csvFilePath.Substring(1);            //先頭のスラッシュを取り除く
            string csvFileName   = (string)json["KEY5"];                //CSVのファイル名。最終的にUnity側でDB登録時にリネームしてもらうファイル名(例:20180624182431.csv)
            filePathList.Add(csvFilePath);
            fileNameList.Add(csvFileName);
            LoadingDialog.ChangeMessage("本体から睡眠データを取得しています。\n" + currentDataCount + "/" + dataCount + "件");
            if (isEndData)
            {
                //最後のデータを取得完了すれば
                isSuccess = true;
            }
        });
        yield return(new WaitUntil(() =>
        {
            return isSuccess || isFailed;
        }));

        //スリープ設置解除
        Screen.sleepTimeout = SleepTimeout.SystemSetting;
        LoadingDialog.Dismiss();
        onGetCSVPathList(filePathList.Count > 0 ? filePathList : null);
        onGetCSVNameList(fileNameList.Count > 0 ? fileNameList : null);
        Debug.Log("Return Get Data");
    }