串口转HID键鼠功能芯片CH9329应用指南

news2024/11/17 15:42:12

概述

CH9329是一款串口转USB HID设备功能芯片,根据不同的工作模式,HID设备可以识别为:USB键盘设备、USB鼠标设备或者自定义HID类设备。接收串口数据,并自动根据串口工作模式进行数据解析,解析完成后按照HID类设备规范,将数据打包通过USB口上传给计算机。

特点

  • 芯片出厂内置固件程序,无需进行二次开发。
  • 支持Windows/Linux/安卓/macOS等操作系统,使用系统内置的键盘、鼠标、HID设备驱动程序,无需额外安装。
  • 提供4种工作模式(单一键盘/鼠标/自定义HID功能,或几个功能的复合)。
  • 提供3种串口通信模式(协议传输模式/ASCII模式/透传模式)。
  • 支持USB设备信息、串口通信地址、键盘回车符等信息的配置。

工作模式

工作模式功能说明
0USB键盘+USB鼠标+自定义HID
1USB键盘
2USB键盘+USB鼠标
3自定义HID

串口通信模式

串口通信模式功能说明
0协议传输模式
1ASCII模式
2透传模式

USB键盘功能

芯片可以实现标准USB键盘功能,USB键盘包含普通按键和多媒体按键。通过接收串口数据实现模拟键盘按键的效果。

该功能常用于:扫码枪、收银机、小键盘、远程控制等。

USB鼠标功能

芯片可以实现标准USB鼠标功能,USB鼠标包含相对鼠标和绝对鼠标。通过接收串口数据实现模拟鼠标的效果。

该功能常用于:硬件版按键精灵、远程控制等。

自定义HID功能

此自定义非彼自定义,这里的自定义实际上是指HID的subclass和protocol均为0的设备类型,并非是指用户可以自定义类别或HID报表格式等,把它比作一个不需要使用COM口的USB转串口设备功能更形象些。

该功能常用于:USB转串口双向数据透传(免驱HID方式),配合键鼠功能使用提供计算机的数据下传通道。

常见Q&A

Q:如何选择芯片工作模式?

A:各工作模式的适用场景:

模式0:多功能同时应用的场景(如使用键鼠功能时需要和计算机之前收发自定义数据)、需要多媒体键盘的场景、需要通过USB通道获取/配置芯片参数的场景。

模式1:使用单一USB键盘功能,并且不使用多媒体键盘,适用于不支持复合设备的老式计算机。

模式2:同时使用键盘和鼠标功能,且对Linux/Android/苹果等操作系统的鼠标兼容性更好。

模式3:使用单一USB自定义HID功能,配合计算机软件实现串口设备和计算机的双向数据收发,类似于USB虚拟串口(COM口)应用,区别是看不到COM虚拟端口,而是直接用系统HID API和设备完成交互。

Q:如何选择串口通信模式?

A:各串口通信模式的适用场景:

模式0:协议传输模式,此模式适用于至少2个功能同时应用的场景、需要通过串口通道获取/配置芯片参数的场景。该模式功能最齐全,在不完全确定产品功能的前提下,建议优先选用此模式作为默认模式。

模式1:ASCII码模式,为USB键盘功能量身定做的简版按键传输模式,该模式会将通常的可见ASCII字符直接转成按键的HID报表以及按键释放的HID报表,转换的字符主要包含:数字0~9,字母A~Z,空格和回车等。注:

不能转换特殊按键,如:F1~F12,方向键,Shift和Ctrl按键等。

模式2:透传模式,是指串口数据原封不动的通过USB打包上传给计算机,该模式适用于自定义HID模式,实现类似USB转虚拟串口的应用效果。

Q:协议传输模式键盘包怎么填充?

A:需要使用的命令码:

这里以USB键盘普通数据为例:

串口报文的核心数据就是中间的8个字节的内容,这8个数据芯片提取后会直接通过USB打包上传给计算机,内容格式:

字节1字节2字节3字节4字节5字节6字节7字节8
控制键0x00键1键2键3键4键5键6

对于字节3~字节8的对应键值,可查看文档附录的“CH9329 键码表”

如:数字1~0对应HID Code:0x1E~0x27,如果需要模拟按键1,则8字节内容为:

键1按下:{0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00}

按键释放:{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}

确认了中间的8字节包,传输的时候再按照协议要求,添加包头,命令码,地址码和自动计算得到的累加和等就可以实现键盘控制了。

举例1:模拟"A"键先按下,再释放  
    串口下传: 57 AB 00 02 08 00 00 04 00 00 00 00 00 10
    芯片上传: 57 AB 00 82 01 00 85
  
    串口下传: 57 AB 00 02 08 00 00 00 00 00 00 00 00 0C
    芯片上传: 57 AB 00 82 01 00 85
        
举例2:模拟先同时按下“左Shift”+“A”键,再释放:
    串口下传: 57 AB 00 02 08 02 00 04 00 00 00 00 00 12
    芯片上传: 57 AB 00 82 01 00 85    
    
    串口下传: 57 AB 00 02 08 00 00 00 00 00 00 00 00 0C
    芯片上传: 57 AB 00 82 01 00 85

除以上方法外,开发时还可以用其他方式便捷确定需要的键盘包内容,使用USB分析仪软件(USB2.0 Monitor或者BusHound等工具)抓取计算机上的USB键盘相应按键按下时的USB包,然后复制下来使用即可。

Q:协议传输模式鼠标包怎么填充?

A:需要使用的命令码:

这里以USB相对鼠标为例:

协议文档介绍比较全面,可直接参考,此外开发时同样可以使用USB分析仪软件(USB2.0 Monitor或者BusHound等工具)抓取计算机上的USB鼠标操作时的USB包,然后复制下来使用即可。

Q:使用键盘功能遇到部分机器键码上传不正确?

A:如果遇到传多个键盘码有码丢失、重复或干脆不响应的问题,可从以下几个方面排查:

1、上传时USB键盘设备是否在线,可通过设备管理器的“USB键盘”列表查看是否有CH9329对应的KeyBoard,右击“属性”->“详细信息”-》“硬件ID”,芯片默认VID是:0x1A86。

2、检查串口数据和USB数据是否符合设计预期,如果是协议传输模式,检查每个串口数据包的回复内容是否正确。

3、若串口数据和USB数据均未报错,尝试放慢上传间隔。
(1)、在ASCII码模式下,控制串口字符间的发送间隔,建议区间为5~50ms
(2)、在协议传输或透传模式下,控制每个键盘包的包间隔,建议区间为10~100ms

4、若主机端收不到任何数据,则原因可能为:部分主机只能使用固定VID和PID的键盘,此时要用配置工具修改CH9329的USB ID信息和原有设备相同。

5、若遇到上传的键盘数据中若存在连续相同键值,只显示第一个数据,后面重复的不显示。比如:123444567778,只显示:12345678,此时原因为:

该部分机器对于连续键值上传时的释放包有特殊要求,此时ASCII模式(一个串口对应2个键盘包:一个按键包和一个释放包)无法适用,需要使用协议传输模式,在此模式下发包更改为:连续上传键值按键包,上传完成后最后再传一个释放包。

6、一个定位问题的便捷方式:出现兼容性问题后,若机器有正常可用的扫码枪等设备,可以使用USB总线分析仪或其他USB抓包软件抓取扫码枪和电脑之间的通讯数据包,然后使用CH9329模拟该设备发包规律上传。
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1140018.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用DBSyncer实现增量Mysql到Mysql的数据同步_DBSyncer1.2.4版本---数据同步之DBSyncer工作笔记006

之前都是用来postgresql到mysql的同步,需要配置postgresql的复制槽,对于mysq来说,需要配置: mysql启用binlog: https://gitee.com/ghi/dbsyncer/wikis/%E6%93%8D%E4%BD%9C%E6%89%8B%E5%86%8C/%E6%97%A5%E5%BF%97%E9%85%8D%E7%BD%AE%EF%BC%88%E6%95%B0%E6%8D%AE%E6%BA%90%EF%B…

基于springboot实现网上书城平台管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现网上书城平台管理系统演示 摘要 在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括网上书城管理系统的网络应用,在国外网上书城管理系统已经是很普遍的方式,不过国内的书城管理系统可…

GT-Works3 软件和 三菱GX-works2 GXworks3 程序设计软件的联机仿真

下面这个链接的视频教程可以使用与GT-Works3 软件和 GX-works2 GXworks3 程序设计软件的联机仿真。 简单的仿真起来非常方便。 链接: 三菱GX-Developer与三菱GT-Designer3使用及联机仿真 仿真画面:

上门预约上门洗衣洗鞋店管理软件;

洗衣洗鞋店干洗店管理软件。闪站侠洗衣软件。是一款优秀的洗衣管理系统。支持拍照功能。支持各种会员管理。支持小票和报表打印。功能强大。操作简单。上手容易。有多个案例,可以来体验!

移动端ViT新利器!苹果提出稀疏专家混合模型Mobile V-MoEs

文章链接:https://arxiv.org/abs/2309.04354 最近,专家混合模型MoE受到了学术界和工业界的广泛关注,其能够对任意输入来激活模型参数中的一小部分来将模型大小与推理效率分离,从而实现模型的轻量化设计。目前MoE已经在自然语言处理…

vivo自研AI大模型即将问世,智能手机行业加速迈向AI时代

当前,以大模型为代表的人工智能技术已发展为新一轮科技革命和产业变革的重要驱动力量,被视作推动经济社会发展的关键增长极。 AI大模型潮起,千行百业走向百舸争流的AI创新应用期,前沿信息技术向手机、PC、车机等消费级终端加速渗…

基于Java的电影院订票管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding) 代码参考数据库参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

麒麟KYLINOS通过命令行配置kysec的防火墙

原文链接:麒麟KYLINOS通过命令行配置kysec的防火墙 hello,大家好啊,今天给大家带来一篇使用命令行配置kysec的防火墙的文章,通过本篇文章的学习,大家可以了解到图形化界面中的防火墙信息是如何生成的,为后期…

修改谷歌浏览器标签页名字

1. 背景 在开发过程中,有时我们会对同一个网站打开很多的浏览器标签页,比如 百度首页 页面,用来同时保存多个开发窗口,多个标签页内有不同的内容,但是多个标签页的名称是根据网站自动提取的,完全一样&…

Leetcode. 2866.美丽塔II

要求O(N)复杂度内解决,考虑单调栈,这个题很像经典的美丽度的那个单调栈的模板题 对有每一个位置,考虑右边能扩展到哪来?不如直接从末尾来倒着看,发现从末尾需要维护一个单调增的单调栈&#xff…

Redis | 数据结构(03)链表

大家最熟悉的数据结构除了数组之外,我相信就是链表了。 Redis 的 List 对象的底层实现之一就是链表。C 语言本身没有链表这个数据结构的,所以 Redis 自己设计了一个链表数据结构。 链表节点结构设计 先来看看「链表节点」结构的样子: type…

nvm下node安装:node环境变量配置

1. 查看所有可安装的版本 nvm list available 2. 查看本地已经安装的所有版本 nvm list 3. 安装,命令中的版本号(可指定版本) nvm install 16.15.1 4. 使用指定node版本 nvm use 16.15.1 5. 卸载命令 nvm uninstall 16.15.1 6. 查看…

基于Java的蛋糕甜品商店管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding) 代码参考数据库参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

浅谈安科瑞可编程电测仪表在老挝某项目的应用

摘要:本文介绍了安科瑞多功能电能表在老挝某项目的应用。AMC系列交流多功能仪表是一款专门为电力系统、工矿企业、公用事业和智能建筑用于电力监控而设计的智能电表。 Abstract:This article introduces the application of the multi-function energy …

第二证券:基本面改善预期强化 机构聚焦科技成长

沪指日前迎来“三连涨”。10月26日,上证指数、深证成指和创业板指全部收红,分别收涨0.48%、0.40%、0.65%。此前的两个交易日,上证指数、深证成指也均收涨,创业板指24日涨幅也达到了0.85%。 从近期密布发布的策略报告来看&#xf…

如何解决hadoop文件无法浏览问题“Failed to retrieve data from /webhdfs/v1/?op=LISTSTATUS: Server Error“

搭建好了hadoop环境后,namenode、datanode看着都是正常的。但是当点到browser the file system时,结果报错了,报错的内容是“Failed to retrieve data from /webhdfs/v1/?opLISTSTATUS: Server Error“. 在解决这个问题上,我走了…

车载总线介绍-CAN

车辆内部网络通信是指车辆内部各个电子控制单元(ECU)之间进行数据传输和通信的过程。现代汽车包含多个ECU,每个ECU负责特定的功能,例如整车控制VCU、发动机控制EMS、制动系统ESC、转向系统EPS、驾驶辅助系统、车身控制系统及空调系…

王道计网:数据链路层

一、导论 将网络层的数据报分组封装成帧。 本质上是数据链路层封装之后,在物理层传输bit流,中间站点又会向上到数据链路层,这是一个实际过程,但是在单独考虑数据链路层时,我们可以忽略经过的物理层,直接认为…

SpringSecurity 认证实战

一. 项目数据准备 1.1 添加依赖 <dependencies><!--spring security--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency><!--web起步依赖-…

汽车行驶性能的主观评价方法(2)-驾驶员的任务

人&#xff08;驾驶员&#xff09;-车辆-环境闭环控制系统 驾驶过程中&#xff0c;驾驶员承担着操纵车辆和控制车辆的任务。驾驶员在不知不觉中接受了大量光学、声学和动力学信息并予以评价&#xff0c;同时不断地通过理论值和实际值的比较来完成控制作用&#xff08;图 2.1&a…