如何在Windows 7桌面上(使用C++或C#程序)接受传入的蓝牙连接

17

我在Android上编写了一个BT应用程序,以连接到实验室设备/硬件。目前我借来了一个设备,但是在我开发时并不总是有这个设备(通勤、出城等)。因此,我正在为此创建模拟器,并将在Windows桌面上运行该模拟器,以便我的Android客户端代码可以连接到它。

Android代码是使用.NET / Xamarin构建的,并且连接真实设备时工作正常。

我熟悉桌面上的C ++或C#。

我在网上找到了这段代码http://www.codeproject.com/Articles/252882/Bluetooth-Server-Programming-on-Windows 用于创建和接受BT连接。看起来非常适合我想要做的 - 构建一个状态机/模拟器来模仿真实设备。但是我无法将我的Android设备连接到它。

请注意 - 连接是串口连接。(来自Android设备的UUID是“众所周知”的串口连接(“00001101-0000-1000-8000-00805F9B34FB”)

我不确定如何配置Windows 7桌面和蓝牙服务,以允许此服务器/模拟器程序接受连接。

我已经配对了这些设备,但无法连接。

如何在运行于Win7桌面上的C ++或C#代码中接受传入的蓝牙串行连接?


2
听起来你不应该在这个问题中使用"android"标签,因为手头的问题与Android开发没有直接相关。在我看来,“windows”和相关标签会给出适当的覆盖范围。 - ozbek
根据您发布的代码,具体出了什么问题?应用程序抛出了什么错误(如果有的话)? - ProGM
你还没有展示给我们你在Android上使用的代码;也许这是问题的根源。你尝试过连接到一个地址而不是UUID吗?我发现使用不安全的RFComm连接到地址可以成功,但是连接到UUID则失败了。 - BitBank
@bitbank - Android代码没有问题 - 它可以很好地连接到真实设备。我遇到的问题是服务器端代码。不确定您所说的连接到地址是什么意思 - 我正在通过移动设备上的连接属性传递UUID。 - Tim
@proGM - 代码没有问题,也没有异常 - 问题在于它无法接受来自我的移动设备的连接。 - Tim
1个回答

2
如果您想进行低级操作,例如通过C#应用程序建立蓝牙连接,则需要通过其API访问蓝牙堆栈。如果您的设备正在运行Microsoft的蓝牙堆栈,则可以查看32feet.net的Microsoft Bluetooth API的托管包装器。如果您有Widcomm堆栈,则必须找到适用于Widcomm的API。 要访问Microsoft蓝牙堆栈,可以使用BthUtil.dll。 BthUtil.dll是Microsoft蓝牙堆栈的一部分,是一个未受管理的dll。它通常用于诸如通过名为BthSetMode的函数打开或关闭蓝牙无线电之类的任务。 (请参阅MSDN文档-http://msdn2.microsoft.com/EN-US/library/aa456007.aspx
您可以检查以下链接:

http://www.youtube.com/watch?v=Jn05CU3mxzo

另外,请检查32feet.Net
32feet.Net简介

32feet.NET是一个共享源代码项目,旨在使个人区域网络技术(如蓝牙、红外(IrDA)等)易于从.NET代码中访问。
支持桌面、移动或嵌入式系统。
32feet.NET可用于商业或非商业用途。
如果您使用二进制文件,只需使用库即可。如果您对源代码进行修改,需要包括32feet.NET License.txt文档,并确保文件头未被修改/删除。该项目目前由以下库组成:- 蓝牙 IrDA 对象交换 蓝牙支持需要具有Microsoft、Widcomm、BlueSoleil或Stonestreet One Bluetopia蓝牙堆栈的设备。需要.NET Compact Framework v3.5或更高版本和Windows CE.NET 4.2或更高版本,或者.NET Framework v3.5用于桌面Windows XP、Vista、7和8。

链接
http://32feet.codeplex.com/

32feet.Net 的特性链接 http://32feet.codeplex.com/wikipage?title=Feature%20support%20table&referringTitle=Documentation

32feet.net是什么? - ldgorman
这基本上是一个用于个人网络技术的共享源代码项目。 - Pratik Singhal
尽量不要仅用链接回答问题,因为如果它们在某个时候失效了,后来的用户将完全没有信息可用。请尝试基于最重要的内容备份您的链接,并提供有用的内容。 - João Pinho

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接