当前位置: 首页 > news >正文

KCOM4串口转键鼠控制线测试说明

1.KOCM4介绍

KCOM4是一款最新开发的串口转键盘鼠标控制线,采用32位内核,最大60Mhz的工作频率,完美适用于游戏挂机等应用场景(如果是用在工作电脑控制或展厅电脑控制推荐CH9329双头线)。KCOM4支持普通键盘、相对鼠标、轨迹移动、通信加密修改全部硬件信息、固件升级等功能。KCOM4的所有硬件信息是从一套真实键鼠设备抓包来的,不管从哪里看都是和真实键鼠一模一样。串口通信配置:波特率-115200,停止位-1,数据位-8,校验位-无。使用KCOM4的基本技能是能会发串口16进制数据,并且会2进制和16进制数的转换。

什么是普通键盘?多媒体键盘?相对鼠标?绝对鼠标?

普通键盘:支持所有多功能键(ctrl/alt/shift)+6个普通按键(a/b/1/2/,/.)同时按下;

多媒体键盘:静音、音量+、音量-、关机、休眠、唤醒、计算器等等;

相对坐标鼠标:鼠标移动时是根据光标当前位置进行移动,例如当前位置为(100,100),向右移动50像素,光标就会移动到(150,100);

绝对坐标鼠标:鼠标可以精准移动到任何指定坐标,不管当前光标在哪里;绝对坐标需要知道屏幕分辨率才能精准移动。

产品链接:https://item.taobao.com/item.htm?spm=a21dvs.23580594.0.0.4fee645e4fEvj2&ft=t&id=729839977151

KCOM4资料下载链接:https://pan.baidu.com/s/1AVg2PTXOBhKiTR2SLPVDHA?pwd=1234 

2.功能简介

2.1键盘功能

KCOM4不支持多媒体键盘功能,因为抓包的那套键鼠设备本身不支持多媒体键盘;大部分普通键盘是不支持多媒体键盘功能的。而且多媒体功能在游戏操作上基本也很少会用到的。

普通键盘功能可以实现键盘的所有功能,按键按下、组合键按下等等。按键按下需要发送松开的指令,否则按键是会被电脑一直记录按下的。KCOM4也支持自动松开指令和随机延时按键松开,用户按照格式发送指令,KCOM4会根据要求随机延时或者固定延时发送松开按键的指令。

这里介绍一下键盘和电脑通信的一个大概流程:首先键盘插入电脑后就会告诉电脑键盘的数据上报间隔,快的键盘是一般1ms,慢一点的键盘是一般10ms。然后电脑就会每间隔这个时间询问一次键盘有没有新数据,有的话就处理,没有的话就跳过。键盘按下某个按键(不松开),键盘就会把这个按键按下的数据发给电脑,由电脑记录这个按键按下;注意的是,就算你按键一直不松开,键盘也不会有任何新数据发给电脑的,有很多人以为是键盘不停发按下的指令给电脑,这是错误的。等到按键松开后,键盘再把松开的指令发给电脑,这个时候电脑才会松开这个按键。

2.2鼠标功能

KCOM4不支持绝对坐标鼠标功能,这个绝对坐标鼠标功能在游戏上作用就挺大的了,能够精准移动到指定的位置。但是谁家真实鼠标用的是绝对坐标鼠标啊?目前为止我没见过哪个品牌的真实鼠标是绝对坐标鼠标的,向日葵的远程控制设备用的是绝对坐标鼠标。

没有绝对坐标功能,怎么知道当前鼠标光标的位置呢?

虽然不知道鼠标光标当前位置,那我直接把光标移动到左上角0.0的位置,然后再进行相对移动就可以了。

KCOM4支持轨迹移动功能,不过轨迹移动不是特别精确,一般差几个像素。建议执行完轨迹移动后再根据位置进行一次相对移动。轨迹移动带有加减速算法,就是轨迹移动时先快后慢来移动;轨迹移动的原理其实就是把需要移动的距离拆分成若干个小位置,每次移动随机1-20个像素。

鼠标移动小知识:正常使用鼠标的时候,每次移动的像素一般是1-10个像素;故意把鼠标移动很快一般是20-50个像素左右。所以如果想自己通过相对坐标鼠标做轨迹移动的话,就每次只发送几个像素的移动来模拟轨迹。

KCOM4鼠标回报率是多少?

1000,这个鼠标回报率其实就是鼠标数据包的上报间隔时间,KCOM4设定的上报间隔是1ms,最大1秒钟能上报1000个数据包,所以回报率就是1000。你间隔10ms发一次数据,测出来的回报率就是100左右,主要和你发送数据的间隔有关。

2.3通信加密

目前市面上使用串口通信的键鼠控制产品很少有使用加密的,最主要的是他们使用的是8位内核的芯片,芯片最大频率一般在24Mhz内,做加密的话就会影响正常系统运行了。KCOM4采用的是AES-128(ECB)加密方式,用户可以自定义加密密钥,并且在指令中加入随机字节,可以确保同一个控制指令加密后每次都不一样。

为什么要做加密?

第三方软件能在你毫不知情的情况下查看你串口的通信所有内容,然后再和键鼠动作比对一下就能轻松知道是怎么回事了。想解决这个问题只有两个办法,1是主控机和被控机分开;2是通信加密,就算对方监控你串口通信的内容,也无法解析出是什么数据。

2.4固件升级

做游戏工作室的有时候遇到的情况就是入了一批盒子,上线没多久就挂了,盒子直接原地报废。KCOM4支持用户自行升级固件,就算KCOM4的键鼠信息被记录了,只要我再重新买一套真实键鼠设备然后再抓包硬件信息重新生成一套固件,用户再自己烧录进去,就是全新的一套硬件信息了。

有人就这么说了,你这样子没用的,人家能知道你用啥芯片,直接封你芯片或者其他啥啥啥的。

能这么说的基本就是小白或者不懂技术,我虽然不算多牛,但是在USB键鼠这块还是略懂一二。有兴趣的朋友可以自行学一下USB键鼠设备的一些描述符和报表就会知道一套USB键鼠设备是怎么组成的了。

当然,只能用我的升级工具和我提供的升级固件。并且不能破坏原来的固件,有些会搞硬件开发的朋友一旦擦除了原来的固件,就没办法再升级回我的固件。

3.测试流程

为了测试收到的产品是否有问题,请按照以下流程测试产品:

1.把KCOM4的两个USB头都插入本机,观察指示灯是否常亮,常亮代表正常,闪烁代表处于等待升级状态;

2.打开设备管理器,查看端口那一栏有没有CH340设备。如果没有就需要安装CH340驱动。这个驱动是装给主控端的,被控端是免驱的;如果是主控和被控不同电脑的情况下,只需要在主控电脑安装驱动即可。

 CH340驱动链接:CH341SER.EXE - 南京沁恒微电子股份有限公司

3.打卡资料中的“KCOM4测试软件V1.0.exe”软件;提供易语言的源代码,自己写脚本可以参考一下;

 4.端口号处选择和设备管理器一样的COM号,然后打开串口;左边的标签变成红色代表打开串口成功,灰色代表没有打开串口;

 5.点击配置参数区的读取按钮,如果有参数被读会,说明工作正常;

 6.其他功能可以直接根据界面显示进行测试;按键类(键盘按键,鼠标按键)都是需要发送松开指令的,否则电脑会一直记录这个按键按下,松开就是把键值改成00发送就是松开了。

 用测试软件测试正常,自己写脚本发数据没反应?

这个问题有两种可能:

1.串口配置不对,通信对不上,串口通信配置:波特率-115200,停止位-1,数据位-8,校验位-无;检查脚本的通信配置是否和这个一致;

2.发送的数据格式不对,指令格式都是16进制(hex)格式;自己学习一下自己用的编程语言怎么发16进制串口数据。

相关文章:

KCOM4串口转键鼠控制线测试说明

1.KOCM4介绍 KCOM4是一款最新开发的串口转键盘鼠标控制线,采用32位内核,最大60Mhz的工作频率,完美适用于游戏挂机等应用场景(如果是用在工作电脑控制或展厅电脑控制推荐CH9329双头线)。KCOM4支持普通键盘、相对鼠标、…...

2023华数杯数学建模C题完整5问代码思路分析

目前已经写出2023华数杯C题母亲身心健康对婴儿成长的影响全部5问的完整代码和42页论文(正文30页,论文部分摘要如下: 本文共解决了五个问题,涉及婴儿行为特征、睡眠质量与母亲的身体指标和心理指标的关系,以及如何优化…...

02_kafka_基本概念_基础架构

文章目录 常见的消息队列工作模式基本概念kafka 特性Kafka 基本架构topic 分区的 目的/ 好处 日志存储形式消费者,消费方式 逻辑消费组 高性能写入: 顺序写 mmap读取:零拷贝DMA 使用场景 常见的消息队列工作模式 至多一次:消息被…...

HTTP 常用状态码 301 302 304 403

HTTP 常用状态码 301 302 304 403 301 永久重定向,浏览器会把重定向后的地址缓存起来,将来用户再次访问原始地址时,直接引导用户访问新地址 302 临时重定向,浏览器会引导用户进入新地址,但不会缓存原始地址&#xff0c…...

分布式 - 服务器Nginx:一小时入门系列之静态网页配置

文章目录 1. 静态文件配置2. nginx listen 命令解析3. nginx server_name 命令解析4. nginx server 端口重复5. nginx location 命令 1. 静态文件配置 在 /home 文件下配置一个静态的AdminLTE后台管理系统: [rootnginx-dev conf.d]# cd /home [rootnginx-dev home…...

kubernetes网络之网络策略-----Network Policies - Example

创建一个Deployment并配置Service 创建一个 nginx Deployment 用于演示 Kubernetes 的 NetworkPolicy: kubectl create deployment nginx --imagenginx 输出结果 deployment.apps/nginx created通过Service暴露该Deployment kubectl expose deployment nginx --po…...

【GDI/GDI+】如何抓取屏幕保存到bitmap文件?

问题 如何抓取屏幕保存到bitmap文件? 方法 GDI 方法 1、抓取。 HBITMAP CRectChartUI::GetBitmap(HDC hDC) {HDC hMemDC;int x, y;int nWidth, nHeight;HBITMAP hBitmap, hOldBitmap;hMemDC CreateCompatibleDC(hDC);nWidth GetDeviceCaps(hDC, HORZRES);nHei…...

HDFS介绍

目录 ​编辑 一、HDFS基础 1.1 概述 1.2 HDFS的设计目标 1.2.1 硬件故障 1.2.2 流式数据访问 1.2.3 超大数据集 1.2.4 简单的一致性模型 1.2.5 移动计算而不是移动数据 1.2.6 跨异构硬件和软件平台的可移植性 1.3 基础概念 1.3.1 块(Block) 1.3.2 复制…...

每日一题——两数之和

题目 给出一个整型数组 numbers 和一个目标值 target,请在数组中找出两个加起来等于目标值的数的下标,返回的下标按升序排列。 (注:返回的数组下标从1开始算起,保证target一定可以由数组里面2个数字相加得到&#xff0…...

Maven: ‘mvn‘ is not recognized as an internal or external command

下载并配置好Maven之后,CMD测试安装是否成功:mvn -v 提示: mvn is not recognized as an internal or external command, operable program or batch file. 检查环境变量: MAVEN_HOME: %MAVEN_HOME%\bin: 看上去没问题&#x…...

CubeSLAM: Monocular 3D Object SLAM——论文简述

一、简介 提出一种在动态和静态环境中同时进行3D目标检测和定位建图的方法,并且能够互相提升准确度。具体地,对于3D目标,其位置、方向和尺寸通过slam进行了优化;而3D目标作为slam中的路标,可以提供额外的语义和几何约…...

【雕爷学编程】MicroPython动手做(30)——物联网之Blynk 2

知识点:什么是掌控板? 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片,支持WiFi和蓝牙双模通信,可作为物联网节点,实现物联网应用。同时掌控板上集成了OLED…...

linux scp 拷贝文件到目标linux系统

scp -P 8866 -r jsonrpc/ root192.168.6.66:/folder_path...

Oracle-expdp报错ORA-39077、06502(Bug-16928674)

问题: 用户在使用expdp进程导出时,出现队列报错ORA-39077、ORA-06502 ORA-31626: job does not exist ORA-31638: cannot attach to job SYS_EXPORT_SCHEMA_01 for user SYS ORA-06512: at "SYS.DBMS_SYS_ERROR", line 95 ORA-06512: at "SYS.KUPV$…...

Kafka入门,保姆级教学

文章目录 Kafka概念消息中间件对比消息中间件对比-选择建议Kafka常用名词介绍Kafka入门1. Kafka安装配置2.Kafka生产者与消费者关系3.Kafka依赖4.生产者发消息5.消费者接受消息6.Kafka高可用性设计6.1集群Kafka备份机制(Reolication) 7.kafka生产者详解7.1 发送类型7.2参数详解…...

RabbitMQ 过期时间(TTL)

TTL,Time to Live的简称,即过期时间,RabbitMQ可以对消息和队列设置TTL。 RabbitMQ支持设置队列的过期时间和消息的过期时间。如果设置队列的过期时间则队列中所有的消息都有相同的过期时间。如果设置消息的过期时间则每条消息的过期时间则可以不同。如两…...

C 语言练习题、持续更新

文章目录 C语言练习题读懂每个练习题才是学好一门代码的重要经历目录(先不要看答案,首先自己做才能更好的领悟,做不来没关系)题目一:有 1、2、3、4 四个数字,能组成多少个互不相同且无重复数字的三位数&…...

Android Q以上后台启动Activity初步尝试

在Android Q以后 google不允许在后台service 广播等等启动Activity 具体请看google文档从后台启动 Activity 的限制 | Android 开发者 | Android Developers 文档里有详细的说明,在哪种情况下可以后台启动Activity。 大体分为以下几种情况: 1、应用具有可见窗口,例如前…...

【torchlars】windows下载github中的torchlars包遇到的问题及解决方案

环境 python3.7 windows10 cuda11.1 pytorch1.8.1 虚拟环境miniconda 目的 windows下载github中的torchlars包 遇到的问题 问题一:直接下载好文件夹输入指令:python setup.py install 出现错误:RuntimeError: Error compiling objects f…...

SolidUI社区-通用Prompt技巧

背景 随着文本生成图像的语言模型兴起,SolidUI想帮人们快速构建可视化工具,可视化内容包括2D,3D,3D场景,从而快速构三维数据演示场景。SolidUI 是一个创新的项目,旨在将自然语言处理(NLP)与计算机图形学相…...

C++中类的封装写出一个文件加密的小项目

文件的加密较为简单&#xff0c;当然也可以修改它的加密方式等&#xff0c;供大家参考 #include<string> #include<fstream> class ReaderFile { public:string Read(const string& filename){cout << "读取文件&#xff0c;获取明文"<<…...

【网络编程·传输层】UDP和TCP的报头

目录 一、端口号划分 二、部分指令 1、pidof&#xff08;用于查看进程id&#xff09; 2、netstat&#xff08;查看网络状态&#xff09; 三、UDP协议 1、UDP协议格式 2、UDP协议如何进行封装、解包、分用 2.1封装、解包 2.2分用 3、UDP协议的特点 3.1UDP协议的特点 …...

C语言编程技巧 全局变量在多个c文件中公用的方法

在使用C语言编写程序时&#xff0c;经常会遇到这样的情况&#xff1a;我们希望在头文件中定义一个全局变量&#xff0c;并将其包含在两个不同的C文件中&#xff0c;以便这个全局变量可以在这两个文件中共享。举个例子&#xff0c;假设项目文件夹"project"下有三个文件…...

【HDFS】NN处理全量块汇报时reportDiff的一些细节

NN处理全量块汇报(FBR)时的一些细节怎么生成的toRemove怎么check 汇报上来的块是不是corrupt的?reportDiff方法里巧妙地引入delimiterBlock这个block的作用前置知识:【HDFS】Block、BlockInfo、BlockInfoContiguous、BlockInfoStriped的分析记录 上面的文章中介绍了关于Bl…...

JVM之类加载与字节码(一)

1.类文件结构 一个简单的HelloWorld.Java package cn.itcast.jvm.t5; // HelloWorld 示例 public class HelloWorld { public static void main(String[] args) { System.out.println("hello world"); } }编译为 HelloWorld.class 后的样子如下所示&#xff1a; […...

【数据结构OJ题】合并两个有序数组

原题链接&#xff1a;https://leetcode.cn/problems/merge-sorted-array/ 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 看到这道题&#xff0c;我们注意到nums1[ ]和nums2[ ]两个数组都是非递减的。所以我们很容易想到额外开一个数组tmp[ ]&#x…...

数据结构笔记--归并排序及其拓展题(小和问题、逆序对问题)

目录 1--归并排序 2--小和问题 3--逆序对问题 1--归并排序 归并排序的核心思想&#xff1a;将一个无序的序列归并排序为一个有序的系列&#xff1b;通过递归将无序的序列二分&#xff0c;从底层开始将二分的序列归并排序为有序序列&#xff1b; #include <iostream> #…...

flutter开发实战-实现css线性渐变转换flutter渐变LinearGradient功能

flutter开发实战-实现css线性渐变转换flutter渐变LinearGradient功能 在之前项目开发中&#xff0c;遇到更换样式&#xff0c;由于从服务器端获取的样式均为css属性值&#xff0c;需要将其转换成flutter类对应的属性值。这里只处理线性渐变linear-gradient 比如渐变 “linear-…...

python推理小游戏bagels

python推理小游戏bagels bagels是一个推理小游戏&#xff0c;你的朋友想到一个随机的、没有重复的3位数字&#xff0c;你尝试去猜测它是什么。每次猜测之后&#xff0c;朋友就会给出3中类型的线索&#xff1a; Bagels: 你猜测的3个数都不在神秘数字中&#xff1b;Pico&#x…...

DBSCAN聚类

一、概述 DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一种基于密度的聚类算法&#xff0c;簇集的划定完全由样本的聚集程度决定。聚集程度不足以构成簇落的那些样本视为噪声点&#xff0c;因此DBSCAN聚类的方式也可以用于异常点的检测。 二、算法…...