首页 > 解决方案 > 如何在 WINDOWS 上的 Visual Basic (vb.net) 中列出所有蓝牙设备

问题描述

我对试图找出一个可行的例子感到非常生气。是的,我是 VB.Net 的新手。我很早以前就使用过VB6。我只是不能让那件事做我想做的事。

我的项目:我完全厌倦了使用 Steam 和其他需要配对和非常困难或长时间配置来从非 Xinput 控制器模拟 XBox 控制器的第三方应用程序。我买了一个 RegeMoudal Pro 控制器,当然,Windows 不会读取任何按钮条目,我需要使用第三方应用程序。这些应用程序的问题是它们需要太多的配置。我只想将控制器的输入转换为 Windows 可检测输入,仅此而已。

所以,既然我不能在 FASM 做这样一个复杂的项目而不到处伤脑筋,我选择了简单的方法,老派。我花了 2 天时间才弄清楚我必须参考 UWP 和一堆其他东西。现在,我对自己说,如果我至少得到蓝牙连接的设备列表,我将能够从某个地方开始,但不行。无论我发现什么,除了我几乎不理解的非常复杂的代码之外,没有人可以以干净的方式使用任何 Visual Basic 代码。

有人可以帮我至少找出如何在蓝牙上列出所有设备。我不在乎它们是否已连接,我只想列出设备。

这是我得到的。一个带有 1 个按钮和 1 个标签的简单表单。我知道,这只是有一堆错误。

Imports Windows.Devices.Bluetooth
Imports Windows.Devices.Enumeration

Public Class FrmMain

    Private Sub BouGetdev_Click(sender As Object, e As EventArgs) Handles BouGetDev.Click

        Dim odevices = New DevicePicker
        Dim odev As DeviceInformation
        Dim sdevices As String

        sdevices = ""
        LabRes.Text = "Searching devices..."

        For Each odev In odevices
            sdevices = sdevices & Chr(13) & odev.GetType.Name
        Next

    End Sub
End Class

我只是不知道如何完成这个简单的任务,所以一个温和的帮助会很好。

我感到气馁,因为 Windows 没有捕捉到我的控制器的任何输入被检测为蓝牙 Pro 控制器,但是一个简单的网页确实捕捉到了每一个输入,所以我很生气,因为我很长时间以来一直在等待这个控制器,因为 XBOX ONE 控制器严重操纵杆问题并让我愤怒地退出游戏,因为操纵杆在释放它时会向后轻轻敲击,所以这些 Xbox 控制器现在在我的黑名单上,因为即使微软将它发回给我,它也有完全相同的问题,所以我得到了退款。

现在,我想创建自己版本的 Pro Controller 到 Xbox Controller 输入应用程序。我坚持,Visual Basic 代码,而不是 C++ 或 C#。这适用于 WINDOWS,而不是 android 或任何其他系统。而且参考微软的网站帮助也无济于事,因为他们没有提供Visual Basic的示例,我只是不懂他们用来解释一切的语言,我只是一个简单的人,哦,示例可以需要作为项目下载。我只希望无需下载任何东西就可以轻松轻松地获得示例代码。

标签: windowsvb.netlistbluetooth

解决方案


因此,在对 VB 进行了如此多的尝试并尝试进行搜索之后。我终于找到了如何在 Visual Basic (VB.Net) 中列出蓝牙设备。

首先,您需要 32Feet.Net。我遇到了 NuGet 问题。我完全不知道那是什么。经过搜索,我发现使用 7zip 或其他类似应用程序可以简单地解压缩 nuGet 包。因此,您需要执行以下步骤来准备 Visual Basic aka VB.Net 以使用蓝牙设备。

  1. 在这里转到 32Feet.Net 的 GitHub 页面:https ://github.com/inthehand/32feet
  2. 下载“InTheHand.Net.Bluetooth - 蓝牙经典”nuget 包
  3. 在您选择的文件夹中解压缩“nupkg”文件
  4. 打开 VB.Net
  5. 在菜单中导航到“Project\Add a project reference...”
  6. 单击项目参考窗口底部的“浏览”按钮
  7. 在此路径“runtimes\win\lib\netcoreapp#.#”下浏览新下载并解压缩的 nuget 包文件夹,然后选择 DLL“InTheHand.Net.Bluetooth.dll”

现在您将能够使用蓝牙功能。接下来,我们需要导入这些函数,以便在您编写代码时可以使用它们,因此您需要将此行放在项目的最开始:

Imports InTheHand.Net.Sockets

现在完成了,您可以列出您的蓝牙设备。我将解释我是如何制作示例窗口的。我放了 1 个按钮、1 个标签和 1 个计时器对象。当使用“Application.DoEvents()”按照上面提到的解决方案更改标签时,我的标签仍然没有更改文本。所以我使用了一个带有计时器的旧 VB6 技巧。我只是禁用了一个计时器对象,当点击按钮时,我启用了这个执行我想要的动作的计时器。1 非常重要的事情,一旦你开始了你的定时器动作,在执行这个定时器内的任何任务之前立即禁用你的定时器,否则你的函数将以你的定时器滴答的速度重复。

所以这是我的完整代码,它在 Visual Basic (VB.Net) 中列出了 y 计算机上的蓝牙设备的名称。

Imports InTheHand.Net.Sockets

Public Class FrmMain

    Private Sub BouGetdev_Click(sender As Object, e As EventArgs) Handles BouGetDev.Click

        LabRes.Text = "Searching devices..."
        TmrBTScan.Enabled = True
        BouGetDev.Enabled = False

    End Sub

    Private Sub TmrBTScan_Tick(sender As Object, e As EventArgs) Handles TmrBTScan.Tick

        Dim bt_client As BluetoothClient = New BluetoothClient()
        Dim odevices As BluetoothDeviceInfo() = bt_client.DiscoverDevices().ToArray()
        Dim odev As BluetoothDeviceInfo
        Dim sdevices As String = ""
        Dim schr = ""

        TmrBTScan.Enabled = False

        For Each odev In odevices
            sdevices = sdevices & schr & odev.DeviceName
            schr = Chr(10) & Chr(13)
        Next

        LabRes.Text = sdevices
        BouGetDev.Enabled = True

    End Sub
End Class

这应该列出所有蓝牙设备的名称。至少,它对我有用,我希望这可以帮助那些正在寻找非常明确的步骤来下载什么、安装什么、获取什么、导航到哪里、哪些文件和代码行的其他人。很难获得完整的完整说明,所以我希望这会有所帮助。

感谢那些在这里帮助我的人。我不得不做一些深入的搜索,但至少我现在可以开始我的项目了。


推荐阅读