C#发送文件到蓝牙设备

测试环境:

visual studio 2022

win11笔记本电脑,具有蓝牙功能

.net6控制台

测试步骤如下:

1 新增名为BluetoothDemo控制台项目

2 通过nuget安装InTheHand.Net.Bluetooth,版本选择4.2.1和安装InTheHand.Net.Obex,版本选择4.1.0,如下图:

3  在程序的bin/Debug目录下新增一个名为test.txt的文本文件,内容随便填点东西

4 在主程序中编辑代码如下:

using InTheHand.Net.Obex;
using InTheHand.Net.Bluetooth;
using InTheHand.Net.Sockets;
using System.Text;
using InTheHand.Net;using (var client = new BluetoothClient())
{// 搜索附近的蓝牙设备var devices = client.DiscoverDevices();foreach (var device in devices){Console.WriteLine($"Name: {device.DeviceName}, Address: {device.DeviceAddress}");}
}//从前面的扫描蓝牙设备中获取到的设备地址
string deviceAddress = "3839CDC9171A";
BluetoothAddress address = BluetoothAddress.Parse(deviceAddress);
Guid serviceClass = BluetoothService.ObexObjectPush;
//在程序的bin/Debug目录下新增一个test.txt文件
string filePath = "test.txt"; Uri uri = new Uri($"obex://{deviceAddress}/{System.IO.Path.GetFileName(filePath)}");ObexWebRequest request = new ObexWebRequest(uri);
request.ReadFile(filePath);using (ObexWebResponse response = (ObexWebResponse)request.GetResponse())
{if (response.StatusCode == (ObexStatusCode.OK|ObexStatusCode.Final)){Console.WriteLine("文件发送成功");}else{Console.WriteLine("文件发送失败: " + response.StatusCode);}
}Console.WriteLine("Hello, World!");

上述代码中的地址deviceAddress根据实际情况填写

程序运行结果如下:

上面的iOOO Z9x是我的手机设备上的蓝牙名称,可以看到已经发送文件到我的手机了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/83204.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

初识 Pandas:Python 数据分析的利器

在数据分析、数据清洗和可视化等领域,Python 无疑是最受欢迎的语言之一,而在 Python 的数据处理生态中,Pandas 是最核心、最基础的库之一。如果你接触数据分析、机器学习、金融建模,或者只是想处理一些 Excel 表格,那么…

SpringBoot项目使用POI-TL动态生成Word文档

近期项目工作需要动态生成Word文档的需求,特意调研了动态生成Word的技术方案。主要有以下两种: 第一种是FreeMarker模板来进行填充;第二种是POI-TL技术使用Word模板来进行填充; 以下是关于POI-TL的官方介绍 重点关注&#xff1…

fakeroot 在没有超级用户权限的情况下模拟文件系统的超级用户行为

fakeroot 是一个在 Linux 环境中使用的工具,它允许用户在没有超级用户权限的情况下模拟文件系统的超级用户行为。它是一个在 Linux 环境中广泛使用的工具,通常包含在大多数 Linux 发行版的软件仓库中。‌ 主要功能 ‌模拟 root 权限‌:fake…

Spring Spring Boot 常用注解整理

Spring & Spring Boot 常用注解整理 先理解核心概念:什么是注解(Annotation)?第一部分:IOC(控制反转)和 DI(依赖注入)1. Component2. Service, Repository, Controll…

AIGC与数字媒体实验室解决方案分享

第1部分 概述 1.1 建设目标 1.深度融合AIGC技术,培养能够驾驭新质生产力的数字媒体人才 通过引入前沿的AIGC技术,确保学生能够接触到最先进的人工智能应用。教学内容理论和实践结合,让学生在实际操作中熟练掌握AIGC工具,生成高…

讯联云库项目开发日志(二)AOP参数拦截

目录 利用AOP实现参数拦截: 一、​​HTTP请求进入Controller​(发送邮件验证码) 二、AOP切面触发 1. 切面拦截(GlobalOperactionAspect.class) method.getAnnotation()​​ null interceptor 判断​​ 2.参数校验注解 3. 参…

用OBD部署OceanBase社区版的避坑指南

以下是用OBD黑屏部署 OceanBase社区版时容易碰到的几个问题及解决思路,供大家参考。 一、 遇坑步骤:用yaml文件部署集群: obd cluster deploy obtest -c mini-single-example.yaml 报错: Package oceanbase-ce-4.2.1.8-108000…

无锡哲讯科技:引领芯片封装SAP系统的智能化革命

芯片封装行业的数字化转型 在全球半导体产业高速发展的今天,芯片封装作为产业链的关键环节,直接影响着芯片的性能、可靠性和成本。随着5G、人工智能、物联网等技术的普及,市场对芯片的需求激增,封装企业面临着效率提升、良率优…

从海洋生物找灵感:造个机器人RoboPteropod,它能在水下干啥?

大家好!在如今人类对水下环境探索不断深入的时代,从水下考古到珊瑚礁考察,各种任务都离不开水下机器人的助力。但传统水下机器人尺寸较大,在狭窄的水下空间施展不开。今天,我们就来认识一款受海洋小生物启发而设计的仿…

区块链blog1__合作与信任

🍂我们的世界 🌿不是孤立的,而是网络化的 如果是单独孤立的系统,无需共识,而我们的社会是网络结构,即结点间不是孤立的 🌿网络化的原因 而目前并未发现这样的理想孤立系统,即现实中…

Linux服务之lvs+keepalived nginx+keepalived负载均衡实例解析

目录 一.LVSKeepAlived高可用负载均衡集群的部署 二.NginxKeepAlived高可用负载均衡集群的部署 一.LVSKeepAlived高可用负载均衡集群的部署 实验环境 主keepalived:192.168.181.10 lvs (7-1) 备keepalived:192.168.181.10…

50天50个小项目 (Vue3 + Tailwindcss V4) ✨ |搭建项目框架

🖤 一个专注于「Vue3 TailwindCSS」的 50 天极简开发挑战,探索组件边界,打磨技术锋芒。 🎉 欢迎来到 50 个小项目的第一天!今天我们将从零开始搭建一个 Vue3 项目,并引入 Tailwind CSS v4,为后…

Android 中 网络图片加载库 Glide 简介

Glide 是一个功能强大且广泛使用的图片加载库,适用于 Android 应用程序。它提供了简单易用的 API,用于从网络、本地存储或资源中加载图片,并支持图片的缓存、转换、占位图、动画等功能。 一、Glide 主要特点 简单易用 提供简洁的 API,一行代码即可加载图片。 支持多种数据…

07 web 自动化之 Unittest 应用:测试报告装饰器断言

文章目录 一、常见的第三方库结合 unittest 生产 html 格式测试报告1、HtmlTestRunner2、BeatifulReport 二、装饰器 unittest.skip 强制跳过&条件跳过三、unittest的常用断言方法 一、常见的第三方库结合 unittest 生产 html 格式测试报告 1、HtmlTestRunner 官网下载 …

【Python 面向对象】

Python 的面向对象编程(OOP)通过类(Class)和对象(Object)实现代码结构化,支持封装、继承和多态三大特性。以下是系统化指南: 一、类与对象基础 1. 定义类 class Dog:# 类属性&…

STM32F103_LL库+寄存器学习笔记23 - PWM波形输出及软件方式调整周期与占空比

导言 脉宽调制(PWM)是 STM32 定时器最常用的输出模式之一,广泛应用于电机驱动、LED 调光、伺服控制和功率管理等场景。本篇文章将以 TIM5 为例,从寄存器层面深入剖析 PWM 输出的原理与实现步骤。通过本篇博客,你不仅能…

堆(Heap)

1. 堆(Heap) 1.1. Python实现堆的插入、堆顶删除和排序 class MaxHeap:def __init__(self):# 初始化空堆,使用列表表示self.heap []def insert(self, val):# 插入元素并执行上浮self.heap.append(val)self._sift_up(len(self.heap) - 1)de…

Spring类

BeanDefinition BeanDefinition表示Bean定义,BeanDefinition中存在很多属性用来描述一个Bean的特点。比如: class,表示Bean类型scope,表示Bean作用域,单例或原型等lazyInit:表示Bean是否是懒加载initMeth…

在vue中this.$emit有哪些作用,事件监控具体含义,以及这些子组件能封装哪些功能组件

this.$emit 的作用 this.$emit 的作用是触发一个自定义事件,并将数据传递给父组件。父组件可以通过 v-on(或 )监听这个事件,并在事件触发时执行相应的处理函数。 this.content 的作用 this.content 是子组件的 props&#xff0…

前端流行框架Vue3教程:16. 组件事件配合`v-model`使用

组件事件配合v-model使用 如果是用户输入,我们希望在获取数据的同时发送数据配合v-model 来使用,帮助理解组件间的通信和数据绑定。 🧩 第一步:创建子组件(SearchComponent.vue) 这个组件用于处理用户的搜…