串口轉HID鍵鼠功能芯片CH9329應用指南

概述

CH9329是一款串口轉USB HID設備功能芯片,根據不同的工作模式,HID設備可以識別為:USB鍵盤(pán)設備、USB鼠標設備或者自定義HID類(lèi)設備。接收串口數據,并自動(dòng)根據串口工作模式進(jìn)行數據解析,解析完成后按照HID類(lèi)設備規范,將數據打包通過(guò)USB口上傳給計算機。


image.png


特點(diǎn)

1、芯片出廠(chǎng)內置固件程序,無(wú)需進(jìn)行二次開(kāi)發(fā)。

2、支持Windows/Linux/安卓/macOS等操作系統,使用系統內置的鍵盤(pán)、鼠標、HID設備驅動(dòng)程序,無(wú)需額外安裝。

3、提供4種工作模式(單一鍵盤(pán)/鼠標/自定義HID功能,或幾個(gè)功能的復合)。

4、提供3種串口通信模式(協(xié)議傳輸模式/ASCII模式/透傳模式)。

5、支持USB設備信息、串口通信地址、鍵盤(pán)回車(chē)符等信息的配置。


工作模式

image.png

串口通信模式

image.png

USB鍵盤(pán)功能

芯片可以實(shí)現標準USB鍵盤(pán)功能,USB鍵盤(pán)包含普通按鍵和多媒體按鍵。通過(guò)接收串口數據實(shí)現模擬鍵盤(pán)按鍵的效果。

該功能常用于:掃碼槍、收銀機、小鍵盤(pán)、遠程控制等。


USB鼠標功能

芯片可以實(shí)現標準USB鼠標功能,USB鼠標包含相對鼠標和絕對鼠標。通過(guò)接收串口數據實(shí)現模擬鼠標的效果。

該功能常用于:硬件版按鍵精靈、遠程控制等。


自定義HID功能

此自定義非彼自定義,這里的自定義實(shí)際上是指HID的subclass和protocol均為0的設備類(lèi)型,并非是指用戶(hù)可以自定義類(lèi)別或HID報表格式等,把它比作一個(gè)不需要使用COM口的USB轉串口設備功能更形象些。

該功能常用于:USB轉串口雙向數據透傳(免驅HID方式),配合鍵鼠功能使用提供計算機的數據下傳通道。


常見(jiàn)Q&A

Q:如何選擇芯片工作模式?

A:各工作模式的適用場(chǎng)景:

模式0:多功能同時(shí)應用的場(chǎng)景(如使用鍵鼠功能時(shí)需要和計算機之前收發(fā)自定義數據)、需要多媒體鍵盤(pán)的場(chǎng)景、需要通過(guò)USB通道獲取/配置芯片參數的場(chǎng)景。

模式1:使用單一USB鍵盤(pán)功能,并且不使用多媒體鍵盤(pán),適用于不支持復合設備的老式計算機。

模式2:同時(shí)使用鍵盤(pán)和鼠標功能,且對Linux/Android/蘋(píng)果等操作系統的鼠標兼容性更好。

模式3:使用單一USB自定義HID功能,配合計算機軟件實(shí)現串口設備和計算機的雙向數據收發(fā),類(lèi)似于USB虛擬串口(COM口)應用,區別是看不到COM虛擬端口,而是直接用系統HID API和設備完成交互。


Q:如何選擇串口通信模式?

A:各串口通信模式的適用場(chǎng)景:

模式0:協(xié)議傳輸模式,此模式適用于至少2個(gè)功能同時(shí)應用的場(chǎng)景、需要通過(guò)串口通道獲取/配置芯片參數的場(chǎng)景。該模式功能最齊全,在不完全確定產(chǎn)品功能的前提下,建議優(yōu)先選用此模式作為默認模式。

模式1:ASCII碼模式,為USB鍵盤(pán)功能量身定做的簡(jiǎn)版按鍵傳輸模式,該模式會(huì )將通常的可見(jiàn)ASCII字符直接轉成按鍵的HID報表以及按鍵釋放的HID報表,轉換的字符主要包含:數字0~9,字母A~Z,空格和回車(chē)等。注:

不能轉換特殊按鍵,如:F1~F12,方向鍵,Shift和Ctrl按鍵等。

模式2:透傳模式,是指串口數據原封不動(dòng)的通過(guò)USB打包上傳給計算機,該模式適用于自定義HID模式,實(shí)現類(lèi)似USB轉虛擬串口的應用效果。


Q:協(xié)議傳輸模式鍵盤(pán)包怎么填充?

A:需要使用的命令碼:

image.png

這里以USB鍵盤(pán)普通數據為例:


image.png

串口報文的核心數據就是中間的8個(gè)字節的內容,這8個(gè)數據芯片提取后會(huì )直接通過(guò)USB打包上傳給計算機,內容格式:

image.png

對于字節3~字節8的對應鍵值,可查看文檔附錄的“CH9329 鍵碼表”

image.png

如:數字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字節包,傳輸的時(shí)候再按照協(xié)議要求,添加包頭,命令碼,地址碼和自動(dòng)計算得到的累加和等就可以實(shí)現鍵盤(pán)控制了。

舉例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:模擬先同時(shí)按下“左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

除以上方法外,開(kāi)發(fā)時(shí)還可以用其他方式便捷確定需要的鍵盤(pán)包內容,使用USB分析儀軟件(USB2.0 Monitor或者BusHound等工具)抓取計算機上的USB鍵盤(pán)相應按鍵按下時(shí)的USB包,然后復制下來(lái)使用即可。


Q:協(xié)議傳輸模式鼠標包怎么填充?

A:需要使用的命令碼:

image.png

這里以USB相對鼠標為例:

image.png

image.png


協(xié)議文檔介紹比較全面,可直接參考,此外開(kāi)發(fā)時(shí)同樣可以使用USB分析儀軟件(USB2.0 Monitor或者BusHound等工具)抓取計算機上的USB鼠標操作時(shí)的USB包,然后復制下來(lái)使用即可。


Q:使用鍵盤(pán)功能遇到部分機器鍵碼上傳不正確?

A:如果遇到傳多個(gè)鍵盤(pán)碼有碼丟失、重復或干脆不響應的問(wèn)題,可從以下幾個(gè)方面排查:

1、上傳時(shí)USB鍵盤(pán)設備是否在線(xiàn),可通過(guò)設備管理器的“USB鍵盤(pán)”列表查看是否有CH9329對應的KeyBoard,右擊“屬性”->“詳細信息”-》“硬件ID”,芯片默認VID是:0x1A86。


2、檢查串口數據和USB數據是否符合設計預期,如果是協(xié)議傳輸模式,檢查每個(gè)串口數據包的回復內容是否正確。


3、若串口數據和USB數據均未報錯,嘗試放慢上傳間隔。
(1)、在A(yíng)SCII碼模式下,控制串口字符間的發(fā)送間隔,建議區間為5~50ms
(2)、在協(xié)議傳輸或透傳模式下,控制每個(gè)鍵盤(pán)包的包間隔,建議區間為10~100ms


4、若主機端收不到任何數據,則原因可能為:部分主機只能使用固定VID和PID的鍵盤(pán),此時(shí)要用配置工具修改CH9329的USB ID信息和原有設備相同。


5、若遇到上傳的鍵盤(pán)數據中若存在連續相同鍵值,只顯示第一個(gè)數據,后面重復的不顯示。比如:123444567778,只顯示:12345678,此時(shí)原因為:

該部分機器對于連續鍵值上傳時(shí)的釋放包有特殊要求,此時(shí)ASCII模式(一個(gè)串口對應2個(gè)鍵盤(pán)包:一個(gè)按鍵包和一個(gè)釋放包)無(wú)法適用,需要使用協(xié)議傳輸模式,在此模式下發(fā)包更改為:連續上傳鍵值按鍵包,上傳完成后最后再傳一個(gè)釋放包。


6、一個(gè)定位問(wèn)題的便捷方式:出現兼容性問(wèn)題后,若機器有正??捎玫膾叽a槍等設備,可以使用USB總線(xiàn)分析儀或其他USB抓包軟件抓取掃碼槍和電腦之間的通訊數據包,然后使用CH9329模擬該設備發(fā)包規律上傳。


不支持單一鼠標模式嗎


您好,CH9329不支持單一鼠標模式。


只有登錄才能回復,可以選擇微信賬號登錄
97精品依人久久久大香线蕉97-亚洲欧美日韩一区二区三区-国产亚洲欧美精品久久久-久久99精品久久久大学生-亚洲成a人片在线不卡一二三区 97精品依人久久久大香线蕉97-亚洲欧美日韩一区二区三区-国产亚洲欧美精品久久久-久久99精品久久久大学生-亚洲成a人片在线不卡一二三区