Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何通过蓝牙BLE发送和接收数据?

如何通过蓝牙BLE发送和接收数据?
EN

Stack Overflow用户
提问于 2016-12-07 13:38:08
回答 1查看 5.8K关注 0票数 2

我刚刚开始使用arduino/蓝牙,现在我希望使用它,并通过一个应用程序发送和接收命令。

我目前正在使用一个蓝牙BLE设备,我想连接到iOS和安卓系统,但我有点想知道如何通过蓝牙BLE正确地发送和接收数据(byte[])到设备上。

为了在应用程序和蓝牙/arduino之间发送和接收信息,我使用了ICharacteristic (我认为这是通过BLE发送数据的正确接口),但我不确定该如何连接到我找到的设备。

我会展示我的代码,这样你就能清楚地看到我的意思。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class bluetoothConnection
{
    public IAdapter thisAdapter { get; set; }
    public ICharacteristic thisCharacteristic {get; set;} 
}

我的连接功能,我用它的名字和UUID连接到确切的设备。如果我找到了什么,那么我尝试发送数据的按钮就会被启用和使用。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public async void connect()
{
    await myConnection.thisAdapter.StartScanningForDevicesAsync();

    myConnection.thisAdapter.DeviceDiscovered += async (sender, e) =>
    {
            if (e.Device.Id.ToString().Equals ("00001101 - 0000 - 1000 - 8000 - 00805f9b34fb" && e.Device.Name == "HC-05"))
            {
                await myConnection.thisAdapter.ConnectToDeviceAsync(e.Device);
                sendCommandButton.IsEnabled = true; //so my button is enabled and that function is below
            }
    };
}

所以下面的按钮是启用的,如果我从我的arduino找到我的蓝牙设备,现在我尝试发送信息给我的arduino,但是我如何连接thisCharacteristic到我刚才找到的设备?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
byte[] byteText = Encoding.UTF8.GetBytes("send this textline");

void sendCommandToArduino(object s, EventArgs e)
{
    myConnection.thisCharacteristic.WriteAsync(byteText);
}

我是这样读到的,看看arduino是否向这个应用程序发送了什么:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var info = myConnection.thisCharacteristic.ReadAsync();
var result = info.Result;
string textresult = Encoding.UTF8.GetString(result);

当然,我会把它放在一个data循环中,以便不断地查找数据。

因此,我的问题是:为了通过蓝牙(app和BLE设备)发送数据,我是否使用ICharacteristic(与我使用的当前nuget一起使用),如果是的话,如何将ICharacteristic连接到我找到的设备,以便通过蓝牙BLE发送和接收数据?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-08 08:30:44

如果您还没有这样做,请检查您的Arduino设备文档,看看您需要写入/读取哪个特性。一个特点将是一个特定服务的“孩子”。服务和特性都有UUID,您可以使用UUID来引用它们。

在您的移动应用程序中,当您的BLE设备连接时,您应该启动一个服务发现阶段。当你获得服务后,你可以搜索并获得一个参考你的特点。与…有关的东西:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var service = await connectedDevice.GetServiceAsync(Guid.Parse("<service-uuid-here>"));
var characteristic = await service.GetCharacteristicAsync(Guid.Parse("<characteristic-uuid-here>"));

// ...

characteristic.WriteAsync(message);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41027839

复制
相关文章
蓝牙BLE技术
蓝牙低功耗无线电的调制速率由规范规定为恒定的1Mbps(兆比特每秒)。当然,这是理论上的上限。在实践中,根据所使用设备的限制,您可以期望每秒5- 10kb。就距离而言,BLE专注于非常短的距离通信。可以创建和配置一个BLE设备,该设备可以可靠地传输30米或30米以上的视线范围内的数据,但典型的操作范围可能更接近2到5米。当然,续航里程越高,电池消耗就越多,所以在调整你的设备以适应更高的续航里程时要小心。 蓝牙BLE组成 BLE由三个主要构建模块组成:应用程序、主机和控制器。顾名思义,应用程序块是与蓝牙协议栈交互的用户应用程序。主机覆盖蓝牙协议栈的上层。控制器覆盖下层。主机可以通过添加一个我们称为HCI的东西与BLE模块通信——主机控制器接口。显然,HCI的目的是将控制器与主机接口,而这个接口使控制器与各种主机接口成为可能。在本例中,单片机运行应用程序,与连接设备进行通信,连接设备由主机和控制器组成。为此,我们使用SPI进行通信,但是也可以使用不同的接口。
心跳包
2020/08/31
2.4K0
通过异步方式发送和接收数据(tcp异步收发数据)
服务端 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Net; using System.Net.Sockets; using System.Threading;
liulun
2022/05/09
1.4K0
Android Ble蓝牙App(五)数据操作
  关于低功耗蓝牙的服务、特性、属性、描述符都已经讲清楚了,而下面就是使用这些知识进行数据的读取、写入、通知等操作。
晨曦_LLW
2023/08/15
1.4K2
Android Ble蓝牙App(五)数据操作
Android蓝牙开发—经典蓝牙和BLE(低功耗)蓝牙的区别
最近在做蓝牙开发,刚接触时傻傻的分不清经典蓝牙和低功耗蓝牙的区别,一直用开发低功耗蓝牙的方法去连接经典蓝牙设备,最后当然是一直连接不上了。在此记录下经典蓝牙和低功耗蓝牙的区别和联系。
全栈程序员站长
2022/07/05
4.9K0
Android蓝牙开发—经典蓝牙和BLE(低功耗)蓝牙的区别
Android Ble蓝牙App(三)特性和属性
  在上一篇中我们完成了连接和发现服务两个动作,那么再发现服务之后要做什么呢?发现服务只是让你知道设备有什么服务,可以做什么事情。
晨曦_LLW
2023/08/09
1.4K0
Android Ble蓝牙App(三)特性和属性
蓝牙---BLE GATT介绍
GATT(Generic Attribute Profile),描述了一种使用ATT的服务框架 该框架定义了服务(Server)和服务属性(characteristic)的过程(Procedure)及格式 Procedure定义了characteristic的发现、读、写、通知(Notifing)、指示(Indicating) 及配置characteristic的广播
心跳包
2020/08/31
3.6K0
蓝牙---BLE GATT介绍
BLE低功耗蓝牙与经典蓝牙(持续更新)
BLE设备分单模和双模两种,双模简称BR,商标为Bluetooth Smart Ready,单模简称BLE或者LE,商标为Bluetooth Smart。低功耗蓝牙是不能兼容经典蓝牙的,需要兼容,只能选择双模蓝牙。一个蓝牙主端设备,可同时与7个蓝牙从端设备进行通讯。
木溪bo
2020/03/20
8.8K1
BLE低功耗蓝牙与经典蓝牙(持续更新)
10分钟完成一个最最简单的BLE蓝牙接收数据的DEMO
这两天在研究蓝牙,网上有关蓝牙的内容非常有限,Github上的蓝牙框架也很少很复杂,为此我特地写了一个最最简单的DEMO,实现BLE蓝牙接收数据的问题,
用户3112896
2019/09/26
2.3K0
Android BLE 蓝牙开发,连接蓝牙设备进行通讯
讲解如何通过 UUID 连接蓝牙设备。如果你针对 GATT 服务不太了解。那么这篇应该能够稍微帮助到你。
zinyan.com
2023/07/14
5.6K0
Android BLE 蓝牙开发,连接蓝牙设备进行通讯
python 发送和接收ActiveMQ
ActiveMQ是java开发的消息中间件服务。可以支持多种协议(AMQP,MQTT,OpenWire,Stomp),默认的是OpenWire。而python与ActiveMQ的通信使用的是Stomp协议。而如果你的服务没有开启则需要配置开启。
py3study
2020/01/09
3.7K1
低功耗蓝牙(BLE)攻击分析
蓝牙是一种短距的无线通讯技术,可实现固定设备、移动设备之间的数据交换。可以说蓝牙是当今世界上,最受欢迎和使用最为广泛的无线技术之一。随着物联网的快速发展,蓝牙技术也加速了其发展步伐以适应不断增长的市场和用户需求。蓝牙特别兴趣小组(SIG)正不断努力提高蓝牙的传输速度,以让蓝牙技术更好的融合于各种物联网设备当中。
FB客服
2018/12/11
4.9K0
低功耗蓝牙(BLE)攻击分析
Android Ble蓝牙App(一)扫描
  关于低功耗的蓝牙介绍我已经做过很多了,只不过很多人不是奔着学习的目的去的,拿着源码就去运行,后面又发现连接设备后马上断开,然后不会自己看问题,这个现象就是快餐式的,你不了解里面的知识内容,自然就不知道是怎么回事,重复的问题我回答了好多次了。而我也是觉得写的有问题,本意上来说我是希望读者可以参考来写,能看一看文章内容,而结果绝大多数,看个标题看个运行效果,下载源码就运行,运行有问题就问你,没有什么思考。   针对这个情况,我决定做了系列性的Ble蓝牙App,尽可能的避免在你运行的时候出现bug,所以这是一个低功耗蓝牙工具App,可以让你了解到一些东西。注意是低功耗,不是经典蓝牙,如果你不知道两者之间的区别,建议你先了解一下。本文的效果:
晨曦_LLW
2023/08/02
1.2K0
Android Ble蓝牙App(一)扫描
关于串口数据的发送和接收(调试必备)
对于串口的数据发送和接收,大多是都是利用串口中断来进行的,但是这样对于编程方面有一定要求,并且程序也不太好写,比如说,如果让你随意接收一段数据,然后利用串口将它发送出来,第一个需要考虑的问题就是接收数据的长度,怎么才知道一段数据是否结束?或者说如果串口助手上面没有可以在数据末尾加上结束标志的时候,你如何知道数据的结束?,这必然牵涉到一定的编程技巧。但是,之前在接触C语言的时候,我们就利用过printf和Scanf,那么我们能否利用它们?如果能够利用的话,那么就很方便了。
全栈程序员站长
2022/09/14
5.2K0
关于串口数据的发送和接收(调试必备)
WIFI&蓝牙(ESP32)转CAN总线&串口TTL模块 - 接收和发送CAN数据并打印
杨奉武
2023/10/15
1K0
WIFI&蓝牙(ESP32)转CAN总线&串口TTL模块 - 接收和发送CAN数据并打印
Android Ble蓝牙App(四)UI优化和描述符
  上一篇中了解了特性和属性,同时显示设备蓝牙服务下的特性和属性,本文中就需要来使用这些特性和属性来完成一些功能。
晨曦_LLW
2023/08/15
3530
Android Ble蓝牙App(四)UI优化和描述符
Android低功耗蓝牙BLE开发小结
BLE是蓝牙4.0标准的一部分,旨在解决传统蓝牙连接慢、能耗大的问题,Google在Android 4.3(API 18)中引入了对BLE的支持。BLE连接使用GAP(Generic Access Profile)协议,通信使用GATT(Generic Attribute Profile)协议。GATT又以ATT为基础,所有的LE服务都以ATT作为应用层协议。以下深入地介绍这两个协议。
fdroid
2018/07/17
5.7K0
Android低功耗蓝牙BLE开发小结
Andorid 对接BLE蓝牙设备(连接篇)
笔者前段时间做了一个功能,需要对接一个蓝牙设备,该蓝牙设备使用的就是BLE蓝牙。这里给大家分享一下我的实现。这篇文章主要是实现程序与BLE蓝牙设备的连接,交互和设置、测试工具等请期待下一篇文章。
饮水思源为名
2019/10/16
1.6K0
PHP发送和接收JSON请求
现在微服务中,很多API由于需要传递的参数较多所以要求用包含所有参数的JSON数据作为POST请求的请求体来替代FormData传递参数的方式,在参数量较多时POST JSON要比POST FormData便于开发和测试,今天我们就来看一下在PHP中如何发送和接受JOSN POST,以及在Laravel框架中针对JSON Request提供的访问JSON请求数据的便捷方法。
KevinYan
2019/10/13
8.1K0
点击加载更多

相似问题

通过蓝牙同时发送和接收数据

12

通过蓝牙发送/接收数据

10

iOS BLE蓝牙-发送/接收十六进制数据

30

如何通过蓝牙低能(BLE)链路发送数据?

20

通过android从ble设备发送和接收数据

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文