c#蓝牙通信,程序报错。

我是新手,C#才起步,就先拿着其他大神的程序练练手,跪请大神帮忙看一下是怎么回事。图片说明
代码是:using InTheHand.Net;
using InTheHand.Net.Bluetooth;
using InTheHand.Windows.Forms;
using System;
using System.IO;
using System.Net;
using System.Threading;
using System.Windows.Forms;
namespace _12._2._2
{
public partial class Form1 : Form
{
BluetoothRadio radio = null;//蓝牙适配器

string sendFileName = null;//发送文件名

BluetoothAddress sendAddress = null;//发送目的地址

ObexListener listener = null;//监听器

string recDir = null;//接受文件存放目录

Thread listenThread, sendThread;//发送/接收线程

public Form1()
{
InitializeComponent();
radio = BluetoothRadio.PrimaryRadio;//获取当前PC的蓝牙适配器

CheckForIllegalCrossThreadCalls = false;//不检查跨线程调用

if (radio == null)//检查该电脑蓝牙是否可用

{
MessageBox.Show("这个电脑蓝牙不可用!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
recDir = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
labelRecDir.Text = recDir;

}

    private void Form1_Load(object sender, EventArgs e)
    {

    }

    private void buttonSelectBluetooth_Click(object sender, EventArgs e)
    {
        SelectBluetoothDeviceDialog dialog = new SelectBluetoothDeviceDialog();
        dialog.ShowRemembered = true;//显示已经记住的蓝牙设备  
        dialog.ShowAuthenticated = true;//显示认证过的蓝牙设备  
        dialog.ShowUnknown = true;//显示位置蓝牙设备  
        if (dialog.ShowDialog() == DialogResult.OK)
        {
            sendAddress = dialog.SelectedDevice.DeviceAddress;//获取选择的远程蓝牙地址  
            labelAddress.Text = "地址:" + sendAddress.ToString() + "    设备名:" + dialog.SelectedDevice.DeviceName;
        }  
    }

    private void buttonSelectFile_Click(object sender, EventArgs e)
    {
        OpenFileDialog dialog = new OpenFileDialog();
        if (dialog.ShowDialog() == DialogResult.OK)
        {
            sendFileName = dialog.FileName;//设置文件名  
            labelPath.Text =Path.GetFileName(sendFileName);
        }  
    }

    private void buttonSend_Click(object sender, EventArgs e)
    {
        sendThread = new Thread(sendFile);//开启发送文件线程  
        sendThread.Start();  
    }
    private void sendFile()//发送文件方法  
    {
        Cursor.Current = Cursors.WaitCursor;
        System.Uri uri = new Uri("obex://" + dialog.SelectedDevice.DeviceAddress.ToString() + "/" + System.IO.Path.GetFileName(dialog.FileName));
        ObexWebResponse response = null;
        try
        {
            ObexWebRequest request = new ObexWebRequest(uri);
            buttonSend.Enabled = false;
            request.ReadFile(sendFileName);//发送文件  
            labelInfo.Text = "开始发送!";
            response = request.GetResponse() as ObexWebResponse;//获取回应  
            labelInfo.Text = "发送完成!";
        }
        catch (System.Exception ex)
        {
            MessageBox.Show("发送失败!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            labelInfo.Text = "发送失败!";
        }
        finally
        {
            if (response != null)
            {
                response.Close();
                buttonSend.Enabled = true;
            }
        }
    }
    private void buttonselectRecDir_Click(object sender, EventArgs e)//选择接受目录  
    {

        }

    private void buttonListen_Click(object sender, EventArgs e)
    {
        if (listener == null || !listener.IsListening)
        {
            radio.Mode = RadioMode.Discoverable;//设置本地蓝牙可被检测  
            listener = new ObexListener(ObexTransport.Bluetooth);//创建监听  
            listener.Start();
            if (listener.IsListening)
            {
                buttonListen.Text = "停止";
                labelRecInfo.Text = "开始监听";
                listenThread = new Thread(receiveFile);//开启监听线程  
                listenThread.Start();
            }
        }
        else
        {
            listener.Stop();
            buttonListen.Text = "监听";
            labelRecInfo.Text = "停止监听";
        }  
    }
    private void receiveFile()//收文件方法  
    {
        ObexListenerContext context = null;
        ObexListenerRequest request = null;
        while (listener.IsListening)
        {
            context = listener.GetContext();//获取监听上下文  
            if (context == null)
            {
                break;
            }
            request = context.Request;//获取请求  
            string uriString = Uri.UnescapeDataString(request.RawUrl);//将uri转换成字符串  
            string recFileName = recDir + uriString;
            request.WriteFile(recFileName);//接收文件  
            labelRecInfo.Text = "收到文件" + uriString.TrimStart(new char[] { '/' });
        }
    }  
    private void labelRecDir_Click(object sender, EventArgs e)
    {

    }
    private void Form1_FormClosed(object sender, FormClosedEventArgs e)
    {
        if (sendThread != null)
        {
            sendThread.Abort();
        }
        if (listenThread != null)
        {
            listenThread.Abort();
        }
        if (listener != null && listener.IsListening)
        {
            listener.Stop();
        }
    }  
    }  
}

1个回答

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
经典蓝牙通信代码篇

好记性不如烂笔头,既然不够聪明,就乖乖的做笔记,温故而知新。公司一代产品用的经典蓝牙通信,特点就是基于socket连接,传输速率快,缺点就是,额,,,耗电!虽然已经被取代了?,但还是记录一下经典蓝牙通信基本原理缅怀一下吧。 好了,全军出击! 蓝牙权限 蓝牙权限不属于危险权限,所以写在清单文件即可,Android6.0不需要动态申请。但是搜索周边蓝牙设备是需要定位权限的,而且要求gps打开。

Windows蓝牙通信的开发

持续更新

c#开发.NET CF 蓝牙蓝牙通信模块

用C#开发.NET CF 蓝牙通信模块用C#开发.NET CF 蓝牙通信模块用C#开发.NET CF 蓝牙通信模块

PDA蓝牙通信的程序(C#)

有关蓝牙通信的小例子,自己写的,发上来跟大家交流一下

手机与PC蓝牙通信程序Demo

自己做的一个Demo,可以使得手机充当电脑的遥控器作用,通信介质为蓝牙,希望对各位有所帮助~

蓝牙hc程序(实现APP与单片机STM32F103的通信)

文件中Readme文件有连线方式,压缩包含程序源码,用keil打开口按照接线方式即可通行。拿出来与大家分享,程序不复杂,只要有一点单片机的基础即可,,能力有限,欢迎私聊讨论指出不足,不懂连线或其它地方也可私聊进行讨论学习。 MCU:STM32F103 1、通过手机APP发送数据 2、通过手机APP发送指令 指令1:led0 控制led0灯状态的反转 指令2:led1 控制led1灯状态的反转 指令3:beep 控制蜂鸣器的开关 指令4:lcdwrite lcd显示一条标语 手机可接收来自单片机的数据,也可发送数据给单片机,蓝牙采用hc05从机模式 接线方式:本程序采用usart3与蓝牙进行通信,蓝牙的RX引脚接usart3的TX,蓝牙的Tx接usart3的rx引脚,VCC接3.3V电源,KEY引脚接PA4,STATE引脚接PA15

蓝牙通信工作流程讲解

最近项目上需要蓝牙通讯功能,所以自己私下里学习了一下蓝牙通讯相关的知识。一直以为蓝牙通讯是调用系统层的API实现的,比如我们平时用的利用蓝牙传照片和文件,我们只需要选择一下接受设备就可以了,但是自己实现蓝牙远程通信之后,才明白其中的一些细节问题,有些流程还是需要我们自己去做的。 1、首先是蓝牙通信机制 蓝牙通信也是采用Socket机制,通信双方有一方为服务器端,另一方为客户端,可能有 人会觉...

蓝牙通信,完整的通信流程!

无线通信方案,有三种方案可以实施: 1、NFC 2、蓝牙 3、WIFI 下面是对这三个知识点做的一个总结,参照对比可以选择合适的方案。而本章着重讲的蓝牙之间通信。 首先介绍一下蓝牙的两个广播Receiver。 第一个:蓝牙状态的改变是通过广播接收到的。 // 注册蓝牙状态接收广播 IntentFilter intentFilter = new nt

C# 产测工具

c# winform一个主界面操作两个串口,有蓝牙通信和打印机程序

C# 蓝牙通信

C# 蓝牙通信 获取电子设备发送的数据。上传下载

[C#] 编程控制笔记本蓝牙与外部蓝牙设备通信

一、蓝牙模块XLBT232‐D01介绍(外部设备蓝牙) 1.1、蓝牙模块简介 XLBT232-D0101蓝牙模块采用CSR BlueCore 芯片,配置6-8Mbit 的软件存储空间, 支持AT 指令,用户可根据需要更改SPP 角色(主、从模式)以及串口波特率、 设备名称、配对密码等参数,使用灵活。   1.2、模块功能介绍 1.2.1、特性  蓝牙协议:Blu

蓝牙通讯模块(C#)

 在Windows Mobile软件开发中.Net正扮演着日益重要的角色,我们已经可以看到很多用.Net CF开发的软件,这些软件涉及到了日常应用的方方面面。在智能设备的软件开发中,无线互联是一个相当重要的一块,我们可以看到,红外几乎是所有智能设备的标配,而蓝牙也日益在越来越多的智能设备上出现,有了硬件,显然要有相应的软件相关的应用。   我们也知道,用.NET CF开发红外通信应用时相当轻松的,

用C#开发.NET CF 蓝牙通信模块

用C#开发.NET CF 蓝牙通信模块

C# 关于蓝牙的通信开发

C# 关于电脑通过蓝牙与手机手机进行通信的软件。通过简单算法和蓝牙技术实现手机客户端的和电脑的通信,这样就可以使得手机能够和电脑很好的通信,在此基础上,更加方便的实现手机和电脑通过蓝牙聊天,手机控制电脑关机,等等。。。。这个软件简单易用。

LABVIEW做的蓝牙数据发送程序

LABVIEW做的蓝牙数据发送程序 要用到LABVIEW的数据通信中的蓝牙协议...

C# PC 通过bluetooth 连接手机1

BluetoothClient Blueclient = new BluetoothClient(); Dictionary deviceAddresses = new Dictionary(); private void btnFind_Click(object sender, EventArgs e) { Bluetoo

Arduino蓝牙通信实现

Arduino蓝牙通信实现环境:ubuntu14.04 \ubuntu 16.04 Arduino Uno python python pyserial 串口模块安装: sudo apt-get install python-serial system setting 链接蓝牙模块 Connection ...

VC2010与 蓝牙(Bluetooth)通讯

BlueToothExc_Plus蓝牙API编程实例,用windowsAPI编写的一个蓝牙识别和串口通信的例子。可以在VS2010上编译通过

VC++2008开发Windows蓝牙通信程序

很详细的Windows蓝牙通信程序,开发环境是VC++2008.

安卓手机蓝牙通信聊天程序

安卓手机蓝牙通信安卓手机蓝牙通信安卓手机蓝牙通信安卓手机蓝牙通信安卓手机蓝牙通信安卓手机蓝牙通信

iOS开发之蓝牙通信

转载自:http://www.myexception.cn/operating-system/2052286.html OS开发之蓝牙通讯 iOS开发之蓝牙通讯 一、引言         蓝牙是设备近距离通信的一种方便手段,在iPhone引入蓝牙4.0后,设备之间的通讯变得更加简单。相关的蓝牙操作由专门的CoreBluetooth.framework进行统一管理。通过蓝牙进行通

Android 蓝牙开发(一)蓝牙通信

随着可穿戴设备的流行,研究蓝牙是必不可少的一门技术了。 总结了下蓝牙开发使用的一些东西分享一下。 首先需要AndroidManifest.xml文件中添加操作蓝牙的权限。 <uses-permissionandroid:name="android.permission.BLUETOOTH" /> 允许程序连接到已配对的蓝牙设备。 <uses-permissionandro

C#开发蓝牙服务端,自动配对以及收发消息

C#开发蓝牙服务端,自动配对以及收发消息目前.Net平台最好用的蓝牙库是InTheHand.net,是由32feet.net提供的shared-source项目,提供短距离领域(personal area networking technologie)的通信功能,支持bluetooth,Infrared(IrDA)红外等. //启动一个监听线程 Thread listenThread = new T

蓝牙通信源代码,AT命令,基于串口的程序

蓝牙通信源代码,AT命令,基于串口的程序。

蓝牙开发源代码,蓝牙通信,基于串口的程序,AT命令,

蓝牙开发源代码,蓝牙通信,基于串口的程序,AT命令,

Arduino与Android蓝牙通信笔记

关于蓝牙模块的一些基础概念 蓝牙主机和从机 主机:能够主动发起扫描并匹配从机模块 从机:只能被扫描和匹配 一个模块可以即是主机也是从机 AT模式 蓝牙的AT模式就理解为设置模式好了。在设置模式下,我们设置一个蓝牙的以下重要参数: 蓝牙模块名称。既你的蓝牙设备被别的设备扫描到时所显示的名字; 如果是主从一体模块,可在AT模式下设置其角色; 设置密码;

项目用微信小程序蓝牙通信技术

在用微信小程序蓝牙通信项目源码,可在此基础上进行二次开发。

蓝牙通信填坑(标准蓝牙通信和BLE蓝牙通信)

蓝牙通信填坑(标准蓝牙通信和BLE蓝牙通信),标准2.0和ble4.0

Android蓝牙通讯/蓝牙聊天的实现(二)_含demo下载

Android蓝牙通讯/蓝牙聊天之聊天通讯的实现     本系列的文章主要介绍Android设备基于蓝牙通讯实现实时聊天,文章系列主要包括两个部分: android蓝牙的基本操作,Android蓝牙的聊天实现。      本博客资源免费下载: 蓝牙工具:http://download.csdn.net/detail/laozhuxinlu/9870880 蓝牙畅聊:h

windows 蓝牙通讯sdk 及开发文档

在windows下对蓝牙适配器编程的sdk和一个pdf文档里面有例子。

51单片机与蓝牙模块的串口通信C程序

51单片机与蓝牙模块的串口51单片机与蓝牙模块的串口通信C程序通信C程序

STM32控制HC-05蓝牙模块进行通信

stm32 HC-05蓝牙模块

蓝牙设备与PC socket通讯

1. 蓝牙适配器插入PC USB口(前提蓝牙适配器驱动要装好) 2. 开启蓝牙key或蓝牙手机等蓝牙设备。 3. 运行一下程序 #include "stdafx.h" #include #include #include #pragma comment(lib,"ws2_32.lib") #pragma comment(lib,"irprops.lib") int SDPGetP

使用Java蓝牙无线通讯技术API概述

蓝牙是一种低成本、短距离的无线通信技术。对于那些希望创建个人局域网(pans)的人们来说,蓝牙技术已经越来越流行了。每个个人局域网都在独立设备的周围被动态地创建,并且为蜂窝式电话和pda等设备提供了自动连接和即时共享数据的能力。      为了在java平台上开发支持蓝牙技术的软件其他 ,jcp定义了js r82标准--java蓝牙无线技术apis(jabwt)。      在这篇文章中,

蓝牙通信聊天

两台手机实现蓝牙通信 蓝牙编程 蓝牙通信

C#上位机源码(串口调试,蓝牙传输,图表显示)

大体 介绍 :本上位机有普通串口功能和蓝牙 AT 指令直接传送功能 ,还有画图功能, , 3个 图,每个都有最多 图,每个都有最多 8条曲线。 另外 还有 ccd 图像 显示功能,

android蓝牙控制暖风系统

基于android蓝牙通信开发的控制暖风系统的程序

VC++2008开发Windows蓝牙通信程序.pdf

VC++2008, 蓝牙应用程序开发, Windows蓝牙通信程序.pdf, pdf

InTheHand.Net.Personal.dll 蓝牙开发模块 .Net C#

.Net C#下的蓝牙通信包 InTheHand.Net.Personal.dll,可以让蓝牙转成虚拟串口通信. 引用这个dll后,可着手开发蓝牙通信. using InTheHand.Net.Sockets; using InTheHand.Net.Bluetooth; using InTheHand.Net.Ports;

Android蓝牙聊天demo

Android蓝牙通信聊天demo, Android蓝牙通信聊天demo Android蓝牙通信聊天demo

蓝牙通信DEMO

android 蓝牙通信小应用 有源程序和.APK文件

51单片机与蓝牙通信程序

该程序实现了51单片机与蓝牙通信程序,并在适当地方做了注释

xamarin android c# 蓝牙源码

xamarin android c# 蓝牙源码 在vs2010上编通过 可以跟蓝牙模块通信,

蓝牙讲解下--通信

名称解释 UUID 含义是通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Open Software Foundation, OSF) 的组织应用在分布式计算环境 (Distributed Computing Environment, DCE) 领域的一部分 Rfcomm 一个基于欧洲电信标准协会ETSI07.10规

蓝牙Ble4.0通讯的步骤及实现

在一家偏硬件的一家公司从事穿戴式设备的开发,通过近几个月学习与研究对于蓝牙4.0的通讯还有有点自己的见解,有不足的地方大家可以一起讨论,互相学习,废话不多说,那么如何进行蓝牙4.0的通讯与数据传输呢?本demo比较简单,大家应该都可以很好理解与学习的! 有基本的几个步骤,下面是一些代码段,希望对大家有所帮助吧。 添加蓝牙权限, uses-permission android:

用C写蓝牙通讯程序:扫描、读取、发送

在Linux下,通过bluez 蓝牙库可以用C语言轻松实现蓝牙通信。在ubuntu下可以用 apt-get install libbluetooth-dev 安装该库。下面是几个简单示例。 一个简单的扫描程序,得到周边的蓝牙从机设备名和地址: #include stdio.h> #include stdlib.h> #include unistd.h> #

客户端实现蓝牙接收(C#)

原文地址:www.cnblogs.com/sczw-maqing/p/3329761.html 在实现蓝牙接收时,网上的资料很多,使用起来也很简单,但是我觉得还是有必要把这些知识总结下来。蓝牙开发需要用到一个第三方的库InTheHand.Net.Personal.dll,其中关键的两个类是 BluetoothClient 和 BluetoothListener,首先开启一个子线程来不断的接收数据

51单片机与蓝牙模块连接

不久前开始学习使用蓝牙模块,在模块与51单片机连接的过程中出现了非常多的问题,我想应该也是很多新手和我一样会遇到这样的问题,因此特地写这篇文章,想分享下在学习过程中遇到的问题以及解决方法。此次学习用到模块是HC-06蓝牙模块,如下图:该模块某宝有售,价格约为20RMB。某宝上的HC-06有两种,分别是带引脚和不带引脚的,建议新手购买带引脚的。我从试验开始到成功,一共使用了四块蓝牙模块。第一次买的是...

android:手机之间蓝牙通信(四)

功能:蓝牙设备通信连接。 蓝牙连接分为两种情况。 一、手机与手机间通信 二、手机与蓝牙模块通信。 注意:蓝牙通信使用了多线程,必须掌握线程的创建使用才能使用蓝牙进行通信。 手机与手机间通信: 手机间蓝牙通信使用客户端和服务端。 客户端:搜索设备找到服务端,和服务端配对,连接服务端。 服务端:等待客户端与其配对并来连接。(配对和连接由同一端发起) 申明: private BluetoothS

Unity源码 蓝牙通信 支持IOS和Android

Unity蓝牙通信测试DEMO

立即提问
相关内容推荐