Имя: Пароль:
IT
Веб-мастеринг
Как отследить и обработать события от USB HID устройства? Javascript
0 musdust
 
06.02.14
11:18
Собственно, сабж.
1 spectre1978
 
06.02.14
11:25
у JS разве есть доступ до такого?
2 Torquader
 
06.02.14
11:35
Таки USB-HID для Javascript - это нажатие кнопок клавиатуры.
Так что никаких других методов и нет.
3 musdust
 
06.02.14
11:39
(0) У JS есть доступ до всего.
(1) Это точная информация?
4 musdust
 
06.02.14
12:01
Подниму
5 Asmody
 
06.02.14
12:03
(3) [ У JS есть доступ до всего. ] - да ты что? может и к файловой системе доступ есть?
6 regniws
 
06.02.14
12:04
(5) ессно ))))))
var fso=new ActiveXObject("Scripting.FileSystemObject");
7 kokamoonga
 
06.02.14
12:39
(6) С каких пор ActiveX имеет отношение к javascript? И с каких пор ActiveX стал поддерживаться в браузерах отличных от осла?
8 pumbaEO
 
06.02.14
13:04
есть node-webkit
9 musdust
 
06.02.14
13:26
(5) Ты думаешь что нету? Я думал ты шаришь. Ошибся
10 regniws
 
06.02.14
13:39
(9) зато по тебе видно, что не шаришь.
11 Asmody
 
06.02.14
13:47
(9) безопасность? нет, не слышал
12 H A D G E H O G s
 
06.02.14
13:50
К usb устройствам то у винды доступа нет толкового, а не то, что у этих ваших js
13 Принт
 
06.02.14
14:02
(12) и это не может не радовать
14 Torquader
 
06.02.14
16:03
(12) К USB-HID доступ есть, только там всё не просто - устройства-то разные бывают.
Только вот через javscript нельзя к Windows-API добраться.
Хотя, если javascript в составе Windows Scripting Host, то он там ничем от VbScript не отличается (кроме невозможности передачи параметров по ссылке, тогда как некоторые вызовы именно этого и требуют).
15 H A D G E H O G s
 
06.02.14
16:06
(14) Я смотрел статью - чуваки на Дельфи писали драйвер для usb устройства.

Я ниасилил их ход мысли.
16 Torquader
 
06.02.14
16:18
(15) Драйвер - это если нужно новое устройство, для существующего - нужно только прослойку-фильтр, которая будет часть событий себе загребать.
17 spectre1978
 
06.02.14
18:13
(14) А что не так?
18 spectre1978
 
06.02.14
18:13
к (15), прошу прощения
19 Ksandr
 
06.02.14
18:15
Ответ: Никак!
20 musdust
 
07.02.14
06:31
(10) по тебе тоже.
(11) плохо
(12) тем не менее она как-то с ними работает

(14) Интересно. Если известно как на VbScript пешить, напишите, я сам на JavaScript переведу.
(15) Драйвер то есть, винда определила устройство как USB-HID, установила для него стандартный драйвер.

(19) Правильно писать так - "Я не знаю ответ!"
21 spectre1978
 
07.02.14
08:32
(20) Вы бы написали по-нормальному, что вы хотите сделать. Что за устройство? JS какой - браузерный или WSH? И какой результат требуется получать, может, там специальные средства работы с хид нафиг не нужны. Тогда, возможно, вам кто-то вменяемо ответит.
22 musdust
 
07.02.14
09:43
(0) JS любой.
Можно на любом другом языке написать, на нужный JS я сам переведу.
Мне главное узнать какую dll вызвать и с какими параметрами, и вообще как работать с этим видом устройств.
Я вроде по нормальному написал, все понятно, мне кажется.
23 Принт
 
07.02.14
09:47
>>Можно на любом другом языке написать, на нужный JS я сам переведу.

import pywinusb.hid as hid

def read_values(target_usage):
    all_devices = hid.HidDeviceFilter().get_devices()
    
    if not all_devices:
        print("Can't find any non system HID device connected")
    else:
        usage_found = False
        for device in all_devices:
            try:
                device.open()
                for report in device.find_feature_reports():
                    if target_usage in report:
                        report.get()
                        print("The value:", list(report[target_usage]))
                        print("All the report: {0}".format(report.get_raw_data()))
                        usage_found = True
            finally:
                device.close()
        if not usage_found:
            print("The target device was found, but the requested usage does not exist!\n")

if __name__ == '__main__':
    target_usage = hid.get_full_usage_id(0xff00, 0x02)
    read_values(target_usage)
24 sikuda
 
07.02.14
09:56
Я так понимаю типа https://github.com/node-hid/node-hid
25 sikuda
 
07.02.14
09:58
26 spectre1978
 
07.02.14
19:24
(23) Да-да :) Особенно интересно посмотреть, как будет выглядеть перевод на JS первой же строчки этого кода.
27 Torquader
 
08.02.14
00:09
(26) Ну, если он получить OLE-объект нужного типа, то и на JavaScript переведёт.
А будет что-то типа WScript.GetObject(winmgmts:\\.\)
28 Torquader
 
08.02.14
00:10
Не забываем, кстати, что JavaScript как php и любой другой интерпретируемый язык - это просто текст и работать будет только в соответствующем интерпретаторе.
29 Принт
 
08.02.14
00:17
подсказка:
import ctypes

setup_api       = ctypes.windll.setupapi
hid_dll         = ctypes.windll.hid
kernel32        = ctypes.windll.kernel32

ReadFile            = kernel32.ReadFile
CancelIo            = kernel32.CancelIo
WriteFile           = kernel32.WriteFile
CloseHandle         = kernel32.CloseHandle
CloseHandle.restype = BOOL
CloseHandle.argtypes = [HANDLE]
SetEvent            = kernel32.SetEvent
WaitForSingleObject = kernel32.WaitForSingleObject

c_tchar                         = c_wchar
CreateFile                      = kernel32.CreateFileW
CreateEvent                     = kernel32.CreateEventW
    
CM_Get_Device_ID                = setup_api.CM_Get_Device_IDW

SetupDiEnumDeviceInfo           = setup_api.SetupDiEnumDeviceInfo
SetupDiEnumDeviceInterfaces     = setup_api.SetupDiEnumDeviceInterfaces
SetupDiDestroyDeviceInfoList    = setup_api.SetupDiDestroyDeviceInfoList
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший