首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从TI CC2540蓝牙低能耗套件接收数据

从TI CC2540蓝牙低能耗套件接收数据
EN

Stack Overflow用户
提问于 2013-08-17 03:57:30
回答 1查看 797关注 0票数 0

我有一个CC2540 BLE套件,我想在我的智能手机应用程序中查看该套件的电池电量。我已经编写了代码,它从工具包中获取电池电量。在这种情况下,电池电量称为BodySensor:

首先,我将介绍套件的电池维修部件的特征值。因此,我将Service和特征UUID用于电池服务:

代码语言:javascript
复制
public void getBodySensorLoc(BluetoothDevice device) 
{
    Log.i(TAG, "getBodySensorLoc");
    BluetoothGattService mHRP = mBluetoothGatt.getService(device, HRP_SERVICE);
    if (mHRP == null) 
    {
        Log.e(TAG, "getBodySensorLoc: mHRP = null");

        return;
    }
    BluetoothGattCharacteristic mBSLcharac = mHRP.getCharacteristic(BODY_SENSOR_LOCATION);
    if (mBSLcharac == null) {
        Log.e(TAG, "getBodySensorLoc: mBSLcharac = null");
        return;
    }
    mBluetoothGatt.readCharacteristic(mBSLcharac);
}

我的目的是在按下应用程序中的按钮时读取电池电量。所以我在我的Activity类中实现了这个按钮:

代码语言:javascript
复制
    ((Button) findViewById(R.id.btn_BSL)).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) 
        {
            mService.getBodySensorLoc(mDevice);
        }
    });

此套件将自动将电池电量发送回智能手机。因此,我将在代码中将重点放在BluetoothGattCallback部件的onCharacteristicRead方法上:

代码语言:javascript
复制
    private BluetoothGattCallback mGattCallbacks = new BluetoothGattCallback() 
{

    public void onCharacteristicRead(BluetoothGattCharacteristic charac, int status) 
    {
        UUID charUuid = charac.getUuid();
        Bundle mBundle = new Bundle();
        Message msg = Message.obtain(mActivityHandler, HRP_VALUE_MSG);
        Log.i(TAG, "onCharacteristicRead");
        if (charUuid.equals(BODY_SENSOR_LOCATION))
            mBundle.putByteArray(BSL_VALUE, charac.getValue());
        msg.setData(mBundle);
        msg.sendToTarget();
    }
};

我希望应用程序在文本视图中显示接收到的电池电量。该套件将电池电量作为整数发送,因此如果电池电量为70%,则发送"70“。该代码在Activity类中包含一个处理程序:

代码语言:javascript
复制
private Handler mHandler = new Handler() 
{
    @Override
    public void handleMessage(Message msg) 
    {
        switch (msg.what) 
        {
        case HRPService.HRP_VALUE_MSG:
            Log.d(TAG, "mHandler.HRP_VALUE_MSG");
            Bundle data1 = msg.getData();
            final byte[] bslval = data1.getByteArray(HRPService.BSL_VALUE);
            runOnUiThread(new Runnable() 
            {
                public void run() 
                {
                    if (bslval != null) 
                    {
                        try {
                            Log.i(TAG, "BYTE BSL VAL =" + bslval[0]);
                            TextView bsltv = (TextView) findViewById(R.id.BodySensorLocation);
                            bsltv.setText("\t" + mContext.getString(R.string.BodySensorLocation)
                                    + getBodySensorLocation(bslval[0]));
                        } catch (Exception e) 
                        {
                            Log.e(TAG, e.toString());

                        }

                    }
                }
            });

        default:
            super.handleMessage(msg);
        }
    }
};

问题是,当我将智能手机与工具包连接后,当我在应用程序中按下这个按钮时,文本视图不会显示任何内容。谁能告诉我,问题出在哪里?

提前感谢

EN

回答 1

Stack Overflow用户

发布于 2013-08-25 12:54:43

不确定你到底有什么工具包。不确定它们是否都有电池电量测量硬件。也许这就是原因。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18281190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档