Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Работа с USB портом. / 15 сообщений из 15, страница 1 из 1
03.01.2013, 11:43
    #38099137
wvetal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с USB портом.
Как считать данные поступающие на вход USB? Какую библиотеку лучше(удобней, проще) всего использовать?
Например, у меня есть игровой USB джойстик. Как мне отловить то, что поступает на вход при нажатии на какую-то кнопку?
...
Рейтинг: 0 / 0
03.01.2013, 14:18
    #38099294
wvetal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с USB портом.
Пока нашел такую прогу:
http://www.codeproject.com/Articles/18099/A-USB-HID-Component-for-C
... разбираюсь ... вроде должно работать ... хожу под отладкой ... но чё-то одна проблемка ...

Пока пробую прочитать данные из usb-мышки...

... там в коде есть такое место:
Код: c#
1.
m_hHandle = CreateFile(strPath, GENERIC_READ | GENERIC_WRITE, 0, IntPtr.Zero, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, IntPtr.Zero);


Причем strPath у меня равен:
strPath = "\\\\?\\hid#vid_046d&pid_c03e#6&35594c20&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}";

... но метод CreateFile почему-то возвращает -1
(этот метод берется из
Код: c#
1.
[DllImport("kernel32.dll", SetLastError = true)] protected static extern IntPtr CreateFile([MarshalAs(UnmanagedType.LPStr)] string strName, uint nAccess, uint nShareMode, IntPtr lpSecurity, uint nCreationFlags, uint nAttributes, IntPtr lpTemplate);

)

Из-за того что [m_hHandle = -1] - не получаю ожидаемого результата. Думаю CreateFile должен возвращать что-то другое, а не -1.

Может strPath не так определен?
Кто подскажет strPath передается в правильном виде?
...
Рейтинг: 0 / 0
03.01.2013, 16:34
    #38099411
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с USB портом.
wvetalПричем strPath у меня равен:
strPath = "\\\\?\\hid#vid_046d&pid_c03e#6&35594c20&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}";
Префикс \\?\ используется для объектов файловой системы, а ты обращаешься к устройству. Попробуй префикс \\.\. Заодно открой для себя @-строки:
Код: c#
1.
strPath = @"\\.\hid#vid_046d&pid_c03e#6&35594c20&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}";
...
Рейтинг: 0 / 0
03.01.2013, 16:59
    #38099432
wvetal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с USB портом.
bazilewvetalПричем strPath у меня равен:
strPath = "\\\\?\\hid#vid_046d&pid_c03e#6&35594c20&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}";
Префикс \\?\ используется для объектов файловой системы, а ты обращаешься к устройству. Попробуй префикс \\.\. Заодно открой для себя @-строки:
Код: c#
1.
strPath = @"\\.\hid#vid_046d&pid_c03e#6&35594c20&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}";



В таком случае GetLastError() = 123:
ERROR_INVALID_NAME
123 (0x7B)
The filename, directory name, or volume label syntax is incorrect.

а если без @ (то есть strPath = "\\.\hid#vid_046d&pid_c03e#6&35594c20&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}";)
то GetLastError() = 5:

ERROR_ACCESS_DENIED
5 (0x5)
Access is denied.
...
Рейтинг: 0 / 0
03.01.2013, 17:07
    #38099434
wvetal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с USB портом.
wvetalbazileпропущено...

Префикс \\?\ используется для объектов файловой системы, а ты обращаешься к устройству. Попробуй префикс \\.\. Заодно открой для себя @-строки:
Код: c#
1.
strPath = @"\\.\hid#vid_046d&pid_c03e#6&35594c20&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}";



В таком случае GetLastError() = 123:
ERROR_INVALID_NAME
123 (0x7B)
The filename, directory name, or volume label syntax is incorrect.


Извиняюсь ошибка 123 у меня получилась из-за того что я оставил двойные слеши
(то есть strPath = @"\\\\.\\hid#vid_046d&pid_c03e#6&35594c20&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}";)

Когда (strPath = @"\\.\hid#vid_046d&pid_c03e#6&35594c20&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}";) - ошибка 5 остается
...
Рейтинг: 0 / 0
03.01.2013, 17:18
    #38099442
wvetal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с USB портом.
Кажется понял в чем дело:

Заменил:
Код: c#
1.
m_hHandle = CreateFile(strPath, GENERIC_READ | GENERIC_WRITE, 0, IntPtr.Zero, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, IntPtr.Zero);


на
Код: c#
1.
m_hHandle = CreateFile(strPath, GENERIC_WRITE, 0, IntPtr.Zero, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, IntPtr.Zero);


получил ошибку 32:

ERROR_SHARING_VIOLATION
32 (0x20)
The process cannot access the file because it is being used by another process.

Похоже на мышке поэкспериментировать не получится. Нужно сразу usb-джойстик подключать.
Как проверю - отпишусь (но это будет после 7го января).
...
Рейтинг: 0 / 0
04.01.2013, 14:19
    #38099993
ЕвгенийВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с USB портом.
...
Рейтинг: 0 / 0
08.01.2013, 12:31
    #38102057
wvetal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с USB портом.
ЕвгенийВwvetal,
http://microsin.net/programming/PC/hid-usb-driver-library-for-net-csharp.html
Спасибо за ссылку - это как раз то что нужно.

ЗЫ: http://www.codeproject.com/Articles/18099/A-USB-HID-Component-for-C - эта прога тоже работает. (Подключил джойстик - все ОК)
...
Рейтинг: 0 / 0
10.01.2013, 14:47
    #38104903
wvetal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с USB портом.
wvetalЕвгенийВwvetal,
http://microsin.net/programming/PC/hid-usb-driver-library-for-net-csharp.html
Спасибо за ссылку - это как раз то что нужно.

ЗЫ: http://www.codeproject.com/Articles/18099/A-USB-HID-Component-for-C - эта прога тоже работает. (Подключил джойстик - все ОК)
У кого-то это (библиотека USBHIDDRIVER.dll и прога по второй ссылке) работает на Windows 7?
А то у меня на Windows XP все прекрасно работает, а на Windows 7 (32 и 64 бит) - не работает?
Есть ли способ сделать так чтоб на Win7 тоже все работало?
Или может другая библиотека нужна?
...
Рейтинг: 0 / 0
11.01.2013, 11:52
    #38106094
wvetal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с USB портом.
Может напрямую с hid.dll (которая содержит функции для доступа к устройствам USB HID) работать.
Только я не нашел ни примеров кода, ни документации к этой библиотеке.

Может кто чё-то подскажет, или даст ссылку на материал к этой библиотеке?
...
Рейтинг: 0 / 0
11.01.2013, 14:46
    #38106461
ksk
ksk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с USB портом.
wvetal,

А из-под админа прогу запустить не помогает?
...
Рейтинг: 0 / 0
11.01.2013, 15:11
    #38106517
wvetal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с USB портом.
kskwvetal,
А из-под админа прогу запустить не помогает?
Проги то запускаются - функции получения данных usb не работают. (под админом и запускаю)
...
Рейтинг: 0 / 0
11.01.2013, 17:22
    #38106807
wvetal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с USB портом.
Вот нашел еще одну интересную библиотеку AtUsbHid.dll
Здесь

На WinXP работает, буду проверять на Win7 - потом отпишусь.
...
Рейтинг: 0 / 0
12.01.2013, 23:26
    #38107964
wvetal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с USB портом.
В общем сделал так, чтоб и на Win7(64 бита) тоже работали библиотеки USBHIDDRIVER.dll и AtUsbHid.dll.

Решение: В свойствах пректа -> вкладка Build -> Platform target: нужно поставить x86 (у меня стояло Any CPU - поэтому на Win7 и не работало).

Теперь все прекрасно работает.
...
Рейтинг: 0 / 0
14.01.2013, 16:05
    #38109515
super-code
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с USB портом.
wvetal, для джойстика надо использовать DIrectX, точнее directInput
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Работа с USB портом. / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]