Подтвердить что ты не робот

Устройство неправильно определено как последовательная мышь

Я работаю над устройством, которое взаимодействует с ПК через (виртуальный) последовательный порт. Проблема в том, что данные, которые мы отправляем, иногда неправильно идентифицируются Windows как мышь с шиной, после чего загружается драйвер "Microsoft Serial Ballpoint", и указатель мыши начинает прыгать на экране и случайным образом нажимать на вещи.

Немного Googling показывает, что это старая и хорошо известная проблема с последовательными устройствами, где обычное обходное устройство - это немного взлома реестра, чтобы отключить драйвер. Тем не менее, нам очень нужно требовать от наших пользователей, и я бы предпочел не использовать наше приложение в реестре пользователей. Особенно, когда исправление зависит от версии Windows, и пользователь вполне может использовать мышь с шиной.

Вместо этого я хотел бы избежать этой проблемы, изменив наш протокол, чтобы не отправлять какие-либо данные, которые могут оказаться неверно идентифицированными как мышь. Единственная проблема заключается в том, что я не совсем уверен, какие шаблоны следует избегать. По-видимому, протокол Microsoft Mouse состоит из пакетов из четырех байтов, где установлен MSB первого, а третий из них - ясный.

Будет ли достаточно отправлять только 7-бит ASCII? Есть ли другие устройства, о которых мне нужно беспокоиться о том, чтобы их можно было обнаружить как?

4b9b3361

Ответ 1

Я сам столкнулся с этой проблемой на 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

Затем вам необходимо перезагрузить компьютер, который должен начать правильно, а не пытаться обнаружить последовательную мышь.

удачи.

Ответ 2

Оказывается, что обнаружение мыши в Windows обычно обрабатывается драйвером фильтра serenum.sys. Этот драйвер реализует поддержку унаследованных серийных мышей, а также последовательный подключаемый модуль. Microsoft даже предоставила исходный код в качестве образца WDK.

Во время обнаружения порты переключаются в режим 1200-7-N-1, утверждая DTR + RTS, к которому ожидается ответ в течение 200 мс, с несколькими попытками в случае отказа. К сожалению, для устаревшей мыши в качестве идентификации достаточно одного символа M или B.

В нашем случае протокол был переработан, чтобы избежать этих символов, и теперь он больше не может быть неверно идентифицирован.

Однако мы использовали виртуальный последовательный порт USB, и для традиционного последовательного порта этот подход может быть несколько сложным, поскольку все, что отправлено с другой скоростью передачи данных, может выглядеть как линейный шум. В этом случае я предполагаю, что наиболее простой способ решения проблемы, как уже было предложено, - это, вероятно, избежать нежелательных передач.

В качестве альтернативы, сигналы последовательного управления фактически подключены или перехватываются устройством USB CDC, обрабатывая сигналы DTR или RTS и удерживая их на выходе. Фактически реализация протокола plug-and-play была бы еще более нулевым вариантом. Предположительно, есть дешевые кабели RS232 без полного дополнения сигналов управления, хотя такой подход все равно может потерпеть неудачу.

Ответ 3

Я сам столкнулся с этой ошибкой Windows. Вот мои собственные исследования по теме:

Microsoft подтверждает эту ошибку: http://support.microsoft.com/kb/819036 Начните с загрузки своего инструмента и выясните, разрешает ли он проблему.

  • Загрузите и установите свою программу.
  • Запустите его из командной строки из C:\program\Microsoft comdisable\
  • Запишите comdisable /list при выполнении программы.
  • Отобразятся все порты на компьютере.
  • Напишите comdisable /disable COMx, где x - номер порта.
  • Сделайте это для всех портов на компьютере.
  • Reboot.

Это, надеюсь, будет работать как универсальное решение.

В качестве альтернативы вы можете взломать boot.ini, но я не верю, что это работает в Vista/Win 7. У меня есть заметка о приложении от систем Cisco, описывающая, как это сделать. Если вышеуказанное не решит вашу проблему, сообщите мне.

Ответ 5

Может быть, это помогает: У нас была та же проблема с FTDI FT232RL. Мы выяснили, что это была аппаратная проблема нашей печатной платы.

FTDI-Datasheet говорит о # RESET -Pin: активный низкий reset контакт. Это может использоваться внешним устройством для reset FT232R. Если не требуется, его можно отключить или подключить к VCC.

RESET -Pin не требуется в нашем приложении, поэтому мы подключили его к Vcc через 1k Pull-Up. Казалось, что подтягивание # RESET -Pin вызвало запуск undefined FT232RL, по крайней мере, каждый второй преобразователь, который мы подключили к USB-гнезду, вызвал последовательный балл в менеджере devive, Мы удалили подтягивающий резистор на # RESET -Pin, при этом # RESET -Pin не подключен. С тех пор каждый интерфейс работал proberly и больше не создавал последовательные баллы в диспетчере устройств Windows.

Ответ 6

У меня была эта проблема с 2010 года, когда к компьютеру подключены последовательные головки. Usb to serial converter или нет.. Я использую onkly устройство SILABS CP2102 или тому подобное.. Я работал вокруг него, просто позволяя драйверу установить, а затем в диспетчере устройств искать шариковый драйвер под мышью /HIDA, а затем просто отключить драйвер, НЕ УДАЛЯЙТЕ ЭТО, просто отключите его. Затем, когда вы перезагружаетесь даже при установке драйвера, кажется, что окна игнорируют comport как последовательную мышь и используют данные из ввода. Вы также обнаружите, что если шарик-шарик активен, то этот COMport используется и иногда возвращает COM-ПОРТ не доступный... надеюсь, что это поможет кому-то там:) Tx Ben

Ответ 7

Если у вас есть "истинный" последовательный порт или USB-ключ (RS-232, RS-485, это не имеет значения), эта проблема может быть решена путем первого открытия соответствующего последовательного порта с помощью терминала или независимо от того, какое приложение вы хотите контролировать, и только затем подключить устройство. Ради вас также следует обратить внимание на удаление устройства до завершения соединения.

С чипами FTDI, припаянными к самому устройству, вы разорены. Для меня потребовалось несколько раундов, чтобы объяснить руководству, что устройство, сообщающееся на нем, сопряжено с микросхемой FTDI, спаянной на PCB-встрече. Компьютеры Windows вряд ли пройдут для удобства пользователя, независимо от того, насколько гладким может быть USB-сокет на шкафу... (К счастью, все эти условия, встречающиеся вместе, довольно редки и необычны)