1. Друзья, в это тяжёлое и непонятное для всех нас время мы просим вас воздержаться от любых упоминаний политики на форуме, - этим ситуации не поможешь, а только возникнут ненужные ссоры и обиды. Это касается также шуток и юмора на тему конфликта. Пусть войны будут только виртуальными, а политики решают разногласия дипломатическим путём. С уважением, администрация Old-Games.RU.

    Скрыть объявление
  2. Пожалуйста, внимательно прочитайте правила раздела.
  3. Если Вы видите это сообщение, значит, вы ещё не зарегистрировались на нашем форуме.

    Зарегистрируйтесь, если вы хотите принять участие в обсуждениях. Перед регистрацией примите к сведению:
    1. Не регистрируйтесь с никами типа asdfdadhgd, 354621 и тому подобными, не несущими смысловой нагрузки (ник должен быть читаемым!): такие пользователи будут сразу заблокированы!
    2. Не регистрируйте больше одной учётной записи. Если у вас возникли проблемы при регистрации, то вы можете воспользоваться формой обратной связи внизу страницы.
    3. Регистрируйтесь с реально существующими E-mail адресами, иначе вы не сможете завершить регистрацию.
    4. Обязательно ознакомьтесь с правилами поведения на нашем форуме, чтобы избежать дальнейших конфликтов и непонимания.
    С уважением, администрация форума Old-Games.RU
    Скрыть объявление

Как проверить 3-кнопочную Serial мышь в msdos?

Тема в разделе "Hard & Soft", создана пользователем M210, 10 июл 2021.

  1. M210

    M210

    Регистрация:
    19 мар 2008
    Сообщения:
    670
    Ну есть одна материнка на Атоме, можно с ней попробовать, ее только откопать нужно.
    А на работу нести железку не хочется, т.к. она находится на стадии прототипа, а это куча отдельных сборок, соединенных проводками...до работы это все может не доехать :)

    А почему 45Hz? (PS. Хотя уже понял почему...) но будем брать меньшие значения обновлений:

    КОМ мыши работают на скорости 1200bps, 7N1 или 7N2 (т.е. в сумме размер данных 9 бит или 10 бит...возьмем 10)
    Значит максимальная скорость передачи 120 бит в секунду - это 30 (по 4 байта) или 40 (по 3 байта) пакетов в секунду.
    А раз все USB мыши имеют колесо, то я настраиваю адаптер на работу с колесом - с постоянным размером пакета в 4 байта

    Ну и еще один косяк в том, что E8051 семейства не умеют работать с 7N1, поэтому приходится работать с 7N2...что немного медленнее
     
    Последнее редактирование: 2 авг 2021
  2. mide

    mide

    Регистрация:
    13 дек 2017
    Сообщения:
    109
    MouseTester Requires .NET 4.0 Full. Note that on Windows XP you will need to install this patch, too.
     
    M210 нравится это.
  3. drugon Adventure-seeker @ in the Cyber Dungeon quest!

    drugon

    Регистрация:
    6 май 2004
    Сообщения:
    15.335
    Ну здрасьте. Я играл в Дум в 90-ых. Вообще без мыши. Что ж теперь, трактористов в расчёт не брать?
     
  4. M210

    M210

    Регистрация:
    19 мар 2008
    Сообщения:
    670
    Протестил прогу на "Атоме", данные полностью совпадают с теоретическими
    Протестил в двух режимах - при 3 байта за пакет и при 4 байта за пакет

    Frequency vs Time (3 bytes).png Frequency vs Time (4 bytes).png Frequency vs Time3.png Interval vs time (3 bytes).png Interval vs time (4 bytes).png

    Картинка посередине - режим работы мыши Logitech и в середине теста нажата средняя кнопка мыши - посылка 4го байта в пакете
    --- добавлено 2 авг 2021, предыдущее сообщение размещено: 2 авг 2021 ---
    Стало быть, теперь нужны такие же графики с реального железа?
     
  5. TBAPb MIA

    TBAPb

    Legacy

    Регистрация:
    26 сен 2005
    Сообщения:
    2.073
    Так, давайте мух отдельно.

    а) поддержка спекой - зачастую отсутствует, эт понятное дело.

    б) поддержка физикой - подключать живьём устройства со своим собственным питанием (принтеры, сканеры, модемы и т.д.) может быть чревато банально из-за разности потенциалов. А уж если принтер/сканер был включен в момент подключения...
    Хотя по факту - если девайс и комп на одной розетке, то всё проходило норм. Кстати LPT в этом плане более устойчив, я видел пробой между проводом и разъёмом при подключении - и вообще ноль эмоций.
    Устройства же без внешнего питания - ну тут тоже можно постараться, как известно, но в 99% пройдёт без проблем.

    в) поддержка железом - в контексте разговора, комп запущеный без PS/2 мыши ничего не повесит ничего на IRQ12 => хоть обвтыкайся потом, игнор полный. Если же было хоть что-то, то потом прекрасно будет находиться, более того, при некоторых обстоятельствах можно уговорить Винду переопределить устройство, но это не точно.
    С COM/LPT вообще пофиг, хоть обперетыкайся, если система видит порт - значит может слать туда что угодно, всё зависит только от умения ОС и загруженных дров.

    > The PS2 mouse port on a PC is attached to the auxiliary input of the PS2 keyboard controller. That input might be disabled at bootup, and needs to be enabled. It is usually also desirable to have the mouse generate IRQ12 interrupts when it sends bytes through the keyboard controller to IO port 0x60.

    Mouse Input - OSDev Wiki
     
  6. MisterGrim Very old

    MisterGrim

    Legacy

    Регистрация:
    29 ноя 2007
    Сообщения:
    25.423
    При отсутствии подключенной мыши Windows прямо говорит, что COM-мышь можно подключить хоть вот сейчас. Не думаю, что в MS такие уж вредители окопались.
     
    Uka нравится это.
  7. TheMadLynx

    TheMadLynx

    Хелпер

    Регистрация:
    9 июн 2015
    Сообщения:
    7.324
    Согласен. Давайте правильно читать и понимать буквально то, что написано:
    Возможность горячего подключения отсутствует. Но если вы её как-то реализуете - значит она технически будет присутствовать. Вот только такая конкретная реализация останется именно плодом чьей-то уникальной фантазии и на 99% будет состоять из горы обусловленных костылей "если... + если... +..." все из которых должны удачно сложиться, чтобы "горячее подключение" сработало. Что возвращает нас обратно к первому утверждению.
     
  8. Strannik_

    Strannik_

    Регистрация:
    19 сен 2016
    Сообщения:
    960
    Для лучшего понимания стоит разделять UART (логический уровень, с которым работает программа) и RS-232 (физический уровень)
    В общем случае для UART нет разницы в типе физического уровня, его исполнении, горячем или холодном подключении устройств. Он лишь передает и принимает пакеты.
    Физическое подключение устройств происходит на физическом уровне (как это ни странно =) ). Для RS-232 требования по согласованию нагрузок на линии отсутствуют. В бытовых компьютерах используются самые простые варианты исполнения, без защиты. Это не означает, можно или нельзя подключать/отключать "на горячую". Стандарт перекладывает данный вопрос на изготовителя или пользователя. Изготовитель, в свою очередь, скидывает его на конечного пользователя, не гарантируя исправность системы после "горячего" подключения.
    В промышленном исполнении RS-232 если и используется (RS-485 предпочтительнее), то расширяется гальванической развязкой или другими способами защиты оборудования.
    Для пассивных устройств (не имеющих своего источника питания, не нагружающих RS-232 больше допустимого) и устройств с гальванической развязкой (достаточно одной гальванической развязки на линии) при длине кабеля 1-2 метра вероятность выхода из строя оборудования близка к нулю.
     
  9. mide

    mide

    Регистрация:
    13 дек 2017
    Сообщения:
    109
    Не знаю кому это так пофиг.
    Свои теории пожалуйста для начала у себя проверьте.
    При отключении "на горячую" мыши от COM с последующим подключением "на горячую" горят COM как с добрым утром, проверено не раз.
    --- добавлено 3 авг 2021, предыдущее сообщение размещено: 3 авг 2021 ---
    375DPI\CPI результат замера или "на глазок"?
     
  10. M210

    M210

    Регистрация:
    19 мар 2008
    Сообщения:
    670
    Там в проге есть " замеряльщик", на глазок не умею)) первый раз получилось 366, второй раз 375, это значение мне больше понравилось :) хотя конечно с реальным cpi это вряд ли сходится, вернее имеет нехилую погрешность

    Но мне показалось, cpi на графики не влияют
     
    Последнее редактирование: 3 авг 2021
  11. mide

    mide

    Регистрация:
    13 дек 2017
    Сообщения:
    109
    Есть, но надо ещё отмерить расстояние на которое мышь шевелить, замеряли точно?
    Полагаю что всё-таки стандартное 400DPI быть должно, лучше на родном для мыши интерфейсе замерять.

    Не выяснял т.к. точно знаю сколько на имеющихся манипуляторах, но возможно на что то и влияет.
    На ранней оптике например было даже не 400, как на шаре, стандартом, а 440 и далее с той же погрешностью, т.е. 880 и т.п.
     
  12. M210

    M210

    Регистрация:
    19 мар 2008
    Сообщения:
    670
    Помоему мышь была 900DPI-йная.
    Сегодня я почитал еще раз даташит на CH559 и заметил, что в МК два разных UARTа и второй умеет работать на 7N1...в общем переписал код на работу с ним, теперь прога показывает DPI в 2 раза выше и теперь они похожи на те, что замеряются при подключении на USB, ну и скорость соответственно стала 45Гц :)
    Ну и последняя мышь, с которой я тестил адаптер - Logitech g304, у нее переключаемый DPI, а максимальный 12000, через адаптер во 3м режиме показало 1500DPI, во втором - 750DPI...я не помню, сколько по технических характеристикам у этой мыши настоящих DPI в разных режимах)) В общем я это к тому, что не обязательно должно быть 400, от мышки зависит

    Ну и я так понимаю, теперь у меня появилась другая проблема (и наверно не устранимая?) - импутлаг
    Записал видео в разрешении монитора 1024х768, чтобы было видно курсор.



    Он не очень заметный, но все-таки чувствуется. Но не знаю, как там дела обстоят на реальных устройствах
     
  13. mide

    mide

    Регистрация:
    13 дек 2017
    Сообщения:
    109
    Шариковые поздние редко бывали выше 400, предыдущие сплошь 400.
    Оптика менее 440 ранняя не бывала вроде, как впрочем и более..
    Позже сделали и до 200 убавляемый DPI.

    Скорее 880, при заявленных 800.
    Позже оптику и лазер перевели на сколько заявлено столько точек и сканится.

    С штекера USB на какой частоте данные идут?
    До 1kHz поднять есть возможность?
     
    Последнее редактирование: 3 авг 2021
  14. M210

    M210

    Регистрация:
    19 мар 2008
    Сообщения:
    670
    Через контроллер? Я пока не знаю, как это замерить, надо заводить какой то таймер, который мог бы говорить сколько времени прошло с последнего цикла.
    А вообще, USB скорее всего работает со скорость COM мыши, т.к. если опрашивать USB мышь чаще, чем передавать в com порт, тогда появляются погрешности, скачки и т.д. Работа мыши становится не плавной.
     
  15. mide

    mide

    Регистрация:
    13 дек 2017
    Сообщения:
    109
    Мысль была к тому, что если читать поток данных на частоте 1kHz и усреднять значение приблизительно каждых 23 семплов, то полученная точность и плавность будут превосходить те же показатели при потоке считываемом на 45Hz.
    Но для такого подхода потребуется частота обработки куда более 1kHz, при наличии соответствующей программно-аппаратной базы, разумеется.

    Чтобы понять суть предлагаемой концепции представьте следующее:
    компьютер с подключённой по USB мышью читает данные с порта на частоте 1kHz, обрабатывает каждые 23 семпла превращая их в 1 и эмулируя мышь по нуль-модемному подключению отправляет в COM.

    Сделав такую демо-версию устройства можно увидеть его очевидные преимущества и подыскать элементную базу для устройства более узкой специализации.

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

    Необходимо учитывать, то, что шариковые мыши подключаемые к COM на 2\3 аналоговые устройства.
    Вы же пытаетесь изначально цифровой поток получить кусками не потеряв в результирующем качестве, что не получается от слова очень.
    Ваш результат напоминает протомеханические манипуляторы до их эволюции в оптомеханику и с этим фактом что-то надо делать.
     
    Последнее редактирование: 4 авг 2021
  16. M210

    M210

    Регистрация:
    19 мар 2008
    Сообщения:
    670
    Да вроде как нынешняя работа железки меня более чем устраивает...разве что к лучшему всегда можно стремиться :)
    Можно попробовать.

    Для начала могу сказать, что МК работает на частоте 12МГц (можно запустить на 48МГц, но тогда под сомнением работа UART на 1200bps (медленно))
    Таймер я могу настроить на частоту прерывания 1мс (можно и чаще), и вызывать опрос USB мыши...но сколько времени займет сам опрос - я не знаю, это буде зависеть от производительности МК.

    В конечном итоге мне надо будет передавать накопленные данные каждые 33мс, т.е. усреднять 33 пакета, пришедшие с USB? Усреднять я не пробовал, но вот суммирование пакетов ни к чему хорошему не приводит и в итоге я решил отправлять данные при поступлении информации с USB...пока данные отправляются в COM порт, USB мышь не опрашивается (На факт отправки данных в COM не проверяется только 4й последний пакет, т.е. его отправку можно проверить после следующего опроса USB перед началом отправки следующего пакета в COM)
     
  17. mide

    mide

    Регистрация:
    13 дек 2017
    Сообщения:
    109
    Не понятно, откуда взялось 33 пакета при 33мс и почему именно 33мс?

    На первый взгляд всё просто, кроме того факта что нажатость кнопки (или двух кнопок) мыши конечно же усреднению не подлежит :)
    Поглядите на результат работы приаттаченной программы, возможно будет понятнее что именно необходимо.
     

    Вложения:

  18. M210

    M210

    Регистрация:
    19 мар 2008
    Сообщения:
    670
    Ну, потому что у меня режим работы с колесом, а значит постоянные 4 байта за пакет - 133 / 4 = 33...ну да, 33Гц, а не 33мс, но не суть :)
    При опросе USB мышки в 1кГц, у нас получается придет 1000 пакетов в секунду, а в 33мс - значит пришло бы 33 пакета (но да, при 33Гц придет 30 пакетов)

    Программу посмотрю, опишусь
    --- добавлено 4 авг 2021, предыдущее сообщение размещено: 4 авг 2021 ---
    Посмотрел программу (правда только с USB мышью), понятнее как бы не стало, т.к. прога предназначена для вылавливания акселерации курсора...сравнивает данные с физической мыши с данными на экране.
    Ну с другой стороны, усреднять значения труда не составит, не для этого примеры не нужны))
     
  19. mide

    mide

    Регистрация:
    13 дек 2017
    Сообщения:
    109
    Так поглядите в чём разница то :)
    Что-то думается, что видимая есть.

    Кстати от акселя возможно могут возникать неверные предпосылки (в случае с MouseTester), рекомендуется к использованию:
    The MarkC Windows 10 + 8.1 + 8 + 7 + Vista + XP Mouse Acceleration Fix Builder

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

    Полагаю вас ввело в заблуждение наличие исходников?
    MouseMovementRecorder "Can be used to diagnose mouse pointer acceleration problems", но это не значит что не может быть использован для чего-то другого.

    Очевидный ключевой момент в том что до 1000 пакетов в секунду, при наличии соответствующих событий.
    Ведь если мышь никто не передвигает и не кликает то ничего особо никуда и не идёт.
    Кроме того есть ещё один момент менее очевидный:
    частота опроса сенсора в ряде случаев не зависит от частоты опроса порта и может быть ниже 1000Hz, соответственно в этом случае ни о какой тысяче пакетов речи не идёт.
     
    Последнее редактирование: 4 авг 2021
  20. M210

    M210

    Регистрация:
    19 мар 2008
    Сообщения:
    670
    Я все равно не понимаю, чего такого может показать эта прога. Если бы она сравнивала данные перед адаптером и после адаптера, это одно, а когда она сравнивает данные, которые шлет адаптер с данными, которые приходят на экран - они ничем не будут отличаться от тех, что шлёт настоящая мышь.

    В общем прогу запустить не удалось, она требует dinput8, я поставил на свой 98 directx9 и теперь винда зависает при загрузке :) (та винда слишком много опытов перенесла, установку dx9 не выдержала) даже дос грузиться не хочет. Я теперь не скоро доберусь до переустановки)

    Ну и самое главное - принес домой с работы ps2 мышь, по-умолчанию она тоже работает на 40Гц и в общем по сравнению с моим адаптером поведение курсора у ps2 точно такое же... Абсолютно, ничем не отличается и рисует точно такие же линии в mspaint как и моя эмалируемая. Разница только в импут лаге, он довольно заметный если сравнивать настоящую мышь с моей... Это единственная разница. Собственно, поэтому сколько не усредняй, лаг он и в Африке лаг, с ним надо бороться подругому
     
    Последнее редактирование: 4 авг 2021
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление