c#读蓝牙数据_c# – 将蓝牙设备连接到具有32feet .NET蓝牙库的计算机
我想出了如何解决我的问题,我的蓝牙连接知识现在有点大。如果有人有问题,我提供我的解决方案。代码示例代表使用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蓝牙库的计算机相关推荐
- c#读蓝牙数据_c#蓝牙通信接收数据
带你读<从实践中学习TCP/IP协议>之一:网络概述 信息安全技术大讲堂点击查看第二章点击查看第三章从实践中学习TCP/IP协议 大学霸IT达人 编著第1章 网 络 概 述 计算机网络是通 ...
- c#读蓝牙数据_C#读取BWT901CL蓝牙传感器的数据
1 简述 老师有个人体姿态的项目,让我做下那个传感器这部分的数据采集和展示.产品是用的BWT901CL,给大家看下模块 想做一个人体姿态的实验,老师要求不能用商家的软件,只能自己根据协议去协议一个简单 ...
- android 蓝牙数据分包_无线组网技术谁能问鼎云巅-蓝牙Mesh, ZIGBEE, THREAD
本文测试数据主要基于SILABS的应用文档"AN1142 - 网状网络性能对比". 前言: 蓝牙Mesh在阿里的大力推广下,2018/2019出货巨大,直接跳至千万级量:Zigb ...
- uni-app蓝牙设备连接以及设备的传输,CRC16,ios蓝牙和安卓蓝牙获取数据不一致处理方案
前言: 因为需要开发与蓝牙设备控制相关,但是这不是常用的蓝牙打印,并且是由原生安卓已经做好的,但是需要移植到多平台(小程序 等)都可以使用所以就要移植成 uni-app ,所以这个是按照uni-app ...
- 崔岩的笔记——使用QT在手机端读取传感器蓝牙数据——以BWT901CL传感器为例
因为实验需要,我要在手机端读取BWT901CL传感器的蓝牙数据,QT中有封装好的用于蓝牙连接以及数据读取的类,因为代码不是我自己写的,因此我就不放完整的代码在上面,但我会尽可能的写的详细一些. QT在 ...
- 安卓手机与蓝牙模块联合调试(五)-- 编写自己的蓝牙控制界面控制单片
安卓手机与蓝牙模块联合调试(五)-- 编写自己的蓝牙控制界面控制单片机(上篇,Android 代码实现) 2018年09月18日 00:10:43 涛声依旧Cjt 阅读数:252更多 所属专栏: 安卓 ...
- 从空中截获BLE数据包看蓝牙5协议流程【第四部分:Ellisys蓝牙5连接分析】
---------------------------------------------------------------------------------------------------- ...
- 此蓝牙设备或计算机无法处理该类型文件,蓝牙允许设备进行连接用不了_win10蓝牙允许设备连接灰色怎么解决...
2020-11-12 15:20:52 浏览量:4578 在如今的智能设备中像手机.电脑等设备中都集成了蓝牙功能,我们经常会使用到这一功能,不过近日有用户在使用时,有一疑问,那就是手机可以连接多个蓝牙 ...
- android蓝牙在有效范围内自动连接,android – 如何在范围内找到可用的蓝牙设备?...
这就是我在Activity中搜索蓝牙设备并在ListView中显示其名称和mac地址的方法.除了在ListView中显示设备外,您几乎可以使用发现的BluetoothDevice对象执行任何操作. F ...
- 蓝牙 - 如何在Windows下抓取蓝牙数据
首先,要在Windows上安装一个工具:Bluetooth Virtual Sniffer (btvs.exe). Microsoft Bluetooth Test Platform - BTVS - ...
最新文章
- eclipse adt如何切换到设计界面_APP界面设计模板|引导页该如何设计?
- linux清屏命令clear和reset
- ffmpeg4 读取图片编码
- Python可变序列中的一些坑
- RabbitMQ学习(七)_RabbitMQ Consumer获取消息的两种方式(poll,subscribe)解析
- 把nc v6的源码看懂
- oracle的一些基本操作,Oracle中的一些基本操作
- 只在当前页面生效的css样式,修改页面中的一个样式 仅在当前页面生效
- WM有约II(一):你在干嘛?
- 进入已经打开的pyrebox_PyREBox-可用Python编写脚本的逆向工程沙盒
- Mysql 基础操作:DDL、DML、CRUD 与 常用命令
- STM32CubeIDE 下载及安装教程
- NDS程序开发可行性分析报告
- 接口测试用例生成工具介绍及应用
- 谷歌浏览器突然不能翻译了怎么解决?
- 无法登录苹果开发者_如何申请苹果开发者帐号?有哪些注意事项?
- java 回车判断_java 判断输入回车符
- 硬盘修复真经 误区、缺陷、参数与低格
- 深度学习简介--PPT
- 你知道如何修改单选框、复选框、下拉框的默认样式吗
热门文章
- zipException error in opening zip file
- android编辑视频,android 视频剪辑(亲测可用)
- 【英语】December
- 《代码大全》读书笔记之一
- Detecting Spacecraft Anomalies Using LSTMs and Nonparametric Dynamic Thresholding
- 维和医疗分队患者信息管理系统的开发与研究
- 【问题记录与解决】jupyter notebook 无法重命名,无法运行测试代码 || jupyter notebook 中常用的两个快捷键。
- php 改变键值,php数组中子数组如何修改键值
- 逻辑上的“谬误”真的是我们应该所认为的错误吗?
- 《2021年IT行业项目管理调查报告》发布