c# 蓝牙虚拟串口_32feet.net 蓝牙虚拟串口编程

本文介绍了如何在C#中使用32feet.NET库进行蓝牙虚拟串口编程,包括检测系统蓝牙可用性、搜索设备、配对、连接以及虚拟串口服务的设置。32feet.NET支持多种蓝牙协议栈,适用于Windows桌面、CE和Phone平台,通过NuGet安装方便快捷。文章详细讲解了各个步骤,并提供了相关代码示例。
摘要由CSDN通过智能技术生成

Windows 上的蓝牙编程并不方便,由于操作系统并没有提供统一的蓝牙操作接口,通常是由各个蓝牙设备商提供蓝牙栈,所以要想编程兼容这些不同的厂商蓝牙是一个问题。好在有个软件项目 32feet.NET 针对主流蓝牙协议栈提供了支持,包括 Microsfot, Widcomm, BlueSolei 等,同时还支持红外传输协议。

蓝牙虚拟串口是一个较为常见的需求,为了兼容已有使用串口设备的程序,需要将蓝牙连接转为系统上的虚拟串口,然后提供给其他程序或库使用。32feet.NET 对此也提供了支持。

32feet.NET 依赖 .NET 3.5 版本以上框架,支持 Windows 桌面版本、Wndows CE 以及 Windows Phone。

安装

如果使用 Visual Studio 2015 或者 安装有 NuGet 工具的,可以直接通过 NuGet 安装。在 NuGet 命令行中输入

1

Install-Package 32feet.NET

这样 NuGet 会自动下载安装并添加到当前 .NET 项目中。可以检查项目 References 项,如果存在 InTheHand.Net.Personal 则表明已成功加入到项目中,如果没有,可以手动添加引用,NuGet 下载存放在 SolutionName\packages\32feet.NET.x.x.x.x\ 路径下。

使用

下面主要讲解 32feet.NET 的使用,覆盖蓝牙搜索、配对、直接连接以及虚拟串口服务。

1. 检测系统蓝牙可用性

如果系统没有蓝牙设备或者蓝牙设备被禁用,那么可以通过以下函数来进行检查:

123456789101112131415

/* 定义于类 BTHelper 中 */

public static bool IsPlatformSupportBT()

{

BluetoothClient bc;

try

{

bc = new BluetoothClient();

}

catch (PlatformNotSupportedException)

{

return false;

}

bc.Close();

return true;

}

如果系统不支持蓝牙设备,那么 new BluetoothClient 会抛出 PlatformNotSupportedException 异常,通过捕获这个异常,来检测系统蓝牙设备可用性。

2. 蓝牙搜索

BluetoothClient 对象有个方法 DiscoverDevices 用于搜索蓝牙设备,该方法有多个重载版本,最终都是调用如下这个接口:

1

public BluetoothDeviceInfo[] DiscoverDevices(int maxDevices, bool authenticated, bool remembered, bool unknown, bool discoverableOnly);

第一个参数表明搜索的最大设备数,第二个参数表示是否搜索已配对设备,第三个表示是否搜索记住的设备,第四个表示是否搜索未知设备,第五个参数表示是搜索范围内可被发现的设备。

这里面重要的是第二和第五个参数,第二个代表搜索系统中已配对列表中的设备,即使它们现在并不在线。第五个参数 XP 系统上不支持,表示搜索范围内可被发现的设备。

如果我们需要获得系统中已配对列表中的蓝牙设备,可以这样调用 DiscoverDevices(255, true, false, false),这里使用了4个参数的重载版本,只将第二个参数置为 true。

如果我们需要搜索周围环境中可用的蓝牙设备,可以这样调用 DiscoverDevices(255, false, false, false, true),这个调用等同于 DiscoverDevicesInRange()。

需要注意的是,这个调用是同步阻塞的,在搜索没有结束之前函数不会返回。所以通常我们需要将这个调用放入工作线程中。例外的是,如果只是获取系统中已配对列表中的设备,这个调用会很快完成,不会占用当前线程太多时间。

库中同时提供了一个异步搜索方法,由类 BluetoothComponent 提供,由事件 DiscoverDevicesProgress 和 事件 DiscoverDevicesComplete 以及方法 DiscoverDevicesAsync 来实现。这个和用 BackgroundWorker 来实现 DiscoverDevices() 异步查找是一样的。

PS: 可以通过 VS 的 Object Browser 查看 InTheHand.Net.Personal 库中的函数接口说明,说明非常翔实。

3. 检测蓝牙设备是否在范围内

当需要检查一个蓝牙设备是否在有效范围内,可以通过查询一个 Fake Service ID 来实现。

如果蓝牙设备在范围内可访问,那么查询的结果是返回的

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C#中使用蓝牙虚拟串口,你需要使用System.IO.Ports命名空间中的SerialPort类。但是,与传统串口不同,蓝牙串口需要使用RFCOMM协议进行通信。 首先,你需要确保你的计算机上已经安装了蓝牙适配器,并且已经成功地与目标设备进行了配对。 接下来,你需要在你的C#项目中添加System.IO.Ports命名空间。然后,你可以使用以下代码来设置蓝牙串口: ```csharp SerialPort bluetoothPort = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One); bluetoothPort.PortName = "COM10"; // 更改为你的蓝牙串口的名称 bluetoothPort.BaudRate = 9600; // 更改为你的蓝牙串口的波特率 bluetoothPort.Parity = Parity.None; bluetoothPort.DataBits = 8; bluetoothPort.StopBits = StopBits.One; bluetoothPort.Handshake = Handshake.None; bluetoothPort.ReadTimeout = 500; bluetoothPort.WriteTimeout = 500; bluetoothPort.Open(); // 打开蓝牙串口 ``` 注意:在设置蓝牙串口之前,你需要找到你的蓝牙串口的名称。你可以在Windows设备管理器中找到它,或者在设备配对时记下它。 一旦你成功地打开了蓝牙串口,你就可以使用SerialPort类中的Read和Write方法来读取和写入数据。例如,以下代码将向蓝牙串口写入数据: ```csharp bluetoothPort.Write("Hello, Bluetooth!"); ``` 然后,你可以使用以下代码从蓝牙串口读取数据: ```csharp string message = bluetoothPort.ReadLine(); ``` 当你完成与蓝牙串口的通信后,记得关闭串口: ```csharp bluetoothPort.Close(); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值