windows - 如何在 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的示例,我只是不懂他们用来解释一切的语言,我只是一个简单的人,哦,示例可以需要作为项目下载。我只希望无需下载任何东西就可以轻松轻松地获得示例代码。
解决方案
因此,在对 VB 进行了如此多的尝试并尝试进行搜索之后。我终于找到了如何在 Visual Basic (VB.Net) 中列出蓝牙设备。
首先,您需要 32Feet.Net。我遇到了 NuGet 问题。我完全不知道那是什么。经过搜索,我发现使用 7zip 或其他类似应用程序可以简单地解压缩 nuGet 包。因此,您需要执行以下步骤来准备 Visual Basic aka VB.Net 以使用蓝牙设备。
- 在这里转到 32Feet.Net 的 GitHub 页面:https ://github.com/inthehand/32feet
- 下载“InTheHand.Net.Bluetooth - 蓝牙经典”nuget 包
- 在您选择的文件夹中解压缩“nupkg”文件
- 打开 VB.Net
- 在菜单中导航到“Project\Add a project reference...”
- 单击项目参考窗口底部的“浏览”按钮
- 在此路径“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
这应该列出所有蓝牙设备的名称。至少,它对我有用,我希望这可以帮助那些正在寻找非常明确的步骤来下载什么、安装什么、获取什么、导航到哪里、哪些文件和代码行的其他人。很难获得完整的完整说明,所以我希望这会有所帮助。
感谢那些在这里帮助我的人。我不得不做一些深入的搜索,但至少我现在可以开始我的项目了。
推荐阅读
- django - 如何代理 Web 请求并准确转发
- javascript - 在 WebExtension 中生成 HTML 会导致 `this.mDialog is null` 和 `can't access dead object`
- python - beautifulsoup4 python 处理解析的数据
- tomcat - AWS Application Load Balancer 443 后面的 tomcat 8080
- amazon-web-services - 使用 DynamoDb、Lambda、Api 网关将多个地图添加到列表
- elasticsearch - Elasticsearch 查询最短匹配
- ruby-on-rails - 如何让 Rails 路由器从内容中动态选择控制器?
- python - 当 Python 写入 CSV 时,脚本在 csv 文件中的 try / except 块中插入新行
- javascript - javascript:作为参数传递时设置不正确的变量
- c++ - 尝试膨胀 png IDAT 块时出现 Z_DATA_ERROR