WINDOWS 如何在 Visual Basic (vb.net) 中列出所有蓝牙设备

How to list all Bluetooth devices in Visual Basic (vb.net) on WINDOWS

我对试图找到一个工作示例感到非常生气。是的,我是 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 或任何其他系统。参考 Microsoft 的网站寻求帮助也无济于事,因为他们没有提供 Visual Basic 中的示例,我只是不明白他们用来解释一切的语言,我只是一个简单的人,哦,示例可以需要作为项目下载。我只想要一个简单易用的示例代码,无需下载任何东西。

首先请修复这个bug

button_Click 事件在 UI 线程上运行。

LabRes.Text = "Searching devices..."

在方法完成之前,用户将看不到此文本。

添加这个

LabRes.Text = "Searching devices..."
application.doevents()

它允许 UI 在 运行 代码时更新。

获取范围内的蓝牙设备

Private Sub SurroundingSub()
    Dim client As BluetoothClient = New BluetoothClient()
    Dim items As List(Of String) = New List(Of String)()
    Dim devices As BluetoothDeviceInfo() = client.DiscoverDevicesInRange()

    For Each d As BluetoothDeviceInfo In devices
        items.Add(d.DeviceName)
    Next
End Sub

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

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

  1. 在此处转到 32Feet.Net 的 GitHub 页面:https://github.com/inthehand/32feet
  2. 下载“InTheHand.Net.Bluetooth - Bluetooth Classic”nuget 包
  3. 将“nupkg”文件解压缩到您选择的文件夹中
  4. 打开VB.Net
  5. 在菜单中导航到“Project\Add 项目参考...”
  6. 点击项目引用底部的“浏览”按钮window
  7. 在此路径“runtimes\win\lib\netcoreapp#.#”和select DLL“InTheHand.Net.Bluetooth.dll”
  8. 下浏览新下载和解压缩的 nuget 包文件夹

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

Imports InTheHand.Net.Sockets

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

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

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

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

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