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
相关热词 c# 应用r包 c# excel格式刷 c# 监控word保存 c#中字符串排序 c# 打印方向 c# 获取根目录 c#语言文档 c#设置开机自启动 c# cpu id 主板 c# timer越来越卡