C#中的蓝牙,哪个堆栈,哪个SDK?

C#中的蓝牙,哪个堆栈,哪个SDK?,c#,.net,bluetooth,C#,.net,Bluetooth,我们有一个应用程序需要能够使用蓝牙满足以下要求: 从蓝牙设备接收文件(最多可同时接收2个设备) 显示范围内的所有蓝牙设备 向蓝牙设备发送文件 同时扫描蓝牙设备并传输文件 我们在Windows XP上运行 我四处看了看,似乎有3个主要堆栈: BlueSoleil 在BlueSoleil网站的SDK部分,它似乎提到只支持1个连接,这显然是不好的 窗口 似乎只支持1个蓝牙加密狗,这可能意味着我们无法满足所有要求 Widcomm 昂贵且可能过度杀伤力?更复杂的API?想法 在C#的SDK方面,我们正在研

我们有一个应用程序需要能够使用蓝牙满足以下要求:

  • 从蓝牙设备接收文件(最多可同时接收2个设备)
  • 显示范围内的所有蓝牙设备
  • 向蓝牙设备发送文件
  • 同时扫描蓝牙设备并传输文件
  • 我们在Windows XP上运行

    我四处看了看,似乎有3个主要堆栈:

    BlueSoleil

    在BlueSoleil网站的SDK部分,它似乎提到只支持1个连接,这显然是不好的

    窗口

    似乎只支持1个蓝牙加密狗,这可能意味着我们无法满足所有要求

    Widcomm

    昂贵且可能过度杀伤力?更复杂的API?想法

    在C#的SDK方面,我们正在研究Franson Bluetools,有人使用过这个API吗

    谢谢

    试试这个:。从2.4版开始,除了Windows堆栈之外,它们还支持Widcomm堆栈


    顺便问一下:为什么你需要同时使用两个加密狗?通常单个加密狗最多可以处理7台同时连接的设备。

    首先,我是32feet.NET库的维护者。:-)

    我刚刚检查过,在带有Microsoft堆栈的XP上(使用一个加密狗),我可以同时接收两个OBEX PUT并发现设备。这是使用32英尺.NET的ObexListener类和BluetoothClient.DiscoverDevices方法实现的。要发送OBEX PUTs,可以使用其ObexWebRequest类。要使用ObexListener进行多个并行连接,我只需要多个线程调用其GetContext()方法

    所以这可能比我们想象的要简单

    我还使用Andy Hume的OBEX服务器使用他的Brecham.OBEX库对其进行了测试,并发接收也可以正常工作。可从以下网址获得

    在我们的Widcomm支持下。希望它在客户端看起来不太“不完整”。。。查询(设备发现)和连接都可以工作。然而,服务器端仍然需要做一些工作,而且widcomapi根本不支持某些东西,例如(编程身份验证处理)


    样品有什么问题?编译时还是运行时?在MSFT堆栈上还是在Widcomm上?如果您愿意,请在进行跟进。

    是时候准确解释我们最终做了什么

    2个加密狗为什么?

  • 如果加密狗正在进行扫描,则传输速率会大大降低
  • 一个加密狗只能支持7次并发传输,如果您正在进行扫描,则会下降到6次。如果您想同时发送、接收和扫描所有内容,则所有内容都会非常慢,而且通道非常有限
  • 因此,我们的想法是运行一个加密狗连续扫描(以便设备尽快出现),另一个加密狗保留用于传输,因为它不扫描,传输速度又快又好

    我们使用的库

    经过多次测试和思考,我们最终选择了

    它支持Widcomm、Windows、BlueSoleil和东芝堆栈。它支持我们所需要的所有服务器端的东西,是一个受良好支持的商业产品,工作完美无误

    哪个堆栈?

    嗯,这是一个复杂的问题。没有一个堆栈同时支持2个加密狗。因此,唯一的选择是在一个堆栈上运行一个加密狗,在另一个堆栈上运行另一个加密狗。这就是WCL库派上用场的地方

    微软-如果扫描过程中发生错误,整个堆栈崩溃是很常见的。这并不理想!您必须关闭并重新启动无线电设备,这需要时间,而且容易发生故障。但是Microsoft堆栈确实可以很好地处理文件传输

    Widcomm-Widcomm堆栈不适合文件传输。有一些讨厌的小应用程序安装在Widcomm上,它们一直试图控制你的应用程序。您可以杀死bttray.exe,这很有帮助,但在传输过程中仍然会从堆栈中获得一些奇怪的行为。我相信这是可以解决的,但由于Windows不适合扫描,所以使用Widcomm进行扫描是有意义的

    所以。。。我们将一个加密狗设置为Widcomm进行反复扫描,将一个加密狗设置为Microsoft仅处理文件传输(输入和输出)

    让2个加密狗工作

    我们使用了两个相同的加密狗,我们可以批量订购,并以同样的方式储存,以减少混乱。每个设备只需要2个蓝牙狗,简单

    唯一的问题是,这些是widcomm加密狗,我们需要在Windows堆栈上安装一个加密狗。Windows无法将其识别为Windows软件狗,因此不会将其注册到Windows堆栈中。所以这是一个可以对bt.inf文件进行的黑客攻击,使其能够识别Windows的加密狗。然后,您需要切换其中一个加密狗的驱动程序,以便在Windows驱动程序上运行,这样就完成了

    摘要


    所以。。。我们有一个加密狗一直在扫描,一个处理传输,每一个都在不同的堆栈上,一切都很好。这是我发现的让2个加密狗在Windows上顺利工作的唯一方法。如果你有更好的建议,请发布

    据我所知,尽管它同时支持多个设备,但它只能一次向其中一个设备进行Obex文件传输。如果我错了,请纠正我!看了看32英尺。他们的widcomm实现非常不完整,我无法让他们的任何示例开箱即用。我很高兴花在一个组件上,但就是找不到一个好的!蓝色工具的例子也不是现成的。我还没有亲自尝试过widcomm的实现。至于多个设备,我不能肯定,因为我没有尝试,但据我所知,连接类型没有限制,所以您应该有几个同时的obex传输