蓝牙打开-bluedroid中的流程(基于android O代码)

蓝牙打开从app层到协议栈的跨度太大,仅仅看代码很容易迷失方向,先从log看起。

01-18 18:25:31.570 D/BluetoothAdapterService(21885): onCreate()  // adapterservice启动
01-18 18:25:31.570 I/BluetoothVendorJni(21885): classInitNative: succeeds
01-18 18:25:31.570 D/BluetoothAdapterState(21885): make() - Creating AdapterState
01-18 18:25:31.580 I/BluetoothAdapterState(21885): Entering OffState
01-18 18:25:31.580 I/bt_btif (21885): init  然后调用到init方法
01-18 18:25:31.580 D/bt_osi_allocation_tracker(21885): canary initialized
01-18 18:25:31.590 I/bt_osi_thread(21885): run_thread: thread id 21915, thread name stack_manager started

在AdapterService文件里面会先调用classInitNative方法,这个方法的定义在JNI文件中,定义如下:

static void classInitNative(JNIEnv* env, jclass clazz) {
    int err;
    hw_module_t* module;

    jclass jniCallbackClass =
        env->FindClass("com/android/bluetooth/btservice/JniCallbacks");
    sJniCallbacksFie
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是基于STC32G12K128的蓝牙HC-05代码示例: ```c #include <reg52.h> sbit LED = P2^0; // 控制LED的IO口 sbit RXD = P3^0; // HC-05模块的接收引脚 sbit TXD = P3^1; // HC-05模块的发送引脚 void UART_Init() { TMOD = 0x20; // 定时器1工作在方式2,8位自动重装载模式 TH1 = 0xFD; // 波特率9600,定时器1重装载值 TL1 = TH1; // 初始化定时器1初值 TR1 = 1; // 启动定时器1 SCON = 0x50; // 设置串口工作在模式1,允许接收 } void UART_SendByte(unsigned char dat) { SBUF = dat; // 将数据写入发送缓冲区 while (!TI); // 等待发送完成标志置位 TI = 0; // 清除发送完成标志 } unsigned char UART_ReceiveByte() { while (!RI); // 等待接收完成标志置位 RI = 0; // 清除接收完成标志 return SBUF; // 返回接收到的数据 } void main() { unsigned char data; UART_Init(); // 初始化串口 while (1) { data = UART_ReceiveByte(); // 接收串口数据 if (data == '1') { LED = 1; // 点亮LED UART_SendByte('L'); // 发送应答信号 } else if (data == '0') { LED = 0; // 熄灭LED UART_SendByte('H'); // 发送应答信号 } } } ``` 这个代码示例实现了基于STC32G12K128的蓝牙HC-05模块的通信功能。当接收到字符 '1' 时,点亮LED并发送字符 'L' 作为回应;当接收到字符 '0' 时,熄灭LED并发送字符 'H' 作为回应。你可以根据自己的需求进行修改和扩展。请确保正确连接HC-05模块的TXD和RXD引脚到STC32G12K128单片机的对应引脚。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值