USB虚拟设备
+ -

Win10 x64虚拟设备之触摸屏

2021-08-09 302 57

前一段时间在本人整理了自己编写的USB虚拟驱动框架,在其基础上实现了虚拟键盘,鼠标的功能。
本节是继虚拟键盘鼠标的另一个虚拟USB设备-触摸屏
触摸屏设备是HID设备的一个小类,但是随着触摸设备使用的越来越广泛,这类设备也变地越来越重要。
触摸屏设备的原理和我们手机上的触摸屏原理一样,是在电脑屏幕上有一层薄膜,这种薄膜设备可以感应手指的按压效果,然后将按压的坐标位置上报给主机,主机可以通过这些上报的数据进行手势响应,并作用到主机的应用软件中。
USBIF官方我这里没有找到相应的示例报告描述符,所以本人在网上找到一份报告描述符,并使用该报告描述符进行虚拟触摸屏设备的开发。该触摸屏报告描述符的大概解释可见:http://www.usbzh.com/article/detail-122.html

虚拟触摸屏总线的编译和安装

整个工程使用VS2019和WDK10进行开发,该工程的目录可详见下图:
虚拟触摸屏

驱动编译后和部分工具、测试软件:

  • devcon.exe 驱动安装工具
  • install.bat 驱动安装批处理
  • UsbzhVTouch.cer 驱动测试数字证书
  • UsbzhVTouch.inf 虚拟触摸屏驱动INF文件
  • UsbzhVTouch.sys 虚拟触摸屏驱动文件
  • VTouchTest.exe 应用测试软件

虚拟触摸屏总线安装

使用管理员权限执行install.bat后,系统安装虚拟触摸屏驱动后,并不会立即自动创建虚拟touch设备,而是需要通过应用层的接口动态创建。

当然也可以动态销毁。这里和虚拟USB鼠标键盘驱动保持一致。

动态创建虚拟触摸屏设备后,在设备管理器如下图所示:
虚拟触摸屏在设备管理器

测试

使用本人开发的测试软件,点击TouchTest按钮,会在某个坐标一直下发按下按钮,在Windows桌面时会调出右键菜单。
测试软件

测试代码:

void CVMouseDlg::OnBnClickedButtonTochTest()
{
    Sleep(2000);

    UCHAR data[13] = { 0 };
    data[0] = 0xaa;
    data[1] = 0x21;
    data[2] = 0x00;
    data[3] = 0x00;
    data[4] = 0x01;
    data[5] = 0x00;
    data[6] = 0x01;
    data[7] = 0x10;
    data[8] = 0x00;
    data[9] = 0x10;
    data[10] = 0x00;
    data[11] = 0x0;
    data[12] = 0x0;

    ULONG rtn = 0;
    for (int i = 0; i < 300; i++)
    {
        data[3] = 0x060 + 0;
        data[5] = 0x060 + 0;
        m_usb.SetTouchData(data, 13, &rtn);
        Sleep(5);
    }

    m_usb.SetTouchData(data, 13, &rtn);
    data[1] = 0;  //up
}
欢迎光临USB中文网进行技术交流,本站微信技术群有200多位全国做USB,UAC,UVC等USB方面的技术开发者和专家,还有解决不了的USB问题?

0 篇笔记 写笔记

HID 触摸屏的报表描述符
讲道理,这个触摸屏的报告描述符是我从网上搜索的一段代码,这个触摸屏的报告内容本人也进行了测试。测试是通过本站编写的虚拟触摸屏驱动实现的。0x05, 0x0d, // USAGE_PAGE (Digitizers) 0 0x......
Windows下UVC虚拟摄像头的实现
最近在Windows10 x64环境下,开发了一个虚拟UVC摄像头驱动。确切的来说这不是摄像头驱动,而是一个虚拟USB总线驱动。使用该虚拟总线驱动使用应用软件通过IOCTL控制总线子设备的创建与卸载。驱动安装完成后,是一个单纯的USB虚拟总线。应用软件通过发送自定义IOCTL码IOCTL_BUSEN......
Win10使用虚拟USB鼠标实现自动挂机测试功能
昨天要测试一个软件不停的整机的功能:在整机软件中需要不停地点击某个软件的按钮,启动会议功能,然后隔一段时间后,需要再次呼出关闭按钮,并点击将该按钮停止会议,如此往复的操作。当然这些操作是需要人工操作点击软件界面的某些按钮实现的。本以为是一个很简单的东西,没想到还是弄出了花样。初始版本 - 脚本方......
Windows10下开发虚拟USB鼠标之枚举子设备失败(STATUS_DEVICE_DATA_ERROR)
之前发过一篇文章:Win10使用虚拟USB鼠标实现自动挂机测试功能(文章地址:http://www.usbzh.com/article/detail-476.html ) 使用的是虚拟驱动实现的一个虚拟USB鼠标,实现了产品的自动测试功能。生成的设备在设备管理器中如下:但在开发过程中,并不是一帆......
Windows下通过USB虚拟的键盘鼠标总结
哐哐铛铛的,终于把以前搞的虚拟键盘、鼠标的驱动代码重新整理完成,并且在此基础上将USB虚拟的键盘和鼠标整合到一个驱动中。将键盘和鼠标的代码合并在一起的原因很简单:第一是为了验证自己写的这个虚拟的总线的功能第二就是键盘一般和鼠标是联系在一起的,用键盘的地方大部也要用到鼠标。所以干脆将这两个设备合并......
Windows虚拟UAC麦克风增加特性单元的开发调试笔记
昨晚突然接到通知,需要增加对UAC麦克风设备音量增益的控制。我努力地回忆了去年12月份自己粗略地整理的UAC规范,发布于http://www.usbzh.com/article/forum-1.html想着今天完成应该是美好的周五,会心满意足地完成工作,然后美美地打卡下班。可没想到就这么一个简单的......
Win10 x64虚拟设备之触摸屏
前一段时间在本人整理了自己编写的USB虚拟驱动框架,在其基础上实现了虚拟键盘,鼠标的功能。本节是继虚拟键盘鼠标的另一个虚拟USB设备-触摸屏触摸屏设备是HID设备的一个小类,但是随着触摸设备使用的越来越广泛,这类设备也变地越来越重要。触摸屏设备的原理和我们手机上的触摸屏原理一样,是在电脑屏幕上有一层......
HID设备虚拟触摸屏上报的多点数据系统不响应
前一般时间在Windows10下使用USB驱动虚拟了一个触摸屏设备,上层软件按照HID报告述符的格式下发触摸屏数据给驱动,再由驱动将数据上交给系统,实现虚拟触摸屏的功能。今天,突发奇想,上次的报告描述符仅支持的是一个点触摸效果,今天保不实现了一下多点触摸效果,所以我通过在一个支持多点触摸屏的设备......
Windows支持多点的触摸屏的HID报告描述符
上次在Windows10 x64下实现了 虚拟触摸屏效果。原文见:Win10 x64虚拟设备之触摸屏http://www.usbzh.com/article/detail-513.html但是现在的大部分触摸屏都支持多点触摸,例如十指触摸(因为我们有十个手指头),本想着在原来的基础上只是增加上报的个......
Win10 x64下USB-UAC虚拟声卡扬声器的实现
去年的时候,使用portclass驱动模型在windows下虚拟了一个虚拟扬声器和虚拟麦克风。扬声器和麦克风在内部通过拓扑结构进行数据关联,即麦克风的数据的来源于扬声器,实现了这样的回环。最近突然有个需求,就是不需要麦克风,只要一个扬声器,即虚拟声卡。那怎么办呢?既然本人是专门做USB驱动开发的,在......
Windows下虚拟USB设备数据的读写请求调试笔记
到现在为止,本人已经在Windows下确切来说是Windows10 x64下开发了以下USB虚拟USB设备:USB虚拟UVC摄像头设备USB虚拟UAC麦克风设备USB虚拟HID键盘设备USB虚拟HID鼠标设备USB虚拟HID键盘鼠标复合设备USB虚拟HID单点触摸屏设备USB虚拟HID多点触摸屏......
Win10 x64下USB-UAC虚拟麦克风的实现
对于虚拟的UAC设备,实现了虚拟的UAC扬声器,总是想着再一个USB虚拟的UAC麦克风。因为这样,才算完美。本着完了完美的结果,自己又忍不住给自己找了一个活-USB虚拟麦克风虚拟麦克风的大体开发和USB虚拟扬声器类似,只是一个是输入设备,另一个是输出设备而已。所以参考UAC规范,基于UAC虚拟扬声......
USB中文网虚拟麦克风驱动程序视频演示
0.整个软件的框架如图1.安装虚拟麦克风由于本人机器处于是禁用驱动签名模式,所以会弹出签名询问对话框2.打开设备管理器可以看到虚拟的麦克风USBZH Microphone3.在音频控制面板打开设备,并使用扬声器监听该设备。这样麦克风如果有声音会通过扬声器播放出来。4.打开测试程序MicApp......
USB虚拟声卡扬声器的应用-多路扬声器同时发声
USB规范的分支之一就是音频设备,其对应的规范是UAC,即USB AUDIO CLASS。采用该规范我们可以免驱动的扬声器和麦克风设备。本人为了研究UAC的相关技术,使用驱动程序在windows下虚拟相关的USB虚拟设备。对于虚拟麦克风设备,可见本人文前几天写的文章:http://www.usbz......
USB虚拟鼠标功能演示
该功能是USB中文网的开发例程,其设计原理见:http://www.usbzh.com/article/detail-476.html使用驱动程序实现的是虚拟USB鼠标功能。鼠标的事件由应用应用层下发:当前完成的功能:鼠标指针的移动鼠标的点击事件动态创建和销毁鼠标设备支持WIN7,WIN10 ......
作者信息
USB中文网
Windows驱动开发,网站开发
好好学习,天天向上。
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!