CH9350 提供了控制键盘LED(就是 Caps Lock、Scroll Lock、 Num Lock) 的方法。不过非常遗憾的是对应的 DataSheet 语言不详,查阅了网上资料【参考1】【参考2】之后我感觉CH9350 可能是不断升级,所以这部分不是很确定。
最终经过实验,我手上的可以通过对CH9350 发送如下11 Bytes 长度的命令来实现:
0x57, 0xAB, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAC, 0x20
修改其中的 Byte[7] ,可以实现更改Led的目标。对应的,在 DataSheet有如下介绍:
编写一个测试程序,运行在 ESP32 C3 上:
#include <Arduino.h>
void setup() {
Serial.begin(115200);
Serial1.begin(115200, SERIAL_8N1, RX, TX);
}
char LEDbuffer[11] =
{ 0x57, 0xAB, 0x12, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0xAC, 0x20
};
byte Index = 0;
void loop() {
// 预留调试使用
while (Serial.available()) {
char c = Serial.read();
// 简单返回
if (c == '1') {
Serial.printf("RX:%d TX:%d\n", RX, TX);
Serial.println("Test Message");
}
//重启
if (c == '2') {
ESP.restart();
}
}
LEDbuffer[7]=Index;
Serial1.write(LEDbuffer, sizeof(LEDbuffer));
Index++;
if (Index == 8) {
Index = 0;
}
delay(1000);
}
工作的测试视频在下面的链接可以看到:
有兴趣的朋友可以试试。
参考:
- https://www.wch.cn/bbs/thread-69476-1.html “CH9350 如何設置鍵盤的NumLock/CapsLock/ScrollLock” WCH 官方论坛
- https://www.cnblogs.com/gooutlook/p/16805870.html 单片机读取键鼠数据串口