|
Как отследить и обработать события от 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
|
Специально для regniws (6) http://sikuda.ru/skaz-o-tom-kak-pokazat-v-brauzere-kartinku-s-lokalnogo-diska/
|
|||
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 |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |