之前做项目的时候,需要使用电脑程序通过蓝牙向硬件设备发送指令,于是便研究了一下怎么用C#程序和蓝牙进行通信。

1、思路

  1. 电脑蓝牙和蓝牙模块配对连接
    和我们平时正常连接蓝牙设备一样,需要先搜索附近的蓝牙设备,然后根据设备名来选择要连接的蓝牙模块,连接时就根据该蓝牙模块的地址(惟一标识号)来进行连接。
  2. 发送数据给蓝牙模块
    发送的过程就和平时读写文件很类似,只是IO流不一样的区别

2、实现

2.1 使用的库

C#进行蓝牙操作需要用到的库是 InTheHand.Net。在VS中可以直接在Nuget中安装,这是我觉得VS最好用的一个找各种库的最好的方法。
工具菜单->NuGet包管理器->管理解决方案的Nuget程序包

然后直接搜索 InTheHand.Net,选择对应的库文件之后点击安装即可使用

2.2 搜索附近的蓝牙设备

BluetoothClient client = new BluetoothClient();     //处理蓝牙的对象
BluetoothRadio radio = BluetoothRadio.PrimaryRadio;  //获取电脑蓝牙
radio.Mode = RadioMode.Connectable;     //设置电脑蓝牙可被搜索到
BluetoothAddress blueAddress ;          //需要连接的蓝牙模块的唯一标识符
BluetoothDeviceInfo[] devices = client.DiscoverDevices();  //搜索蓝牙设备,10秒//从搜索到的所有蓝牙设备中选择需要的那个foreach (var item in devices) {if(item.DeviceName.Equals("需要连接的蓝牙模块名字"))  //根据蓝牙名字找{Console.WriteLine(item.DeviceAddress);Console.WriteLine(item.DeviceName);blueAddress = item.DeviceAddress;           //获得蓝牙模块的唯一标识符break;}Console.WriteLine(item.DeviceAddress);Console.WriteLine(item.DeviceName);}

搜索蓝牙设备的目的是为了得到想要连接的那个蓝牙模块的唯一标识符,如果之前这个蓝牙设备已经和电脑连接过,那么电脑上就会有设备记录,可以直接找到唯一标识符从而就可以省去上面的这一步直接进行连接。
控制面板->设备和打印机-》右键想要连接的蓝牙设备->属性->蓝牙->唯一标识符


在代码中只需要创建一个蓝牙唯一标识符的对象即可,但是填写唯一标识符的时候需要倒着填并且用16进制表示

BluetoothAddress blueAddress = new BluetoothAddress(new byte[] { 0x21, 0x18, 0x28, 0x03, 0x19, 0x20 }) ;

3、样例代码

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using InTheHand.Net;
using InTheHand.Net.Bluetooth;
using InTheHand.Net.Sockets;namespace BluetoothStudy
{class Program{static void Main(string[] args){BluetoothClient client = new BluetoothClient();     //处理蓝牙的对象BluetoothRadio radio = BluetoothRadio.PrimaryRadio;  //获取电脑蓝牙radio.Mode = RadioMode.Connectable;     //设置电脑蓝牙可被搜索到BluetoothAddress blueAddress ;         //需要连接的蓝牙模块的唯一标识符BluetoothDeviceInfo[] devices = client.DiscoverDevices();     //搜索蓝牙设备,10秒//从搜索到的所有蓝牙设备中选择需要的那个foreach (var item in devices) {if(item.DeviceName.Equals("需要连接的蓝牙模块名字"))  //根据蓝牙名字找{Console.WriteLine(item.DeviceAddress);Console.WriteLine(item.DeviceName);blueAddress = item.DeviceAddress;           //获得蓝牙模块的唯一标识符break;}Console.WriteLine(item.DeviceAddress);Console.WriteLine(item.DeviceName);}BluetoothEndPoint ep = new BluetoothEndPoint(blueAddress, BluetoothService.SerialPort);Console.WriteLine("正在连接!");client.Connect(ep);   //开始配对 蓝牙4.0不需要setpinif(client.Connected){Console.WriteLine("连接成功!");Stream peerStream = client.GetStream();     //创建IO流对象string str = "发送的内容";peerStream.Write(str,0,str.Length); // 发送开门指令Console.WriteLine("发送成功!");}}}
}

4、总结

  • 处理类似蓝牙等和硬件相关的程序,一定是存在某个库专门来处理的,就拿InTheHand.Net这个库来举例子,我看了他们的官网,除了可以对蓝牙进行处理之外,还可以对NFC进行处理。所以在遇到一些不知道不同东西怎么结合的情况时,就多上网查有没有什么类似的库可以用
  • 一般拿到一个库时,大多数情况只需要一些最基本的功能,最好的学习方法就是找一个经典的代码例子,看懂了基本就知道怎么用了。但如果需要深度使用的话,最好就是上官网,官网都会有开发文档介绍具体的用法

不一样的蓝牙连接方式——C#程序实现蓝牙通信相关推荐

  1. 笔记本linux蓝牙驱动怎么安装程序,笔记本蓝牙驱动,教您笔记本蓝牙驱动怎么安装...

    现在很多的电脑上都有蓝牙,蓝牙可以让我们的电脑和手机通过无线的方式进行传输文件,但是笔记本上的蓝牙和手机上的又有很大的不同,传输文件也需要一定的操作规范,难么该如何使用呢?下面,小编给大家带来了安装笔 ...

  2. ktm390蓝牙连接安卓_车机蓝牙连接常见问题说明

    汽车已成为了人民生活中的必需品,大家开车过程中或多或少会碰到汽车娱乐主机使用蓝牙时的闹心问题,从而影响开车的心情,今天小编给老铁们列出几条闹心问题做下说明. 问题1:蓝牙连接时无法播放苹果手机的微信语 ...

  3. 10蓝牙模块 hm 电脑蓝牙 连接_树莓派与HM-10蓝牙模块搭建iBeacon | 学步园

    最近iBeacon很火,我也买了个树莓派搭建一个iBeacon玩玩. 首先,需要的设备有: 1. 树莓派及电源 2. 一个蓝牙模块(网上都是用蓝牙适配器,而我用的是HM-10的蓝牙模块). 3. 连接 ...

  4. 基于snooplog分析蓝牙连接过程,进一步学习蓝牙协议栈

    一:什么是BT snoop log 首先问题: 1.为什么远端发来的消息没有收到? 2.为什么搜索不到设备 3.为什么连不上? 4....... 总之,研发过程中会遇到很多奇奇怪怪的问题,我们无法通过 ...

  5. android蓝牙连接回调没反应,Android蓝牙套接字连接无法正常工作

    我正在开发一个单独的BluetoothHelper课程.在connectToBTDevice()方法中,调用一个新线程,在线程中,蓝牙套接字试图连接到蓝牙设备.不幸的是,它开始很好,但退出时发出警告S ...

  6. android 蓝牙连接广播,Android广播接收器蓝牙事件捕捉

    为了捕获蓝牙状态更改( STATE_OFF , STATE_TURNING_ON , STATE_ON , STATE_TURNING_OFF ),请在您的活动中执行此操作: 首先,为您的Androi ...

  7. 笔记本linux蓝牙驱动怎么安装程序,笔记本蓝牙驱动怎么安装不上怎么办

    蓝牙是最近几年时间里面开始流行起来的,支持设备短距离无线通信技术,不论是台式电脑还是笔记本电脑,都是支持蓝牙使用的.不过有一些新手小白用户在使用笔记本蓝牙的时候,却出现了蓝牙驱动安装不上的问题,在这里 ...

  8. 微信小程序使用蓝牙连接设备流程

    微信小程序使用蓝牙连接设备流程 小程序使用蓝牙连接设备介绍 使用到的api 流程: 初始化蓝牙模块 wx.openBluetoothAdapter wx.openBluetoothAdapter({ ...

  9. WIN10和Ubuntu共享蓝牙连接配对

    WIN10和Ubuntu共享蓝牙连接配对 基本想法 对于蓝牙3.0设备 对于蓝牙4.0设备 流程 0.UBUNTU下配对蓝牙设备 1.查看Windows10下的牙蓝信息 2.修改UBUNTU下蓝牙信息 ...

最新文章

  1. tf.placeholder函数的用法
  2. 设置python路径
  3. Map定义了几个用于插入和删除元素的变换方法
  4. python 局域网通信_python实现局域网内实时通信代码
  5. matlab min函数_数学建模与MATLAB非线性规划
  6. at24c08 E2PROM的I2C设备驱动实例——基于mini2440
  7. 笔记本需要测试哪些软件有哪些,笔记本电脑制造应用测试有哪些呢?
  8. sql 遇到多个重复列名报错:Ambiguous column reference ***
  9. Adjust接入注意事项
  10. android entries 变量选择,Spinner的使用(android:entries指定列表项)
  11. 一个普通IT人的十年回顾
  12. 摸个鱼(算最大捕捞量)
  13. 基于python的视频监控系统_Python远程视频监控程序
  14. 如何干净、彻底地删除软件、文件夹
  15. java jsp页面传值_JSP 页面传值方法总结
  16. 2023年第十四届蓝桥杯JAVA B组题目
  17. 列表查询java_查询订单列表示例代码
  18. 【第80题】JAVA高级技术-多线程14(闭锁和栅栏)
  19. Como criar uma linguagem usando ANTLR4 e Java
  20. neutron基础六(bridge fdb)

热门文章

  1. 哪里东西更便宜?读《卧底经济学(珍藏版)》
  2. 奇奇怪怪的大佬:从职业赌徒到互联网大佬
  3. 【reset.css重置文件夹】
  4. 如何做一个动态的图片时钟?
  5. EXCEL实用技巧-多条件求和、多条件计数、多条件查找
  6. WebAssembly:2023年的5个预测
  7. JavaScript 动态表格操作
  8. 智能家居作为物联网领域风口 引科技巨头争夺
  9. 一起来捉妖找不到服务器,一起来捉妖妖怪分布大全 所有妖灵不同地点位置详解...
  10. 灵雀云ACP成功通过金融信创生态实验室适配验证