我想出了如何解决我的问题,我的蓝牙连接知识现在有点大。如果有人有问题,我提供我的解决方案。代码示例代表使用32feet蓝牙库的蓝牙控制器的C#实现。

扫描

这意味着检测到范围内的设备。我的代码:

// mac is mac address of local bluetooth device

BluetoothEndPoint localEndpoint = new BluetoothEndPoint(mac, BluetoothService.SerialPort);

// client is used to manage connections

BluetoothClient localClient = new BluetoothClient(localEndpoint);

// component is used to manage device discovery

BluetoothComponent localComponent = new BluetoothComponent(localClient);

// async methods, can be done synchronously too

localComponent.DiscoverDevicesAsync(255, true, true, true, true, null);

localComponent.DiscoverDevicesProgress += new EventHandler(component_DiscoverDevicesProgress);

localComponent.DiscoverDevicesComplete += new EventHandler(component_DiscoverDevicesComplete);

private void component_DiscoverDevicesProgress(object sender, DiscoverDevicesEventArgs e)

{

// log and save all found devices

for (int i = 0; i < e.Devices.Length; i++)

{

if (e.Devices[i].Remembered)

{

Print(e.Devices[i].DeviceName + " (" + e.Devices[i].DeviceAddress + "): Device is known");

}

else

{

Print(e.Devices[i].DeviceName + " (" + e.Devices[i].DeviceAddress + "): Device is unknown");

}

this.deviceList.Add(e.Devices[i]);

}

}

private void component_DiscoverDevicesComplete(object sender, DiscoverDevicesEventArgs e)

{

// log some stuff

}

配对

这意味着设备与本地蓝牙设备耦合。这需要通过输入双方的代码进行一次。可以通过代码完成,以便用户甚至不会注意到设备被添加。我的代码为此目的:

// get a list of all paired devices

BluetoothDeviceInfo[] paired = localClient.DiscoverDevices(255, false, true, false, false);

// check every discovered device if it is already paired

foreach (BluetoothDeviceInfo device in this.deviceList)

{

bool isPaired = false;

for (int i = 0; i < paired.Length; i++)

{

if (device.Equals(paired[i]))

{

isPaired = true;

break;

}

}

// if the device is not paired, pair it!

if (!isPaired)

{

// replace DEVICE_PIN here, synchronous method, but fast

isPaired = BluetoothSecurity.PairRequest(device.DeviceAddress, DEVICE_PIN);

if (isPaired)

{

// now it is paired

}

else

{

// pairing failed

}

}

}

这意味着建立连接和数据交换。再一次代码:

// check if device is paired

if (device.Authenticated)

{

// set pin of device to connect with

localClient.SetPin(DEVICE_PIN);

// async connection method

localClient.BeginConnect(device.DeviceAddress, BluetoothService.SerialPort, new AsyncCallback(Connect), device);

}

// callback

private void Connect(IAsyncResult result)

{

if (result.IsCompleted)

{

// client is connected now :)

}

}

如果你保持订单扫描,对,连接,一切都应该正常。要发送或接收数据,请使用BluetoothClient的GetStream()方法。它提供可以被操纵的网络流。

接收连接

如果您希望其他设备与设备连接,则需要收听传入的连接请求。这只有在设备已经配对之前才有效。我的代码:

BluetoothListener l = new BluetoothListener(LOCAL_MAC, BluetoothService.SerialPort);

l.Start(10);

l.BeginAcceptBluetoothClient(new AsyncCallback(AcceptConnection), l);

void AcceptConnection(IAsyncResult result){

if (result.IsCompleted){

BluetoothClient remoteDevice = ((BluetoothListener)result.AsyncState).EndAcceptBluetoothClient(result);

}

}

用有效的蓝牙地址替换LOCAL_MAC(例如使用BluetoothAddress.Parse();)。连接设备后,他们可以通过底层流来交换消息。如果连接不起作用,可能会出现身份验证问题,请尝试在侦听器中设置本地设备引脚(l.SetPin(LOCAL_MAC,MY_PASSWORD);

c#读蓝牙数据_c# – 将蓝牙设备连接到具有32feet .NET蓝牙库的计算机相关推荐

  1. c#读蓝牙数据_c#蓝牙通信接收数据

    带你读<从实践中学习TCP/IP协议>之一:网络概述 信息安全技术大讲堂点击查看第二章点击查看第三章从实践中学习TCP/IP协议 大学霸IT达人 编著第1章 网 络 概 述 计算机网络是通 ...

  2. c#读蓝牙数据_C#读取BWT901CL蓝牙传感器的数据

    1 简述 老师有个人体姿态的项目,让我做下那个传感器这部分的数据采集和展示.产品是用的BWT901CL,给大家看下模块 想做一个人体姿态的实验,老师要求不能用商家的软件,只能自己根据协议去协议一个简单 ...

  3. android 蓝牙数据分包_无线组网技术谁能问鼎云巅-蓝牙Mesh, ZIGBEE, THREAD

    ​本文测试数据主要基于SILABS的应用文档"AN1142 - 网状网络性能对比". 前言: 蓝牙Mesh在阿里的大力推广下,2018/2019出货巨大,直接跳至千万级量:Zigb ...

  4. uni-app蓝牙设备连接以及设备的传输,CRC16,ios蓝牙和安卓蓝牙获取数据不一致处理方案

    前言: 因为需要开发与蓝牙设备控制相关,但是这不是常用的蓝牙打印,并且是由原生安卓已经做好的,但是需要移植到多平台(小程序 等)都可以使用所以就要移植成 uni-app ,所以这个是按照uni-app ...

  5. 崔岩的笔记——使用QT在手机端读取传感器蓝牙数据——以BWT901CL传感器为例

    因为实验需要,我要在手机端读取BWT901CL传感器的蓝牙数据,QT中有封装好的用于蓝牙连接以及数据读取的类,因为代码不是我自己写的,因此我就不放完整的代码在上面,但我会尽可能的写的详细一些. QT在 ...

  6. 安卓手机与蓝牙模块联合调试(五)-- 编写自己的蓝牙控制界面控制单片

    安卓手机与蓝牙模块联合调试(五)-- 编写自己的蓝牙控制界面控制单片机(上篇,Android 代码实现) 2018年09月18日 00:10:43 涛声依旧Cjt 阅读数:252更多 所属专栏: 安卓 ...

  7. 从空中截获BLE数据包看蓝牙5协议流程【第四部分:Ellisys蓝牙5连接分析】

    ---------------------------------------------------------------------------------------------------- ...

  8. 此蓝牙设备或计算机无法处理该类型文件,蓝牙允许设备进行连接用不了_win10蓝牙允许设备连接灰色怎么解决...

    2020-11-12 15:20:52 浏览量:4578 在如今的智能设备中像手机.电脑等设备中都集成了蓝牙功能,我们经常会使用到这一功能,不过近日有用户在使用时,有一疑问,那就是手机可以连接多个蓝牙 ...

  9. android蓝牙在有效范围内自动连接,android – 如何在范围内找到可用的蓝牙设备?...

    这就是我在Activity中搜索蓝牙设备并在ListView中显示其名称和mac地址的方法.除了在ListView中显示设备外,您几乎可以使用发现的BluetoothDevice对象执行任何操作. F ...

  10. 蓝牙 - 如何在Windows下抓取蓝牙数据

    首先,要在Windows上安装一个工具:Bluetooth Virtual Sniffer (btvs.exe). Microsoft Bluetooth Test Platform - BTVS - ...

最新文章

  1. eclipse adt如何切换到设计界面_APP界面设计模板|引导页该如何设计?
  2. linux清屏命令clear和reset
  3. ffmpeg4 读取图片编码
  4. Python可变序列中的一些坑
  5. RabbitMQ学习(七)_RabbitMQ Consumer获取消息的两种方式(poll,subscribe)解析
  6. 把nc v6的源码看懂
  7. oracle的一些基本操作,Oracle中的一些基本操作
  8. 只在当前页面生效的css样式,修改页面中的一个样式 仅在当前页面生效
  9. WM有约II(一):你在干嘛?
  10. 进入已经打开的pyrebox_PyREBox-可用Python编写脚本的逆向工程沙盒
  11. Mysql 基础操作:DDL、DML、CRUD 与 常用命令
  12. STM32CubeIDE 下载及安装教程
  13. NDS程序开发可行性分析报告
  14. 接口测试用例生成工具介绍及应用
  15. 谷歌浏览器突然不能翻译了怎么解决?
  16. 无法登录苹果开发者_如何申请苹果开发者帐号?有哪些注意事项?
  17. java 回车判断_java 判断输入回车符
  18. 硬盘修复真经 误区、缺陷、参数与低格
  19. 深度学习简介--PPT
  20. 你知道如何修改单选框、复选框、下拉框的默认样式吗

热门文章

  1. zipException error in opening zip file
  2. android编辑视频,android 视频剪辑(亲测可用)
  3. 【英语】December
  4. 《代码大全》读书笔记之一
  5. Detecting Spacecraft Anomalies Using LSTMs and Nonparametric Dynamic Thresholding
  6. 维和医疗分队患者信息管理系统的开发与研究
  7. 【问题记录与解决】jupyter notebook 无法重命名,无法运行测试代码 || jupyter notebook 中常用的两个快捷键。
  8. php 改变键值,php数组中子数组如何修改键值
  9. 逻辑上的“谬误”真的是我们应该所认为的错误吗?
  10. 《2021年IT行业项目管理调查报告》发布