|
|
本帖最后由 hujiajun014 于 2013-7-11 11:50 编辑
其实楼主可能没有详细了解过USB接口键盘键位冲突产生的原因,才臆想是USB2.0接口总带宽不足造成的。其实不然,问题不是出在USB总带宽上,而是出在USB协议的技术特性上,USB协议的传输基本单位是bit,一个bit是固定的8个字节,那么键盘定期向主机发送当前按键的状态,每次发送8个字节,这8个字节的具体内容则是:第一个字节是固定的,固定表示左右的Ctrl、Shift、Alt、Win是否被按下;第二个字节:保留(系统默认不使用);其余6个字节:当前正按下的其余6个【普通按键】(如果按了7个以上,根据键盘主控芯片内置的程序,可能取最先按的6个,也可能取最后按的6个)。
所以,正是这个原因,才导致超出6个按键就会出现键位冲突;这也就是说冲突并不是USB接口总的带宽不够,而是USB基本传输单元限制造成的,所以不管是USB1.1也好,3.0也罢,只要还是使用USB接口,冲突依旧存在。
反观PS2协议因为其实现原理是依照键盘每次发生按键/抬键动作,顺序发送数据信号给主机,故就没有USB协议8字节的限制,所以PS2也就没有了冲突。
当然可能有人要吐槽说,USB也有无冲突的呀,没错,USB是可以实现无冲突,但是USB下的无冲突,并不是突破了USB基本传输单元的限制,而是利用键位加装二极管,来模拟出N多个逻辑(虚拟键盘)键盘,也就是如果你按下48个普通键位,主控芯片根据二极管传输的数据就会虚拟出8个逻辑键盘,让系统识别为同时有8个键盘发射数据,从而避免冲突。
这是我大致理解的内容,如有歧意,请高人勿喷。 |
评分
-
查看全部评分
|