手机蓝牙编程简介

实现蓝牙模块与手机进行通讯 之前做过一个Zigbee通信的实验,需要用到蓝牙模块与手机蓝牙模块之间的通信用以接收RSSI,很长时间没有解决就收数据乱码的问题,最后无意间了解到手机蓝牙的baudrate为9600,乱码的问题也就迎刃而解了,为了避免丢失,并给网络上需要的朋友提供帮助,现把这篇帖子码上,不足之处还望批评指出。 通信前必须具备东西: (1)  蓝牙串口模块; (2)  安卓系统并带有蓝牙的手机; (3)  ... 阅读详情

手机蓝牙编程简介

一、什么是蓝牙技术

蓝牙是一种低成本、短距离的无线通信技术。对于那些希望创建个人局域网(PANs )的人们来说,蓝牙技术已经越来越流行了。每个个人局域网都在独立设备的周围被动态地创建,并且为蜂窝 式电话和PDA 等设备提供了自动连接和即时共享数据的能力。为了在Java 平台上开发支持蓝牙技术的软件,JCP 定义了JSR82 标准--Java 蓝牙无线技术APIs(JABWT) 。

当蓝牙设备互相连接时,他们将组成一个微微网(piconet ), 即以一个主设备和最大7 个从设备的形式动态创建网络。蓝牙也支持piconet 网之间的连接:当一个piconet 中的 主设备成为另一个piconet 的从设备时,piconet 与piconet 间将形成桥接。

二、蓝牙协 议栈

蓝牙协议栈允许采用 多种方法,包括 RFCOMM 和 Object Exchange (OBEX ), 在设备之间发送和接收文件。如果想发送和接收流数据(而且想采用传统的串口应用程序,并给它加上蓝牙支持),那么 RFCOMM 更好。反过来,如果想发送对象数据以及关于负载的上下文和元数据,则 OBEX 最好。图 1 显示了协议栈的细节。
图1 蓝牙协议栈 ,如下 :  
蓝牙协议栈

  • 栈的最底层是 HCI ,即主机控制器接口 (Host Controller Interface )。这一层顾名思义就是主机(计算机)和控制器(蓝牙设备)之间的接口。可以看到,其 他所有的层都要经过 HCI 。
  • HCI 上面的一层是L2CAP , 即逻辑链接控制器适配协议(Logical Link Controller Adaptation Protocol )。这一层充当其他所有层的数据多路复用器。
  • 接下来一层是 BNEP ,即蓝牙网络封装 协议(Bluetooth Network Encapsulation Protocol )。使用 BNEP , 可以在蓝牙上运行其他网络协议,例如 IP 、TCP 和UDP 。
  • RFCOMM 称作虚拟串口协议(virtual serial port protocol ) ,因为它允许蓝牙设备模拟串口的功能。
  • OBEX 协议层是在RFCOMM 层 上面实现的,如果想把数据以对象(例如文件)的形式传输,那么OBEX 很有用。
  • SDP 是服务发现协议(Service Discovery Protocol )层,用于在远程蓝牙设备上寻找服务。
  • 最后两层是 AVCTP 和 AVDTP ,用于蓝牙上音频和视频的控制 和 发布 。AVCTP 和 AVDTP 是蓝牙协议中增加的相对较新的层;如果想控制媒体播放器的功能或者想以立体声播放音频流,则要使用它们。

 

三、蓝牙规范用例

初始化-- 所有具备蓝牙功能的应用程序必须先要初始化蓝牙 栈。

服 务器:建立一个服务,然后等待一个客户端来连接。

客 户端:搜索服务,然后尝试与服务器建立连接。

图2 一个蓝牙规范用例图,如下:

 

四、用例中参与活动的图表

图3 蓝牙应用程序活动图,如下:

 

五、JSR-82 API 简介

JSR-82 是用于蓝牙无线技术的官方Java API 。可使用这个API 创建可执行以下功能 的应用程序:

  • 判断和检测自己的蓝牙设备的属性
  • 发现设备通信范围内的蓝牙设备
  • 在远程蓝牙设备上搜索服务
  • 创建可以与远程蓝牙服务器通信的蓝牙客户机应用程序
  • 创建能够为蓝牙客户机的请求提供服务的蓝牙服务器应用程序

JSR-82 包含两个包,即javax.bluetooth 和javax.obex 。

图4 显示了在MIDlet 中一个典型蓝牙功能应用程序中的 一些元素,如下:

1 、本地设备类: 

图5 :LocalDevice 类

本地设备提供了方法来返回关于本地设备的信息,并且能够进入 Bluetooth manager :
    .getBluetoothAddress() 返回蓝牙设备地址。
    .getDeviceClass() 返回设备类。
    .getFriendlyName() 返回设备友好名称,蓝牙设备名通常是用户在蓝牙控制中心为其设置的我们将会在后面看到。
    .getRecord() 返回一个指定蓝牙连接的服务记录。
    .updateRecord() 方法用来为指定的ServiceRecord 更 新SDDB 服务记录。
    .getDiscoverable() 返回设备的可发现状态。
    .setDiscoverable() 设置设备的可发现状态。
    .getDiscoveryAgent() 返回一个参考给发现代理。
    .getProperty() 返回一个设备的蓝牙属性
通过 调用getProperty() 方法你可以得到的属性包括:
    .bluetooth.api.version ,蓝牙API 版本
    .bluetooth.sd.attr.retrievable.max ,一次性能够被获得的服务记录属性的最大值
    .bluetooth.connected.devices.max ,支持的连接设备的最大值
    .bluetooth.sd.trans.max ,同时发生的服务发现处理的最大值
    .bluetooth.l2cap.receiveMTU.max ,L2CAP 最 大发射单元
你可以在Javadoc 文档中或是规范中学习更多的有 关蓝牙属性的内容。

 

2 、远端设备类:

 
图6 :RemoteDevice 类

远端设备(RemoteDevice ) 提供的方法中,有些很类似于本地设备 (LocalDevice )里提供的方法:
    .getBluetoothAddress() 返回蓝牙地址。
    .getFriendlyName() 返回蓝牙设备名。
    .getRemoteDevice() 返回相应的被指定蓝牙连接的远端设备。
    .authenticate() 尝试识别验证远端设备。
    .authorize() 为指定的蓝牙连接去尝试批准远端设备访问本地设备。
    .encrypt() 尝试为指定的蓝牙连接开启或关闭加密。
    .isAuthenticated() 测试是否远端设备可以被验证。
    .isAuthorized() 测试是否远端设备已经被蓝牙控制中心授权访问本地设备以进行蓝牙连接。
    .isEncrypted() 测试是否本地设备和远端设备之间的通信被加密。
    .isTrustedDevice() 测试是否远端设备被蓝牙控制中心指定为可信任的。


3 、DeviceClass 类 
    一个DeviceClass 对象代表一个设备的设备类(CoD ), 例如一个打印机或者一部电话。CoD 包括一个主类,一个辅的类,和服务类型或服务类。 DeviceClass 提供了如下方法:
    .getMajorDeviceClass() 方法获取设备的主类。
    .getMinorDeviceClass() 方法获取设备的辅类。
    .getServiceClasses() 获取设备的服务类。
当 一个设备被发现,同时他的类也会被发现;当发现代理调用deviceDiscovered() 时, 其中一个参数就是DeviceClass 。你可以通过它 的getDeviceClass() 方 法找到本地设备的CoD 。

 

4 、DiscoveryAgent 类是个有帮助的类,它让您可以发现附近的远程蓝牙设备,并为 区域内的每个蓝牙设备返回一个 RemoteDevice 。也可以使用javax.bluetooth.DiscoveryAgent 在已经发现的远程设备上搜索服务。如果想在发生发现事件的时候得到通知,则需要实现 DiscoveryListener 接口的方 法。见图7DiscoveryAgent 类和DiscoveryListener 接 口,如下:

 

5 、设备发现API 
你使用DiscoveryAgent 类的" 设备发现" 方法来开始和取消设备发现:
.retrieveDevices() 重新获得已经发现或者附近的已知设备
.startInquiry() 启动发现附近设备,也叫inquiry
.cancelInquiry() 取消当前进行的任何请求
蓝牙发现代理在请求阶段的不同时候会分别调用DiscoveryListener (发 现监听器)不同的回调方法:
.deviceDiscovered() 指出是否有设备被发现。
.inquiryCompleted() 指出是否请求已经成功、触发一个错误或已被取消。
在图8 中的状态图表阐明了设备发现的状态改变结束于相应的回调方法的返回。

图 8: 设备发现状态表


设备发现以调用startInquiry() 函数开始。在请求进行时,蓝牙发现代理会在适当的时候调用回调方法DeviceDiscovered() 和 inquiryCompleted() 。

6 、服务发现API 
你可以使用发现代理的服务发现方法来开始或取消服务发现:
. selectService() 启动服务发现搜索。(根据API 手册应为尝试定 位一个服务)
. searchServices() 启动服务发现搜索。
. cancelServiceSearch() 取消在正在进行中的任何的服务发现搜索操作。蓝牙发现代理在服务发现阶段的不同时候会分别 调用 DiscoveryListener 的服务发现回调方法:
. servicesDiscovered() 表示是否服务已被发现。
. serviceSearchCompleted() 表示服务发现是否已经完成。
图9 阐明了服务发现的状态改变结束于DiscoveryListener 的 回调方法的返回。

图 9: 服务发现状态图表


服务发现开始于对searchServices() 的调用。当服务搜索进行时,蓝牙发现代理会在适当的时候回调servicesDiscovered() 和 serviceSearchCompleted() 方法。
除了DiscoveryAgent 和DiscoveryListener 了, 你在服务发现过程中还要使用到的类有UUID ,ServiceRecord 以 及DataElement 等。

 

7 、UUID 类 
    在蓝牙中,每个服务和服 务属性都唯一地由" 全球唯一标识符" (UUID )来校验。正如它的名字所暗示的,每一个这样的标识符都要在时空上保证唯一。UUID 类可表现为短整形(16 或32 位)和长整形(128 位)UUID 。他提供了分别利用String 和16 位或32 位数值来创建类的构造函数,提供了一个可以 比较两个UUID (如果两个都是128 位) 的方法,还有一个可以转换一个UUID 为一个字符串的方法。UUID 实 例是不可改变的(immutable ),只有被UUID 标 示的服务可以被发现。
    在Linux 下你用一个命令uuidgen -t 可以生成一个UUID 值;在Windows 下 则执行命令uuidgen 。UUID 看起来 就像如下的这个形式:2d266186-01fb-47c2-8d9f-10b8ec891363 。 当使用生成的UUID 去创建一个 UUID 对 象,你可以去掉连字符。

8 、SDDB 和ServiceRecord 接口 
    在服务发现的中心是服务发现数据库(SDDB) 和服务发现协议(SDP )。SDDB 由蓝牙实现负责维护的数据库。它包含了服务记录(service records ),后者代表了对客户端有效的服务。SDP 对于基于JABWT (Java 蓝 牙无线技术APIs )应用程序来说是透明的;可以这么说,SDP 是用于服务发现的。为重新获取服务纪录,一个本地设备SDP 客 户端会向一个远端设备上SDP 服务器发出请求。

 
                      图 10: SDDB

每一笔服务记录都会由一个ServiceRecord 的 实例来表现。这个记录包含了描述服务细节的属性。这个类提供了几种有用的方法:
    .getAttributeIDs() 和 getAttributeValue() 方法返回服务记录的属性。
    .getConnectionURL() 方法获取链接的URL 地址给服务器 主机来收集服务记录。
    .getHostDevice() 方法获取提供服务的远端设备。
    .populateRecord() 和 setAttributeValue() 方法用来设置设备记录的属性。
    .setDeviceServiceClasses() 方法设置服务的类。
图11 显示了蓝牙本地设备和远端设备,以及SDDB 还 有服务记录之间的关系:

 
       图 11: 使 用远端设备,SDDB 和服务记录进行服务发现

    为使服务端可以被客户端来使用,服务应用程序要通过如下方法建立一个 服务记录,首先要创建一个连接通知器(connection notifier ),然后由调用连接 通知器的acceptAndWait() 方法来向SDDB 中 插入记录。服务端程序能够在适当的时候获得记录和更新。客户端应用程序向远端SDDB 请求可以使用 的服务,会发现服务记录。

 

六、如何创建一个蓝牙服务端

具 体代码步骤:

1、 得到本地设备。

try {

       this . localDevice = LocalDevice.getLocalDevice ();

       this . localDevice .setDiscoverable(DiscoveryAgent. GIAC );

    } catch (BluetoothStateException ex) {

       ex.printStackTrace();

    }

2、 生成客户端连接通告。

try {

   String url = "btspp://localhost:F0E0D0C0B0A000908070605040302010;name=BTServer;authorize=false";

       notifier = (StreamConnectionNotifier) Connector.open ( url );

    } catch (IOException ex1) {

       ex1.printStackTrace();

    }

3、 获得服务记录。

serviceRecord = localDevice.getRecord(notifier);

4、 从通告获得远端蓝牙设备的连接。

streamConnection = notifier.acceptAndOpen();

    dataOutputStream = streamConnection.openDataOutputStream();

    dataInputStream = streamConnection.openDataInputStream();

然 后下面就是等待客户端来连接了。

 

七、如何创建一个蓝牙客户端

1 、搜索本地设备

try {

      localDevice = LocalDevice.getLocalDevice ();

      // 获得发 现代理

      discoverAgent = localDevice .getDiscoveryAgent();

      discoverAgent .startInquiry(DiscoveryAgent. GIAC , this );

    }

    catch (BluetoothStateException ex){

      ex.printStackTrace();

}

 

  // 设备发现过程中的回调(用来查找每一个可用的设备)

  public void deviceDiscovered (RemoteDevice remoteDevice,DeviceClass deviceClass){

    if ( device .indexOf(remoteDevice) == -1){

      device .addElement(remoteDevice);

    }

}

    // 设备发 现完成回调(用来标识设备查找是否完成)

  public void inquiryCompleted( int _int){

    synchronized ( this ){

      notify();

    }

  }

2 、 搜索远端设备提供的服务

uuid = new UUID[2];

    uuid [0] = new UUID(0x1101);

    uuid [1] = new UUID( "F0E0D0C0B0A000908070605040302010" , false );

    for ( int i = 0; i< device .size(); i++){ // 取出已经搜到的远端设备

      remoteDevice = (RemoteDevice) device .elementAt(i);

      try { // 搜索该设备上的服务

        discoverAgent .searchServices( null , uuid , remoteDevice , this );

      } catch (BluetoothStateException ex){

          ex.printStackTrace();

      }

}

 

  // 服务发现回调(用来发现远端设备上的可用服务)

  public void servicesDiscovered ( int _int, ServiceRecord[] serviceRecordArray){

    for ( int i = 0; i < serviceRecordArray. length ; i++){

      service .addElement(serviceRecordArray[i]);

      serviceRecord = serviceRecordArray[i];

    }

}

 

  // 服务发现回调(用来标识服务搜索是否完成)

  public void serviceSearchCompleted( int _int, int _int1){

    synchronized ( this ){

      notify();

    }

  }

 

3 、与远端设备建立连接

String url = serviceRecord .getConnectionURL(ServiceRecord. NOAUTHENTICATE_NOENCRYPT , false );

    try {

      streamConnection = (StreamConnection)Connector.open ( url );

      dataOutputStream = streamConnection .openDataOutputStream();

      dataInputStream = streamConnection .openDataInputStream();

    } catch (IOException ex1) {

        ex1.printStackTrace();

}

经过以上步骤,服务器端和客户端就建立起了连接,相互之间就可以互相发送数据了

蓝牙模块与手机通信 1、通信前必须具备东西: (1)  蓝牙串口模块; (2)  安卓系统并带有蓝牙的手机; (3)  串口调试软件; (4)  蓝牙测试软件;   配置蓝牙串口模块: 这里把蓝牙串口模块配置成从机模式,具体设置过程如下: (1)  让蓝牙串口模块进入命令设置状态,具体操作是:按着模块上唯一的按键不放,用USB接口给模块上电,这时正确的情景是模块上的LE 阅读详情

相关推荐

手机,电脑的蓝牙传送文件

本文介绍蓝牙传送文件,手机之间,电脑之间,手机与电脑之间。 现在一般手机和笔记本电脑都带有蓝牙功能,但其功能很多人都不曾使用,我就是这样。蓝牙传送不需要网络,要求低,只要你会使用。我一直想使用这个功能,可直到前几天才学会使用。既然学会了,就介绍给大家,也给我做个笔记,否则过些天又不知道使用了。 一,蓝牙手机 首先要打开手机的蓝牙功能,平常大家不用蓝牙的时候一般处于关闭状态,需要的时候才开启,...

曾立文的博客 1万+

Java蓝牙电话_java蓝牙通信

import java.io.*;import java.util.*;import javax.bluetooth.*;import javax.microedition.lcdui.*;import javax.microedition.midlet.MIDlet;import javax.microedition.io.*;import javax.microedition.midlet.M...

weixin_39985279的博客 279

手机蓝牙控制单片机技术详解及应用实践

蓝牙技术,作为一种无线通信技术,最初由瑞典的爱立信公司于1994年提出。当时的目标是替换掉设备间的有线连接,尤其是个人电脑与各种辅助设备之间,比如打印机、鼠标和键盘。这项技术以10世纪丹麦国王哈拉尔蓝牙的名字命名,象征着不同设备间通过蓝牙技术实现信息互通的愿景。随着时间的推移,蓝牙技术经历了从1.0版本到目前广泛使用的蓝牙5.0版本的发展。这一过程中,蓝牙技术的通信距离、传输速度、功耗和安全性等方面都有了显著的提升。

weixin_42551310的博客 1611

Android使用蓝牙与PC端进行通信

目前Android只支持BluetoothSocket连接,而要对PC进行通信,直接使用BluetoothSocket是无法通信的,因为PC端使用java开发没有BluetoohSocket,所以PC端开发的时候必须采用J2ME的jar包进行开发 PC端作为服务端,Android作为客户端,目前只 能做到这一种方法连接,并且要有相同的UUID进行连接 开发代码:PC端(服务端核心代码)    

5243

Android手机控制小车的蓝牙通信实践

蓝牙技术从最初发布到现在,已经历了多次版本迭代,从1.0到目前广泛应用的5.x版本。1.0版本的蓝牙技术存在很多缺陷,例如易受干扰、配对困难等问题。随着技术的演进,蓝牙2.x版本引入了增强数据速率(EDR)技术,大幅提升了数据传输速率。在4.x版本中,蓝牙引入了低能耗技术(Bluetooth Low Energy, BLE),大大降低了功耗,使其更适用于电池供电的移动设备和可穿戴设备。最近的蓝牙5.x版本更是显著增加了通信距离和传输速度,使其应用范围进一步扩大。

weixin_42502089的博客 1124

蓝牙技术Java API与规范(JSR82)

蓝牙技术Java API与规范(JSR82),文件包含Java doc ,源码以及规范文档。你可以从motorola网站下载TCK和RI

蓝牙StartInquiry返回不了周围设备地址

第一个程序可以获得周围设备地址,但第二种程序获取不了,不知道什么原因,希望哪位给解答下,小弟不胜感激,我实在没辙了,上帝。。。第二个程序startinquiry一启动后就输出INQUIRY_ERROR,百思不得其解,另外第一个程序为什么要加synchronized,不加就获取不了地址 第一个程序如下 import java.io.IOException; import java.util.V

351

告别手动维护!教你用SAP BAPI批量更新生产订单BOM组件(CO02工单)

本文详细介绍了如何利用SAP BAPI实现生产订单BOM组件的批量更新,解决传统手工操作(如CO02工单)效率低下的问题。通过核心函数解析和批量处理框架设计,帮助用户大幅提升工作效率,降低错误率,适用于物料主数据变更、季节性配方调整等场景。

weixin_30844577的博客 558

检测支持蓝牙功能(JSR 82)

本例讲述如何检测支持蓝牙的移动电话,同时还介绍如何搜索蓝牙手机上提供的服务。可以从这里下载代码。SonyEricsson Java 平台5版本以上都支持了蓝牙功能,包括K750, K600, W800, Z520 and W810等。想要检测手机是否支持蓝牙功能可以使用下面的代码:try{    Class.forName("javax.bluetooth.LocalDevice");}c

Legion.Tao(http://t.sina.com.cn/dastantao) 940

电磁场数值分析作业(西电)共5次【2021】

文章目录作业1作业2作业3作业4作业5 作业1 一个二维正方形(边长a=10mm)的静电场区域,电位边界条件如图所示(单位:V),求区域内的电位分布。要求用超松弛迭代法求解差分方程组进行计算。 clc clear close all hx=11; hy=11; v1=zeros(hy,hx); v1(hy,:)=ones(1,hx)*100; v1(1,:)=ones(1,hx)*50; for i=1:hy v1(i,1)=0; v1(i,hx)=100; end w=2/(1+

薛定谔的壳的博客 5071

HDRP shader 获取阴影(Custom Pass)

Unity:2021.3.0f1 HDRP:12.1.6

LanQ的博客 2097

J2ME蓝牙连接步骤

客户端:      首先:初始化蓝牙      private LocalDevice localDevice; //本地设备实例      String localBTAddress; //本地蓝牙地址      String localBTName; //蓝牙名称      DiscoveryAgent agent; //发现代理      transIDs = new int[d

PigTeacher的专栏 2569

虚拟机器人平台CoppeliaSim(Vrep)的逆运动学教学

相信看这篇博客的人都知道CoppeliaSim是做什么的,因此这里不多赘述。CoppeliaSim从最早的Vrep到现在已经更新了N个版本,从过去Vrep3.x开始使用的我这里小小地吐槽一下这个软件。CoppeliaSim每一个版本都有更新,问题是这些更新有时候不能向前兼容,而且时不时更新地让人不知所措(对于有紧急任务的时候真的很火大啊)。 以本文所展示地逆运动学来说,CoppeliaSim在4.0.0之后又大变,推翻了过往所有的拖动模块链接之类的构建方式,转而采用直接通过代码来实现逆运动学。 简单版逆运动

qq_39243015的博客 6698

[蓝牙]手机蓝牙编程简介

手机蓝牙编程简介 一、什么是蓝牙技术 蓝牙是一种低成本、短距离的无线通信技术。对于那些希望创建个人局域网(PANs )的人们来说,蓝牙技术已经越来越流行了。每个个人局域网都在独立设备的周围被动态地创建,并且为蜂窝 式电话和PDA 等设备提供了自动连接和即时共享数据的能力。为了在Java 平台上开发支持蓝牙技术的软件,JCP 定义了JSR82 标准--Java 蓝牙无线技术APIs(JABWT)

Jeff_NJUT的专栏 2183

Python爬虫教程:如何爬取多平台电商商品信息(价格、评价、库存)

本文介绍了如何编写一个跨平台电商商品爬虫,爬取多个平台的商品信息,包括商品名称、价格、评价等数据。通过Python的爬虫库(如requestsSelenium)和数据处理库(如pandasmatplotlib)的结合,我们可以高效地获取和分析电商平台上的商品信息。

2201_76125261的博客 916

用MSBlock重塑C2f,让你的模型又轻又强(参数量与精度的双重突破)

打开确保模型解析器能识别MSBlock模块。通过将MSBlock集成到YOLOv8的C2f模块中,我们实现了一个“轻量且多尺度感知”的目标检测模型。这个改进不仅在工程上能降低部署成本、提升推理速度,更在科研上提供了“多尺度+动态核”的创新思路——这种思路可以延伸到其他网络(如ResNet、MobileNet)的改进中,帮你在论文中打造独特的研究点。如果你在实现过程中遇到问题,比如代码报错、训练收敛异常,可以先检查模块集成的每一步是否到位,再尝试调整MSBlock的卷积核尺寸、动态权重的计算方式等超参数。

m0_71589036的博客 105

蓝牙Mesh简介

蓝牙Mesh的优势使的其智能设备产品可以覆盖家用、商用方面的照明、电工、传感等多个领域。而蓝牙Mesh技术拓展了蓝牙的通讯关系,打破了以往蓝牙ble设备只能够一对一、一对多通讯的限制,使网络内的蓝牙设备可以实现“多对多”的通讯,这将大大增加蓝牙的通讯距离和应用场景,填补了蓝牙在大规模组网应用领域的空白。当Mesh网络内照明等设备完善后,传感的需求自然会应运而生,门磁,温湿度,PIR等产品会自然的嵌入到蓝牙Mesh网络中,完善网络内的生态,并催生更多的设备之间的联动,使设备和场景更加智能化。

物联网布道师 1万+

零基础学习CANoe Panel(5)——改变变量的值,控件图像也改变,这是怎么回事?

Panel 中控件的图像随着值变化,是怎么回事?

蚂蚁小兵 2144

【QT教程】QT6蓝牙编程 QT蓝牙编程

QT6蓝牙模块概述QT6蓝牙编程QT6蓝牙模块概述QT6是Qt Company发布的最新版本的跨平台C++图形用户界面应用程序框架。QT框架自从开源以来,就深受全球开发者的喜爱,被广泛应用于开发GUI应用程序、嵌入式系统、移动设备等众多场合。QT6在QT5的基础上进行了大量的更新和改进,提供了更好的性能、更多的特性以及更好的跨平台支持。在QT6中,蓝牙模块(QtBluetooth)提供了一系列的API,用于访问和管理蓝牙设备。

QT性能优化QT原理源码QT界面美化 7258

华为昇腾开发——多模型资源管理(C++)

在使用Ascend ACL(Ascend Computing Language)的ACLLite库进行多模型推理时,合理的资源管理至关重要。

如果想成为中心,那么就到中心去吧。 574

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

使用手机软件Bluino Loader通过蓝牙编程、烧录Arduino

一些小伙伴或许因为没有电脑又想学习Arduino而犯愁,但是在这片文章中我将会带领大家来完美解决这个问题,我们将使用手机软件Bluino Loader通过蓝牙编程、烧录Arduino

sevin的博客 7118

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

蓝牙简介及使用

本文围绕蓝牙的概念、原理、应用做了简单介绍。第一部分主要介绍蓝牙这项技术能做什么,适用于什么场景,与WIFI、Zigbee/Lora等无线通讯技术的区别。第二部分对蓝牙的工作原理做了简单介绍,参考了B站UP"爱上半导体"的视频。第三部分介绍如何使用蓝牙模块,参考江协科技的蓝牙模块教程。这里对AT模式和透传模式做了介绍,说明了如何通过AT指令设置蓝牙参数,简单演示了如何用手机上的蓝牙APP与电脑进行通信。

2401_82807263的博客 1091

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

手机蓝牙项目:手机控制蓝牙,蓝牙控制单片机,单片机控制外设

本文介绍了蓝牙模块的AT命令配置方法及STM32串口通信实现。主要内容包括:1.蓝牙模块配置:默认波特率9600(AT模式固定38400),通过AT命令设置名称、从模式、连接方式和密码;2.STM32串口实现:初始化USART1(115200)和USART2(9600),实现数据收发和中断处理;3.系统调试:手机通过蓝牙发送指令,经串口2传输至单片机控制外设,同时通过串口1反馈至电脑端。关键点:AT命令需以\r\n结尾,配置后需重启生效;蓝牙模块需设为从模式(ROLE=0)才能被手机连接。

qq_53284381的博客 1166

Ubuntu下如何用蓝牙连接手机和蓝牙鼠标

转自:http://edu.21cn.com/linux/g_188_502460-1.htm     Ubuntu下本本硬件基本都能支持了,除蓝牙等几样不外。同学来传文件都只能进XP。今天下午没课,决定把蓝牙功能搞定。经过一番Google后终于把蓝牙“请出山”了。   实现了电脑和蓝牙手机互传的功能(感谢TX兄和另外一位同学提供蓝牙手机)。遗憾的是目前只能手机来连接电脑,而未发现电脑主动连

挽风阁的专栏 6566

手机用蓝牙键盘好使吗_手机蓝牙键盘有什么用?什么样的人会需要手机键盘?...

我来尝试回答一下这个问题;现在大家工作节奏都很紧张,所以很多朋友想要在家中沙发上看电视时,或者在高铁上出差旅途中见缝插针的进行办公,也就是进行一些文字处理,但是笔记本块头比较大,不方便,手机上面输入文字速度有限,体验不好,无法实现盲打,所以就探索了如下几种替代方案:1、采用黑莓手辅助办公,因为黑莓手机自带实体键盘,但是目前黑莓手机因为操作系统非主流,还有新款的黑莓安卓手机输入法匹配较差,还有键盘偏...

weixin_32123093的博客 2211
上一篇: 蓝牙开发工具
下一篇: 避免2.4GHz ISM频段各种类型无线设备干扰的技术
SingleCode
博客等级 码龄15年 11粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值