设备误检测为串行鼠标

我正在使用通过(虚拟)串行端口与PC通信的设备。 问题是我们偶尔发送的数据被Windows错误地识别为总线鼠标,之后“Microsoft Serial Ballpoint”驱动程序被加载,并且鼠标指针开始在屏幕上跳跃并随机点击事物。

有一点谷歌search显示,这是一个老的和众所周知的问题与串行设备,其中通常的解决办法是registry黑客一些禁用违规的驱动程序。 然而,我们的用户要求很多,我宁愿没有我们的应用程序搞乱用户的registry。 特别是当修补程序依赖于Windows版本时,用户可能正在使用总线鼠标。

相反,我想避免这个问题,通过改变我们的协议,不发送任何数据,这可能使我们误认为一个鼠标。 唯一的问题是,我不太确定要避免的模式。 显然微软的鼠标协议由四个字节的数据包组成,其中第一个的MSB被设置,最后三个的MSB被清除。

只发送7位ASCII就足够了吗? 有没有其他设备需要担心被检测到?

Solutions Collecting From Web of "设备误检测为串行鼠标"

我刚刚在Windows 7 Professional x64上遇到了这个问题,为我工作的解决方案是进入注册表并编辑以下值:

位置:HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Services \ sermouse
键:开始
价值:3

Value更改为4 ,这是Disabled ,它将停止发生此问题。

一个reg编辑命令如下:

 REG ADD "HKLM\SYSTEM\CurrentControlSet\Services\sermouse" /V Start /T REG_DWORD /F /D 4 

然后您需要重新启动计算机,现在应该正确启动,而不是尝试发现串行鼠标。

祝你好运。

事实证明,Windows中的鼠标检测通常由serenum.sys过滤器驱动程序处理。 该驱动程序支持串行即插即用鼠标以及串行即插即用功能 。 微软甚至提供了源码作为WDK示例 。

在检测期间,端口切换到1200-7-N-1模式,同时在200毫秒内断言预期响应的DTR + RTS ,并在发生故障的情况下进行几次重试。 不幸的是,对于传统的鼠标来说,单个MB字符就足够了。

在我们的情况下,协议被重写,以避免这些字符,现在似乎不会被误认为了。

但是,我们使用的是虚拟USB串行端口,对于传统的串行端口,这种方法可能有些困难,因为以不同的波特率发送的任何东西都可能看起来像线路噪声。 在这种情况下,我想最简单的解决方法可能是,如已经建议,以避免进行任何未经请求的传输。

或者,串行控制信号实际上被挂接,或被USB CDC设备拦截,处理DTRRTS信号并保持输出。 实际上实现即插即用协议将是一个更加可靠的选择。 假设有廉价的RS232电缆周围没有一个完整的控制信号,尽管如此,这种做法可能仍然失败。

我自己也遇到了这个Windows错误。 这是我自己对这个话题的研究:

微软承认这个错误: http : //support.microsoft.com/kb/819036开始下载他们的工具,看看它是否解决了这个问题。

  • 下载并安装他们的程序。
  • 从C:\ program \ Microsoft comdisable \
  • 执行程序时写入comdisable /list
  • 计算机上的所有端口都将显示。
  • 写可comdisable /disable COMx其中x是端口号。
  • 为计算机上的所有端口执行此操作。
  • 重启。

这应该有希望作为一个通用的解决方案。

另外,你可以在boot.ini中进行攻击,但我不认为这在Vista / Win 7中有效。我有一些来自Cisco系统的应用笔记,描述了如何做到这一点。 如果上述不能解决您的问题,请让我知道。

我也遇到过这个问题,通过禁用FTDI驱动程序的高级属性(设备管理器中COM端口的属性)中的“serial enumerator”来解决这个问题。 这在http://www.ftdichip.com/Support/Documents/AppNotes/AN_107_AdvancedDriverOptions_AN_000073.pdf中描述。

也许这有助于:我们遇到了与FTDI FT232RL相同的问题。我们发现,这是我们PCB的硬件问题。

FTDI数据表说#RESET-Pin:低电平有效复位引脚。 这可以被外部设备用来重置FT232R。 如果不需要,可以不连接,或拉到VCC。

RESET-Pin在我们的应用程序中不是必需的,所以我们通过1k上拉连接到Vcc。 看起来,#RESET-Pin的上拉引起了FT232RL的一个未定义的启动,至少每隔一个转换器,我们连接到一个USB插座,在devive manager中产生了一个串行点。 我们移除了#RESET-Pin处的上拉电阻,因此#RESET-Pin未连接。 从那时起,每个界面都能够精确地工作,并且不再在Windows设备管理器中创建串行点。

自2010年以来,我有这个问题与连接到电脑的串行秤头。 Usb到串行转换器或不..我用onkly SILABS设备的CP2102或类似的..我只是让驱动程序安装,然后在设备管理器寻找鼠标/ HIDA下的圆珠笔驱动程序,然后简单地禁用驱动程序,不要卸载它只是禁用它。 然后,当你重新启动,甚至与驱动程序安装似乎窗口忽略comport作为串行鼠标,并使用来自输入的数据。 你也会发现,如果圆珠笔驱动程序处于活动状态,那么该COMport正在使用,有时返回一个COM端口不能访问…希望这可以帮助一些人在那里:) Tx本

如果你有一个“真正的”串行端口,或一个USB加密狗(RS-232,RS-485,没关系),这个问题可以通过首先打开有问题的串行端口或任何应用程序想要监视它,然后才能插入设备。为了您自己的利益,在终止连接之前,还应该注意移除设备。

FTDI芯片焊接在设备本身,你被摧毁。 我花了几个星期来解释一下,管理上的一个设备与自己的FTDI芯片搭配在一起焊接在PCB上,而不管用户友好程度如何,无论USB接口如何光滑在内阁…(幸运的是,所有这些条件相结合是相当罕见和不寻常的)