Перейти к публикации

Рекомендованные сообщения

Опубликовано:

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

Опубликовано:
16 минут назад, WG_Magners сказал:

можно подробнее?

При тестировании подключал 3 сдвиговых регистра (24 кнопки). Сначал их было 24, потом 32 (А может и больше). Т.е. кол-во кнопок видимых ОС тоже не соответствует количеству кнопок назначенных в конфигураторе.  Вопрос сильно не исследовал (нужно было потестить энкодеры). Сегодня более подробно могу посмотреть.

Опубликовано:
18 минут назад, WG_Magners сказал:

Насколько сильно мешают неиспользуемые кнопки/оси в системе? Вот и на гитхабе просят убрать... Еще заметил что бяка в названии не удаляется у тебя, так много у кого?

Это что v1.01? Имя в винде? Да, стабильно)) Через чистку?

20 минут назад, WG_Magners сказал:

можно подробнее?

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

  • Поддерживаю! 1
Опубликовано:

вот меняю имя на такое допустим

lY_8drJXJZI.jpg

а получаю бяку

sy6Wkt2SJiQ.jpg

 

 

Опубликовано: (изменено)
16 минут назад, =M=PiloT сказал:

Это что v1.01? Имя в винде? Да, стабильно)) Через чистку?

 

Удали в реестре папку HKEY_CURRENT_USER\System\CurrentControlSet\Control\MediaProperties\PrivateProperties\Joystick\OEM\VID_0483&PID_5750

 

13 минут назад, =VCC=Ghash34 сказал:

а получаю бяку


У тебя в плате пишет что прошита старая прошивка. Прошейся программатором

Изменено пользователем WG_Magners
Опубликовано:
4 минуты назад, WG_Magners сказал:

Удали в реестре папку HKEY_CURRENT_USER\System\CurrentControlSet\Control\MediaProperties\PrivateProperties\Joystick\OEM\VID_0483&PID_5750

 

Ясщитаю - нужно добавить кнопку для этого, в конфигуратор.

  • Поддерживаю! 3
Опубликовано:
2 минуты назад, l3VGV сказал:

 

Ясщитаю - нужно добавить кнопку для этого, в конфигуратор.

Согласен

Опубликовано:
20 минут назад, WG_Magners сказал:

Удали в реестре папку HKEY_CURRENT_USER\System\CurrentControlSet\Control\MediaProperties\PrivateProperties\Joystick\OEM\VID_0483&PID_5750

Т.е. VID и PID у плат одинаковые? Не возникнет ли проблем при подключении нескольких устройств на FreeJoy?

Опубликовано: (изменено)
17 минут назад, Johnet сказал:

Т.е. VID и PID у плат одинаковые? Не возникнет ли проблем при подключении нескольких устройств на FreeJoy?

Не возникнут, серийники разные. Разве что в игровых устройствах имена будут одинаковые..

UPD. Да, проверил. Какое имя винда увидела первым, то и запоминает для этих VID/PID

Скрытый текст

image.png.32e6419a24aa8f8e3e5de51a4efb820c.png

 

Изменено пользователем WG_Magners
  • Спасибо! 1
Опубликовано:

Это только эти идиотские контроль панели, оставшиеся со времен вин95. Игры корректно видят разные имена.

Опубликовано:
2 минуты назад, l3VGV сказал:

Это только эти идиотские контроль панели, оставшиеся со времен вин95. Игры корректно видят разные имена.


Да, тоже бесит) Не представляю насколько глубоко оно у них лежит, что мелкомягкие до сих пор с этим не разобрались

Опубликовано:

Это лежит со времент того бреда, когда считалось что все запрошенные дескрипторы нужно обязательно кешировать, потому что очень долго их получать и обрабатывать при каждом подключении. т.е. вин98se, когда была добавлена поддержка USB. И не только строковые, но и все конфигурационные тоже.

 

 

Опубликовано: (изменено)
7 минут назад, l3VGV сказал:

Это лежит со времент того бреда, когда считалось что все запрошенные дескрипторы нужно обязательно кешировать, потому что очень долго их получать и обрабатывать при каждом подключении. т.е. вин98se, когда была добавлена поддержка USB. И не только строковые, но и все конфигурационные тоже.

 

 

 

Кстати, например, тундра таки видит устройства под одинаковыми именами.. Ну и чего, мне теперь добавлять эту колхозную возможность менять VID/PID? =(
 

Скрытый текст

2020-02-06_11-55-23.thumb.png.74449b6d5abf118ebd940178244a0fbd.png


Она еще и лишних осей где-то усмотрела

13 минут назад, l3VGV сказал:

все конфигурационные тоже

 

То есть если я запилю динамическую конфигурацию устройства в системе в зависимости от конфигурации внутри железки (отключение неиспользуемых осей и кнопок), то винда не обновит дескриптор?

Изменено пользователем WG_Magners
Опубликовано:

Странно, но у меня с одинаковыми вид пид тундра всё видит корркетно.

 

7 минут назад, WG_Magners сказал:

Она еще и лишних осей где-то усмотрела

 

Если было устройство с темже вид пид, а потом ему поменяли хид дескриптор, то винда будет помнить старый. 

Опубликовано: (изменено)
3 минуты назад, l3VGV сказал:

Если было устройство с темже вид пид, а потом ему поменяли хид дескриптор, то винда будет помнить старый. 

 

Звучит как причина не делать динамическую конфигурацию. Поковыряюсь еще, подумаю. 
А в MMJoy конфигурация в системе обновляется?

Изменено пользователем WG_Magners
Опубликовано:

Да, но если не менять вид пид то нужно руками прибить устройство в система. А потом только подключать

Опубликовано:
1 минуту назад, l3VGV сказал:

Да, но если не менять вид пид то нужно руками прибить устройство в система. А потом только подключать


Жуть какая. В общем мне нужно мнение сообщества как будет лучше:

 

1) Добавляем возможность смены VID/PID и делаем динамическую конфигурацию

2) Оставляем VID/PID от производителя и статическую конфигурацию "по-максимуму"

 

Лично мне второй вариант больше нравится, так как он не способствует засеранию системы кучей несуществующих устройств, появившихся в результате смены VID/PID в процессе конфигурации

Опубликовано:

обновился програматором но бяка осталась

ONT87C6Ook8.jpg

Опубликовано:
10 минут назад, l3VGV сказал:

тундра всё видит корркетно.

 

А можно в личку конфигурацию HID в stm? Я только посмотреть)

1 минуту назад, =VCC=Ghash34 сказал:

обновился програматором но бяка осталась

 

Ок, бяку починим) Мне просто сложно ее ловить, так как она у меня не появляется

Опубликовано:
__ALIGN_BEGIN static uint8_t HID_MOUSE_ReportDesc[HID_JOYSTICK_REPORT_DESC_SIZE]  __ALIGN_END =
{





		//phisical axis
		0x05, 0x01,        // Usage Page (Generic Desktop Ctrls)
		0x09, 0x04,        // Usage (Joystick)
		0xA1, 0x01,        // Collection (Application)

		0x85, 0x01,        //     Report ID (1)

		//buttons
		0x05, 0x09,        //     Usage Page (Button)
		0x19, 0x01,        //     Usage Minimum (0x01)
		0x29, 0x08,        //     Usage Maximum (0x08)
		0x15, 0x00,        //     Logical Minimum (0)
		0x25, 0x01,        //     Logical Maximum (1)
		0x95, 0x08,        //     Report Count (8)
		0x75, 0x01,        //     Report Size (1)
		0x55, 0x00,
		0x65, 0x00,
		0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)

		0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
		0x09, 0x01,
		0xA1, 0x00,        //   Collection (Physical)
		//padding
		//0x95, 0x01,        //     Report Count (1)
		//0x75, 0x07,        //     Report Size (7)
		//0x81, 0x07,        //     Input (Const,Var,Rel,No Wrap,Linear,Preferred State,No Null Position)

		//axis

		0x09, 0x33,        //     Usage (Rx)
		0x09, 0x34,        //     Usage (Ry)
		0x09, 0x35,        //     Usage (Rz)

		0x09, 0x30,        //     Usage (X)
		0x09, 0x31,        //     Usage (Y)
		0x09, 0x32,        //     Usage (Z)


		0x09, 0x36,        //     Usage (Slider)
		0x09, 0x37,        //     Usage (Dial)




		//0x16, 0x00, 0x00,  //     Logical Minimum (0)
		//0x26, 0xFF, 0x00,  //     Logical Maximum (255)
		//0x35, 0x00,        //     Physical Minimum (0)
		//0x46, 0xFF, 0x00,  //     Physical Maximum (255)
		//0x16, 0x00, 0x00,  //     Logical Minimum (0)
		//0x27, 0xFF, 0xFF, 0x00, 0x00,  //     Logical Maximum (65535)
		//0x35, 0x00,        //     Physical Minimum (0)
		//0x47, 0xFF, 0xFF, 0x00, 0x00,  //     Physical Maximum (65535)

		0x16, 0x01, 0x80,  //     Logical Minimum (-32767)
		0x26, 0xFF, 0x7F,  //     Logical Maximum (32767)

		0x95, 0x08,        //     Report Count (8)
		0x75, 0x10,        //     Report Size (16)//0x10
		0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)



		//led & lcd
		0x85, 0x02,        //   Report ID (2)
		0x09, 0x01,        //   Usage (0x01)
	    0x15, 0x00,        //              LOGICAL_MINIMUM (0)
	    0x25, 0xFF,        //            LOGICAL_MAXIMUM (127)
		0x75, 0x08,        //   Report Size (8)
		0x95, 0x18,        //   Report Count (24)
		0x91, 0x02,        //   Output (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)


		0xC0,              // End Collection
		0xC0,              // End Collection





		//second axis data
				0x05, 0x01,        // Usage Page (Generic Desktop Ctrls)
				0x09, 0x04,        // Usage (Joystick)
				0xA1, 0x01,        // Collection (Application)

				0x85, 0x03,        //     Report ID (3)

				//virtual buttons
				0x05, 0x09,        //     Usage Page (Button)
				0x19, 0x01,        //     Usage Minimum (0x01)
				0x29, 0x08,        //     Usage Maximum (0x08)
				0x15, 0x00,        //     Logical Minimum (0)
				0x25, 0x01,        //     Logical Maximum (1)
				0x95, 0x08,        //     Report Count (8)
				0x75, 0x01,        //     Report Size (1)
				0x55, 0x00,
				0x65, 0x00,
				0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)

				0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
				0x09, 0x01,
				0xA1, 0x00,        //   Collection (Physical)
				//padding
				//0x95, 0x01,        //     Report Count (1)
				//0x75, 0x07,        //     Report Size (7)
				//0x81, 0x07,        //     Input (Const,Var,Rel,No Wrap,Linear,Preferred State,No Null Position)


				//and a 5 totaly virtual axis

				//axis

				0x09, 0x33,        //     Usage (Rx)
				0x09, 0x34,        //     Usage (Ry)
				0x09, 0x35,        //     Usage (Rz)

				0x09, 0x30,        //     Usage (X)
				0x09, 0x31,        //     Usage (Y)
				0x09, 0x32,        //     Usage (Z)

				0x09, 0x36,        //     Usage (Slider)
				0x09, 0x37,        //     Usage (Dial)

				//0x16, 0x00, 0x00,  //     Logical Minimum (0)
				//0x27, 0xFF, 0xFF, 0x00, 0x00,  //     Logical Maximum (65535)
				//0x35, 0x00,        //     Physical Minimum (0)
				//0x47, 0xFF, 0xFF, 0x00, 0x00,  //     Physical Maximum (65535)

				0x16, 0x01, 0x80,  //     Logical Minimum (-32767)
				0x26, 0xFF, 0x7F,  //     Logical Maximum (32767)

				0x95, 0x08,        //     Report Count (3)
				0x75, 0x10,        //     Report Size (16)
				0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)





				0xC0,              //   End Collection
				0xC0,              // End Collection









		// 120 bytes

}; 

 

 

 

 

 

__ALIGN_BEGIN static uint8_t USBD_HID_CfgDesc[USB_HID_CONFIG_DESC_SIZ]  __ALIGN_END =
{
  0x09, /* bLength: Configuration Descriptor size */
  USB_DESC_TYPE_CONFIGURATION, /* bDescriptorType: Configuration */
  USB_HID_CONFIG_DESC_SIZ,
  /* wTotalLength: Bytes returned */
  0x00,
  0x01,         /*bNumInterfaces: 1 interface*/
  0x01,         /*bConfigurationValue: Configuration value*/
  0x00,         /*iConfiguration: Index of string descriptor describing
  the configuration*/
  0xE0,         /*bmAttributes: bus powered and Support Remote Wake-up */
  0x32,         /*MaxPower 100 mA: this current is used for detecting Vbus*/
  
  /************** Descriptor of Joystick Mouse interface ****************/
  /* 09 */
  0x09,         /*bLength: Interface Descriptor size*/
  USB_DESC_TYPE_INTERFACE,/*bDescriptorType: Interface descriptor type*/
  0x00,         /*bInterfaceNumber: Number of Interface*/
  0x00,         /*bAlternateSetting: Alternate setting*/
  0x02,         /*bNumEndpoints*/
  0x03,         /*bInterfaceClass: HID*/
  0x00,         /*bInterfaceSubClass : 1=BOOT, 0=no boot*/
  0x00,         /*nInterfaceProtocol : 0=none, 1=keyboard, 2=mouse*/
  0,            /*iInterface: Index of string descriptor*/
  /******************** Descriptor of Joystick Mouse HID ********************/
  /* 18 */
  0x09,         /*bLength: HID Descriptor size*/
  HID_DESCRIPTOR_TYPE, /*bDescriptorType: HID*/
  0x11,         /*bcdHID: HID Class Spec release number*/
  0x01,
  0x00,         /*bCountryCode: Hardware target country*/
  0x01,         /*bNumDescriptors: Number of HID class descriptors to follow*/
  0x22,         /*bDescriptorType*/
  HID_JOYSTICK_REPORT_DESC_SIZE,/*wItemLength: Total length of Report descriptor*/
  0x00,
  /******************** Descriptor of Mouse endpoint ********************/
  /* 27 */
  0x07,          /*bLength: Endpoint Descriptor size*/
  USB_DESC_TYPE_ENDPOINT, /*bDescriptorType:*/
  
  HID_EPIN_ADDR,     /*bEndpointAddress: Endpoint Address (IN)*/
  0x03,          /*bmAttributes: Interrupt endpoint*/
  HID_EPIN_SIZE, /*wMaxPacketSize: 4 Byte max *///почему 4 байта мак!?
  0x00,
  HID_FS_BINTERVAL,          /*bInterval: Polling Interval (10 ms)*/
  /* 34 */

	0x07,          /*bLength: Endpoint Descriptor size*/
  USB_DESC_TYPE_ENDPOINT, /*bDescriptorType:*/

  HID_EPOUT_ADDR,     /*bEndpointAddress: Endpoint Address (IN)*/
  0x03,          /*bmAttributes: Interrupt endpoint*/
  HID_EPOUT_SIZE, /*wMaxPacketSize: 4 Byte max */
  0x00,
  HID_POLLING_INTERVAL,

} ;

 

 

Нет, пусть боятся все!

Одно неясно, а конфа то вам зачем?

 

Ещё интересно, а какие вид пид используюст VKB и VPC, купленные или выпросили у STM/Atmel?

Опубликовано:
1 минуту назад, l3VGV сказал:

Нет, пусть боятся все!


Изверг)

Дескриптор репорта меня особо не интересует, имя ты просто в хидере поменял, значит? Это ж библиотека HAL?

Опубликовано:

Так точно. Я ничего архитектурно не менял. Оно там дефайнами забито, я так и оставил.

Опубликовано: (изменено)
10 минут назад, l3VGV сказал:

Так точно. Я ничего архитектурно не менял. Оно там дефайнами забито, я так и оставил.

Тогда и у меня должно работать. Правда у меня не HAL теперь, а SPL, но суть там одна и та же. Сравню ещё потом

Изменено пользователем WG_Magners
Опубликовано:
28 минут назад, WG_Magners сказал:

1) Добавляем возможность смены VID/PID и делаем динамическую конфигурацию

2) Оставляем VID/PID от производителя и статическую конфигурацию "по-максимуму"

Я за первый вариант:

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

Кстати У того же Мегамозга в архиве есть USBDev где надо убирать неиспользуемые USB устройства. Это не оно? программку приложил.

Tools.7zip

33 минуты назад, WG_Magners сказал:

засеранию системы кучей несуществующих устройств

 

Опубликовано:

Я за то что хотят все))), как всем удобно так и пусть будет

1 час назад, WG_Magners сказал:

2) Оставляем VID/PID от производителя и статическую конфигурацию "по-максимуму"

А в этом случае ты можешь сделать так, что бы два устройства в игре видились как два разных? Ты же писал про проблему в тундре?

1 час назад, WG_Magners сказал:

Лично мне второй вариант больше нравится, так как он не способствует засеранию системы кучей несуществующих устройств, появившихся в результате смены VID/PID в процессе конфигурации

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

Опубликовано:

А можно пояснить за 

Цитата

Shift registers pull up and pull down selecting

 

У меня на схеме сейчас выход с 74HC165 подключен напрямую к +5 толерантному пину (1 слева от micro-usb PB12). Требуется ли что-то выбирать в этом пункте?

Опубликовано: (изменено)
20 минут назад, zippoa сказал:

У меня на схеме сейчас выход с 74HC165 подключен напрямую к +5 толерантному пину (1 слева от micro-usb PB12). Требуется ли что-то выбирать в этом пункте?

Первое - регистр с подтяжкой к 5 В сигнал - на пине сдвигового регистра - 0. Второе - Регистр с оттяжкой к 0, сигнал на пине сдвигового регистра - +5В.

Изменено пользователем Johnet
Опубликовано:
4 часа назад, Johnet сказал:

Первое - регистр с подтяжкой к 5 В сигнал - на пине сдвигового регистра - 0. Второе - Регистр с оттяжкой к 0, сигнал на пине сдвигового регистра - +5В.

 

На правах зануды я бы сказал не к 5В, а к питанию, т.к. оно может быть и 3.3В

Опубликовано:
5 часов назад, zippoa сказал:

А можно пояснить за 

 

У меня на схеме сейчас выход с 74HC165 подключен напрямую к +5 толерантному пину (1 слева от micro-usb PB12). Требуется ли что-то выбирать в этом пункте?

 

По выборе сдвиговых регистров на одноименной вкладке нужно выбрать каким способом у вас подключены кнопки к регистру. Pull up это с подтяжкой резистором к линии питания, pull down - соответственно, наоборот, к земле. 

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

Опубликовано:
6 часов назад, =M=PiloT сказал:

Ты же писал про проблему в тундре?

 

Они видятся как 2 разных устройства, а вот имено почемуто одинаковые.

Опубликовано:
6 часов назад, =M=PiloT сказал:

Я за то что хотят все))), как всем удобно так и пусть будет

А в этом случае ты можешь сделать так, что бы два устройства в игре видились как два разных? Ты же писал про проблему в тундре?

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

 

Обе проблемы имею не функциональный характер, а визуальный. То есть видно не то, что есть на самом деле, при том, что работает всё как надо.
В целом согласен, что хочется чтоб было "как покупное", и ничего лишнего не торчало наружу. Но я представляю боль при конфигурации, когда ты меняешь количество осей и кнопок и тебе приходится удалять устройство из системы (или менять VID/PID) чтобы обновился дескриптор. Скорее всего все будут просто менять VID/PID, добавляя мусора в свою систему. 

Наверное, не стоит решать за других как им лучше, но у меня всё внутри переворачивается когда я представляю как люди делают такое непотребство, а я в этом пособник)

  • Нравится 2
Опубликовано:
1 час назад, WG_Magners сказал:

То есть видно не то, что есть на самом деле

Ни кто не поспорит, что программа конфигурации юзерская и не только для производителя. Это очевидно из...да из всего. И что, например мы имеем назначенные производителем 25 кнопок и 4 оси, при этом видимые 32 и 8 в винде не только не выглядят глупо, они часть вариаций  конфигурации, ведь мы имеем возможность их воспринимать и конфигурировать как кнопки в оси, оси в кнопки, "виртуальные" оси и тд и тп. В чем проблема я в упор не понимаю. Но я не против, чтоб было как хотят все)). Пусть всем будет гуд, но думаю ты больше прав. Мнения ты увидел. Подумай сам как лучше, у тебя вроде получается хорошо. Если не "зайдет" опять таки, тебе переделывать или не переделывать. Каждый конфиг = новый ID  это конечно "засада". Не, не нравится)))

Опубликовано:
2 часа назад, WG_Magners сказал:

но у меня всё внутри переворачивается когда я представляю как люди делают такое непотребство, а я в этом пособник

 

таже фигня

Опубликовано: (изменено)
5 часов назад, WG_Magners сказал:

когда ты меняешь количество осей и кнопок и тебе приходится удалять устройство из системы (или менять VID/PID) чтобы обновился дескриптор.

Ребят, может все не так печально? VID/PID назначать разное для разных устройств а на этапе экспериментов, меняя конфигурацию одного устройства чистить реестр? Поскажите, все таки. Программа Usbdev которую я выше выложил, разве не для этого?

Изменено пользователем Johnet
Опубликовано:
44 минуты назад, Johnet сказал:

Ребят, может все не так печально? VID/PID назначать разное для разных устройств а на этапе экспериментов, меняя конфигурацию одного устройства чистить реестр? Поскажите, все таки. Программа Usbdev которую я выше выложил, разве не для этого?


Я добавлю возможность менять PID (VID оставлю фиксированным, чтобы фильтровать список HID устройств в программе). Также сделаю галку для динамического дескриптора HID. Всё это спрячу под спойлер, чтоб руки сильно не тянулись.

Таков путь. Я всё сказал.

  • Нравится 1
  • Спасибо! 1
  • Поддерживаю! 1
Опубликовано:
19 часов назад, WG_Magners сказал:

То есть если я запилю динамическую конфигурацию устройства в системе в зависимости от конфигурации внутри железки (отключение неиспользуемых осей и кнопок), то винда не обновит дескриптор?

Обновит (без смены *ID )

  • Спасибо! 1
Опубликовано: (изменено)

если вдруг кто то такой же тупой как я то может ему пригодится эта картинка

ap8ZA7BAX9I.jpg

Изменено пользователем =VCC=Ghash34
  • ХА-ХА 1
Опубликовано: (изменено)
2 часа назад, kreml сказал:

Обновит (без смены *ID )

Очень хорошо, если так) 

Изменение дескриптора в динамике сделаю в любом случае, обновит или нет повлияет только на наличие галки включающей или выключающей эту функцию

Изменено пользователем WG_Magners
Опубликовано:
2 часа назад, =VCC=Ghash34 сказал:

может ему пригодится

А не 5 вольт питание?

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
×
×
  • Создать...