02.12.2013, 11:31
|
|
Гражданин KAZUS.RU
Регистрация: 16.03.2009
Адрес: Украина, Харьков
Сообщений: 762
Сказал спасибо: 108
Сказали Спасибо 67 раз(а) в 67 сообщении(ях)
|
Re: STM32F4 USB HID составление репорта
добрый день. Вроде разобрался с отправкой/приемом 64 байт. Эхо работает нормально, что отправил то и принимаю.
Еще вопрос небольшой, за что отвечают следующие переменные :
#define HID_IN_EP 0x81
#define HID_OUT_EP 0x01
Адреса конечных точек? откуда их брать?
и еще, в ответе мне присылается два раза одна и таже строка. Т.е. в режиме эхо я получаю обратно два раза ту строку, которую послал на устройство. Это не самое страшное, но а как это исправить?))
Последний раз редактировалось swat24; 02.12.2013 в 11:52.
|
|
|
|
02.12.2013, 11:39
|
|
Прописка
Регистрация: 09.02.2011
Сообщений: 164
Сказал спасибо: 1
Сказали Спасибо 27 раз(а) в 22 сообщении(ях)
|
Re: STM32F4 USB HID составление репорта
Сообщение от swat24
|
Похоже из-за REPORT_ID (1) .т.к. у меня отправляется с 0...
|
А почему нельзя поставить нулевой байт в массиве передачи в 1?
|
|
|
|
02.12.2013, 11:54
|
|
Гражданин KAZUS.RU
Регистрация: 16.03.2009
Адрес: Украина, Харьков
Сообщений: 762
Сказал спасибо: 108
Сказали Спасибо 67 раз(а) в 67 сообщении(ях)
|
Re: STM32F4 USB HID составление репорта
Impartial,
Код:
|
for (int i = 2; i ‹ mass.Length; i++)
{
mass[i] = (byte)i;
}
mass[0] = 0x4d;
mass[1] = 0x10; |
А в ответ приходит следующее:
Код:
|
00 4D 32 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F |
т.е. мой нулевой элемент массива считается первым...
|
|
|
|
02.12.2013, 12:08
|
|
Прописка
Регистрация: 09.02.2011
Сообщений: 164
Сказал спасибо: 1
Сказали Спасибо 27 раз(а) в 22 сообщении(ях)
|
Re: STM32F4 USB HID составление репорта
Нужно разбираться с прогой в компе.
mass[0] всегда номер отчета.
|
|
|
|
02.12.2013, 12:14
|
|
Гражданин KAZUS.RU
Регистрация: 16.03.2009
Адрес: Украина, Харьков
Сообщений: 762
Сказал спасибо: 108
Сказали Спасибо 67 раз(а) в 67 сообщении(ях)
|
Re: STM32F4 USB HID составление репорта
как я понимаю номер репорта компонент подставляет сам, а где его выставить я пока не нашел.
А работать с нулевым репортом плохо?
У меня сейчас вопрос, который был и раньше, почему оно мне отправляет несколько раз на один запрос...
В точке останова просматриваю буфер приема, в 0 элементе 0x4d. т.е. то, что и отправил. Значит номер репорта отправляется до массива
Может и правда это из-за проги на компе... по точкам останова я отправляю с устройства 1 раз, а на компе приходит несколько...
Последний раз редактировалось swat24; 02.12.2013 в 12:21.
|
|
|
|
02.12.2013, 12:23
|
|
Прописка
Регистрация: 09.02.2011
Сообщений: 164
Сказал спасибо: 1
Сказали Спасибо 27 раз(а) в 22 сообщении(ях)
|
Re: STM32F4 USB HID составление репорта
int res;
if(handle)
{
buf[0] = 1; // First byte is report number
buf[1] = 1;
res = hid_write(handle, buf, 2);
}
Вот так выглядит отправка отчета из 2х байт. Передоется все равно 64 по установке в конечной точке.
Сообщение от swat24
|
У меня сейчас вопрос, который был и раньше, почему оно мне отправляет несколько раз на один запрос...
|
Чтобы ответить на этот вопрос нужно пересмотреть весь код.
|
|
|
|
02.12.2013, 12:34
|
|
Гражданин KAZUS.RU
Регистрация: 16.03.2009
Адрес: Украина, Харьков
Сообщений: 762
Сказал спасибо: 108
Сказали Спасибо 67 раз(а) в 67 сообщении(ях)
|
Re: STM32F4 USB HID составление репорта
Код:
|
for (int i = 2; i ‹ mass.Length; i++)
{
mass[i] = (byte)i;
}
mass[0] = 0x4d;
mass[1] = 0x10;
vid_pid.Pid = textBox2.Text;
vid_pid.Vid = textBox1.Text;
usb = new USBHIDDRIVER.USB.USBSharp();
usb_interface = new USBInterface("vid_" + vid_pid.Vid, "pid_" + vid_pid.Pid);
usb_interface.enableUsbBufferEvent(new System.EventHandler(data));
usb_interface.startRead();
if (usb_interface.Connect())
{
if (usb_interface.write(mass))
statusStrip1.Items[0].Text = "Подключено";
} |
Код:
|
private void data(object sender, EventArgs e)
{
USBHIDDRIVER.List.ListWithEvent test = (USBHIDDRIVER.List.ListWithEvent)sender;
print_data Delegate = new print_data(Print_data);
byte[] t = (byte[])test[test.Count - 1];
this.Invoke(Delegate,t);
} |
Вот так это выглядит у меня сейчас. Пробовал отдельной программой просмотреть что мне отсылает устройство - отсылает только один ответ. Значит это уже глюки программы на компе.
|
|
|
|
02.12.2013, 12:44
|
|
Прописка
Регистрация: 09.02.2011
Сообщений: 164
Сказал спасибо: 1
Сказали Спасибо 27 раз(а) в 22 сообщении(ях)
|
Re: STM32F4 USB HID составление репорта
Сообщение от swat24
|
usb_interface.write(mass)
|
А здесь что?
|
|
|
|
02.12.2013, 13:00
|
|
Гражданин KAZUS.RU
Регистрация: 16.03.2009
Адрес: Украина, Харьков
Сообщений: 762
Сказал спасибо: 108
Сказали Спасибо 67 раз(а) в 67 сообщении(ях)
|
Re: STM32F4 USB HID составление репорта
Код:
|
for (int i = 2; i ‹ mass.Length; i++)
{
mass[i] = (byte)i;
}
mass[0] = 0x4d;
mass[1] = 0x10; |
В компоненте есть счетчик - USBHIDDRIVER.USBInterface.usbBuffer.Count. Он после принятия следующих данных инкрементируется. Получается в начале показывает 2, потом 6,10... 20,27,35 и т.д.
По идее он должен сбрасываться после чтения, или после приема...
|
|
|
|
04.02.2014, 17:08
|
|
Частый гость
Регистрация: 20.04.2009
Сообщений: 17
Сказал спасибо: 1
Сказали Спасибо 2 раз(а) в 1 сообщении
|
Re: STM32F4 USB HID составление репорта
Доброе время суток!
вот ковыряю ЮСБ на 207-м проце, примеры запустил, вроди норм работает. В итоге нужно получить MSC и HID устройство в одном. В результате мучений и допиливаний либ получил рабочий MSC, а вот с хидом, который добавлен как второй интерфейс немного не выходит. в качестве хида взял пример мышки, можно проверить без дополнительного софта. Мышку видно в диспетчере ПК нормально, а вот отправка репорта не дает результата. Когда менял местами HID - MSC, то аналогично меняется работоспособность. мышка работает, а флеха нет! Подскажите где можно копнуть и подправить!
заранее спасибо!
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 09:20.
|
|