android+串口+键盘,串口转USB HID键盘鼠标方案

本方案基于串口转标准USB HID设备芯片CH9328/CH9329,无需编程,可在用户端轻松模拟键盘鼠标动作。芯片接收串口数据并转换为键盘与鼠标数据上传给计算机。CH9329功能更强大,可模式切换。该方案功能特点丰富,应用于定制键盘、扫码支付、主机控制等场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方案概述

本方案的实现基于串口转标准USB HID设备芯片CH9328/CH9329,芯片根据不同的工作模式,可以在计算机上被识别为标准的USB键盘、鼠标设备。芯片无需编程,可以在用户端轻松实现模拟键盘鼠标动作。芯片接收符合其数据格式的串口数据,并自动将其转换为键盘与鼠标数据上传给计算机。

CH9328只具备单一模拟键盘的功能,CH9329可以看作是CH9328的升级版,可以单芯片实现模拟键盘+相对鼠标+绝对鼠标的功能,且可根据实际需要进行模式切换。

c3d381ee0f8e395c32cff9d2166cccec.png

功能特点

支持5V和3.3V模式,内置晶振;

默认9600bps,支持各种常用波特率,且可通过工具修改;

多种芯片工作模式与串口通信模式,应用灵活;

支持普通键盘、多媒体键盘、全键盘功能;

鼠标支持相对鼠标和绝对鼠标功能;

支持USB厂商ID、设备ID及字符串信息的配置;

兼容各种操作系统,包括Windows/Android/macOS/Linux等;

应用场景

1、  定制键盘

利用此方案,客户可以方便定制出各类行业专用键盘、密码键盘、甚至中文键盘等,应用范围广阔;

2、  扫码与移动支付

使用模拟键盘功能,可应用于扫码枪、商场扫码移动支付。目前该方案也已在国内各大商超应用成熟;

3、  主机控制

实现类似键鼠精灵之类的操作帮助主机完成各种特定功能的操作

参考设计

c437aa336671e6509ed0d646e349032a.png

STM32F103C8 Serial(UART) to USB HID Keyboard Mouse 串口 USB键盘鼠标 (1) 使用Composite Device 组合(复合)设备 (1.1) 1个Device -> 1个 Configuation -> 2个Interfance (Keyboard & Mouse) (1.2) Keyboard Interfance -> HID (boot mode) -> 2个Endpoint(IN_0x81 & OUT_0x01) -> KeyboardReportDescriptor(不使用Report ID) (1.3) Mouse Interfance -> HID (boot mode) -> 1个Endpoint(IN_0x82) -> MouseReportDescriptor(不使用Report ID) (1.4) 使用HID boot模式, 不使用Report ID, 以便兼容在 计算器设定BIOS模式 中的操作 (2) 串口接收 命令 (2.1) UART协议: 115200, n, 8, 1 (2.2) 1帧发送字符串格式, 以 '{'开始; '}'结束; ','分隔. 共9个10进制数字 例如: {1,2,3,4,5,6,7,8,9} (2.3) 第9位 区分 Keyboard(64) 或是 Mouse(128) 命令 例如: {0,0,0,0,0,0,0,0,64} --- 发送Keyboard命令 {0,0,0,0,0,0,0,0,128} --- 发送Keyboard命令 (3) 发送Keyboard键盘命令时 : 第1~8位 分别如下 (3.1) 第1位 : Key_Release = 0x00, Left_Control = 0x01, Left_Shift = 0x02, Left_Alt = 0x04, Left_GUI = 0x08, Right_Control = 0x10, Right_Shift = 0x20, Right_Alt = 0x40, Right_GUI = 0x80, 例如: {8,0,0,0,0,0,0,0,64} --- 发送 Win_Key键 {128,0,0,0,0,0,0,0,64} --- 发送 WinApp_Key键 {32,0,0,0,0,0,0,0,64} --- 发送 右Shift键 (3.2) 第2位 : 保留,不使用,一律填0 (3.3) 第3~8位 : 可以同时发送6个Keyboard按键 例如: {0,0,4,5,6,7,8,9,64} --- 发送 'abcdef'键 {2,0,4,5,6,7,8,9,64} --- 按住 左Shift 发送 'abcdef'键 => 'ABCDEF' {0,0,0,5,0,7,0,9,64} --- 发送 'bdf'键 (0表示 无按键) 按键码 可参阅: (HID Usage ID) http://download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/translate.pdf https://www.hiemalis.org/~keiji/PC/scancode-translate.pdf https://gist.github.com/MightyPork/6da26e382a7ad91b5496ee55fdc73db2 http://www.usb.org/developers/hidpage/Hut1_12v2.pdf (4) 发送Mouse鼠标命令时 : 第1~8位 分别如下 (4.1) 第1位 : Button_Release = 0x00, Left_Button = 0x01, Right_Button = 0x02, Mid_Button = 0x04, 例如: {1,0,0,0,0,0,0,0,128} --- 点击 左键 {2,0,0,0,0,0,0,0,128} --- 点击 右键 {4,0,0,0,0,0,0,0,128} --- 点击 中键 (4.2) 第2~4位 : 移动(X,Y), 滚轮(Wheel) X: -127~127:左右移动鼠标 Y: -127~127:上下移动鼠标 Wheel: -127~127:上下动滚轮 例如: {0,20,-10,0,0,0,0,0,128} --- 鼠标 右移20,上移10 {0,0,0,-30,0,0,0,0,128} --- 滚轮-30 (4.2) 第5~8位 : 保留,不使用,一律填0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值