Как к устройствам доступа на клиенте ПК от браузера

Что различными путями является к устройствам доступа на клиенте ПК - считывателю штрихкода, сканеру, и т.д. - от браузера? Я понимаю, что моим пользователям, возможно, понадобится плагин. Эти устройства могут иметь API, который характерен для их устройства; я хотел бы использовать их API при наличии (возможно, Java, возможно, C, возможно, командная строка).

5
задан Upperstage 1 February 2010 в 18:10
поделиться

4 ответа

A подписан Java-апплет может иметь платформонезависимый доступ к большинству вещей. Пользователь должен установить Java и разрешить запуск подписанного апплета.

Если вы запишите плагин на NSAPI, то после его установки вы получите доступ практически ко всему, что может быть доступно пользователю. Конечно же, они должны установить плагин.

Флэш предлагает довольно большой доступ к устройствам.

5
ответ дан 14 December 2019 в 08:50
поделиться

Это не тривиальная вещь, и для нее нет стандартизованного API (за исключением, возможно, области JScript/ActiveX, которая ограничена Internet Explorer).

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

Большая часть других функций ограничивается пользовательскими запрограммированными Active-X и другими подключаемыми модулями. Я видел коммерческие подключаемые модули сканера штрих-кодов, которые обсуждались в SO, но не могу сейчас найти ответ на этот вопрос.

1
ответ дан 14 December 2019 в 08:50
поделиться

Многие устройства для считывания штрих-кодов могут быть вставлены между клавиатурой и ПК, поэтому отсканированные штрих-коды попадают прямо в буфер клавиатуры. Другие устройства либо подключаются к последовательному порту, либо имеют драйверы, эмулирующие последовательный порт. Следующий код питона будет копировать данные с реального или виртуального COM-порта в буфер клавиатуры активного окна. Номер COM-порта жестко закодирован, но его можно легко изменить.

import serial
import SendKeys

ser = serial.Serial(2)
print ser.portstr
while 1: # exit loop when ctrl/c pressed
    line = ""
    while 1:
        char = ser.read()
        if char == "\r": break
        line = line + char
    print line
    SendKeys.SendKeys(line, 0)
ser.close()
1
ответ дан 14 December 2019 в 08:50
поделиться

Вы можете изменить свою подпись, чтобы вернуть коллекцию или итерацию. Для возврата Iterable можно возвратить новое нечто-Iterable (myItems.iterator ()) вместо myItems напрямую, чтобы избежать возможной попытки клиента поместить в список (и изменить его). Если вы не хотите, чтобы они изменяли Список (List), также рассмотрите возможность возврата итератора, но обратите внимание, что Iterable лучше, так как вы можете использовать их непосредственно для каждого цикла.

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

-121--4154834-

Между клавиатурой и ПК может быть установлено множество считывателей штрих-кодов, поэтому отсканированные штрих-коды попадают прямо в буфер клавиатуры. Другие устройства подключаются к последовательному порту или имеют драйверы, эмулирующие последовательный порт. Следующий python-код копирует данные из реального или виртуального COM-порта в буфер клавиатуры активного окна. Номер COM-порта жестко закодирован, но его можно легко изменить.

import serial
import SendKeys

ser = serial.Serial(2)
print ser.portstr
while 1: # exit loop when ctrl/c pressed
    line = ""
    while 1:
        char = ser.read()
        if char == "\r": break
        line = line + char
    print line
    SendKeys.SendKeys(line, 0)
ser.close()
-121--4903959-

В зависимости от того, что вы пытаетесь сделать, Silverlight и Adobe имеют некоторые ограниченные возможности в этой области. WebCams, печать в Silverlight 4.0 и т.д. Однако он нетривиален. Silverlight 4.0 и Flash поддерживают сканирование штрих-кодов.

0
ответ дан 14 December 2019 в 08:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: