小编han*_*ker的帖子

在Windows 10上为BLE GATT设备开发HID输入设备驱动程序

(这是来自MSDN论坛的一个交叉点,因为很长一段时间没有任何响应,我想我会在这里得到更好的答案.)

我有一个包含自定义GATT服务的BLE设备,我无法修改固件.我想从该服务中侦听GATT特征事件,并使Windows将它们作为HID报告使用,以使Windows将其识别为另一个设备.我该怎么做呢?

我进行了一些研究,发现以下信息:

我的问题是,这里需要什么方法来创建这个驱动程序?

  • 我是否需要创建两个驱动程序(虚拟HID驱动程序和GATT配置文件驱动程序),然后以某种方式将它们相互连接?
  • 我是否需要从虚拟HID驱动程序进行蓝牙LE API调用?
  • 我是否需要创建一个可以进行HID呼叫的GATT配置文件驱动程序?
  • 或完全不同的东西?

GATT配置文件驱动程序是否仍然允许在Windows 10上使用,因为它似乎不允许为其创建过滤器驱动程序BthLeEnum

更新

我真的很感激Alain花时间回答这个问题,因此我将他的答案标记为问题的答案; 但对我来说,这个问题还没有完全回答.看到问题已经超过10票,我认为应该得到更广泛的答案.可以改进/添加的要点是:

  • 建议背后的论证(例如为什么UMDF minidriver而不是VHF驱动程序,为什么要使用UWP蓝牙API需要使用cppwinrt而不是简单地使用我在研究中找到的C++蓝牙功能,如何编写GATT Profile驱动程序等等. ).没有这种论证,我不会从建议中学到很多东西.
  • 回答我的问题
  • 使用来自驱动程序的cppwinrt代码以及是否可以在那里访问这些API的示例.是否有任何限制(因为代码不会从appx运行)?Cppwinrt在这里作为新的东西,但我找不到任何在驱动程序的上下文中使用cppwinrt的文档.
  • 对我自己的研究有一些反思 - 目前的答案并不涉及我发现的好点与否.这种反思将帮助我更好地理解这个主题.

更新2

我想Alain推荐使用UMFF HID微型驱动器而不是VHF,因为VHF需要编写KMDF驱动程序.UMDF具有更容易调试(可在本地PC上调试),安全性(和签名)限制更少的优点,并且在驱动程序中存在错误时没有检查机器的风险.

更新3

为了能够创建一个注入RadialController事件的客户端应用程序(而不是必须编写一个对私有开发人员来说是一个非常高的障碍的驱动程序),我在Feedback Hub上发布了一个请求.如果您认为值得支持,请考虑投票.

c++ driver hid bluetooth-lowenergy windows-10

15
推荐指数
1
解决办法
1535
查看次数

PHP Tidy删除空格并插入换行符

在将其加载到DomDocument之前,我想使用PHP Tidy来确保我的xml有效.

但是,我不想让Tidy改变我的格式 - 我只希望它能修复像不平衡标签等问题.

可以在此页面上看到该问题的一个示例:http://www.tek-tips.com/viewthread.cfm?qid = 1654452

我自己的例子如下.

输入:( <ex><context>????<stress>?</stress>???</context> ??????<stress>?</stress>??? — <stress>aa</stress>ndeelhoudersvergadering</ex>已经是有效的xml)

预期输出:( 和<ex><context>????<stress>?</stress>???</context> ??????<stress>?</stress>??? — <stress>aa</stress>ndeelhoudersvergadering</ex> 之间有空格)</context>??????

实际产量:

<ex>
<context>????
<stress>?</stress>???</context>??????
<stress>?</stress>??? — 
<stress>aa</stress>ndeelhoudersvergadering</ex>
Run Code Online (Sandbox Code Playgroud)

(它删除了之间的空格</context>,??????这将使文本不可读,并在每个标记后插入换行符)

我的代码是:

function TidyXml($inputXml)
    {
        $config = array(
            'indent'         => false,
            'output-xml'     => true,
            'input-xml'     => true,
        );

        $tidy = new tidy();
        $tidy->parseString($inputXml, $config, 'utf8');
        $tidy->cleanRepair();
        $cleanXml = tidy_get_output($tidy);
        return $cleanXml;
    }
Run Code Online (Sandbox Code Playgroud)

我尝试改变了几个选项,但没有成功.

php xml whitespace space tidy

7
推荐指数
1
解决办法
2606
查看次数

如何使excel vba代码完全合格/如何规避运行时错误?

我正在编写一些VBA代码,在打开excel文件时动态设置某些图表的属性,比如数据范围.这是因为我用来从我的.Net项目导出Excel的库不完全支持图表属性.

我在这个文件中有4张图表和1张数据表.

但是,在第一次打开文件时,会显示以下错误:

Run-Time Error: '-2147417848 (80010108)':

Automation
The object invoked has disconnected from its clients.
Run Code Online (Sandbox Code Playgroud)

(另外,在第一次打开时,会显示一条警告,说该文件可能不安全,我手动必须允许打开,但我不确定这是否与此问题有任何关系)

此文件的后续打开不会触发错误.

我搜索了stackoverflow和论坛,发现了这篇Microsoft知识库文章

基于那里给出的建议,我试图使我的代码完全合格(例如使用Dim app As ApplicationDim wb As Workbook).但是,这并没有解决我的问题.

违规行标有**

我的问题是:

  1. 我没有让我的代码的某些部分完全合格吗?
  2. 是否有任何其他可能的原因导致此错误,如果是,它们如何解决?

我的代码(在ThisWorkbook对象中):

Option Explicit
Private Sub Workbook_Open()

Dim app As Application
Set app = Excel.Application
Dim wb As Workbook
Set wb = app.ThisWorkbook

Dim lastRow As Long, lastRowString As String
lastRow = wb.Sheets("NameOfDatasheet").UsedRange.Row - 1 + Sheets("NameOfDatasheet").UsedRange.Rows.Count 'Worksheets("NameOfDatasheet").Range("A2:G41").AutoFilter field:=1, Criteria1:="<>"

With wb.Charts("NameOfChart1")
.SetSourceData Source:=wb.Sheets("NameOfDatasheet").Range("A2:A" …
Run Code Online (Sandbox Code Playgroud)

excel vba runtime-error

5
推荐指数
1
解决办法
3459
查看次数

从.net标准类库中引用UWP库

我有一些项目的解决方案:

  • 客户端应用程序 - UWP项目
  • device sdk - UWP项目(因为蓝牙API)
  • 客户端应用程序 - ASP.Net Core 1.1针对.Net Core 2.0
  • 客户端应用插件
  • 一些具有共享模型和接口类的项目.

我想尽可能多地使用.net标准项目(对于共享项目,最好是插件),因为它们更轻量级,可以编辑而无需在Visual Studio中卸载它们.

从UWP项目引用.net标准1.4库很好,但是从.net标准1.4项目引用UWP项目会导致错误:

Project DeviceSDK is not compatible with netstandard1.4 (.NETStandard,Version=v1.4).
Project DeviceSDK supports: uap10.0.15063 (UAP,Version=v10.0.15063)
Run Code Online (Sandbox Code Playgroud)

这有什么解决方法吗?

c# .net-core uwp .net-standard

0
推荐指数
1
解决办法
805
查看次数