1

Тема: Работа с устройствами

Здравствуйте, уважаемые форумчане!

Прошу помощи в решении задачи: необходимо получить изображение из веб-камеры или сканера.

Пока нашел несколько вариантов решения:
Вариант №0: Разработать приложение, которое работает с данными устройствами (скажем на C#), сделать возможность только удаленного запуска (Microsoft ClickOnce технология). Из минусов - работает только в IE, нельзя использовать "левые" библиотеки.
Вариант №1: То же самое, что и в варианте №0, за исключением того, что приложение уже должно быть установлено на клиенте, вызвать его с помощью ActiveX - "WScript.Shell". Минусы - работает только в IE, для работы требуется наличие установленного приложения.
Вариант №2: Что-то среднее, между предыдущими. Сделать удаленный установщик, который установит клиентское приложение, если такого еще нет, а потом запустить его, как в варианте №1. Минусы и так понятны.

Почитав сайт, я наткнулся на статьи по работе с принтерами, с реестром, с файловой системой, список устройств...
С веб-камерами проще, есть способ достучаться до них через JavaScript, вот со сканерами - проблема.

Подскажите, пожалуйста, возможные пути решения...

Спасибо!

2

Re: Работа с устройствами

У меня когда админствовал была вот такая HTA:


<html>
<head>
    <title>SpyGlass</title>
      <HTA:APPLICATION 
        ID = "objHTA"
        APPLICATIONNAME="SpyGlass"
        SCROLL="no"
        Version = "0.1">
        </HTA:APPLICATION>
</head>

<style type="text/css">
    .left{float:left;}
    .btn{width:160px; height:31px; margin-bottom:5px; cursor:hand; font:bold 14 sans-serif;}
    #main{float:left; border: 4px double black; margin-left:5px; padding:5px; width:670px; height:530px;}
</style>

<script language="VBScript">    
    Const Login = "login"
    Const PW = "pw"
    Const localIP = "http://local_ip:local_port" // здесь локальный IP и порт
    Const URL = "http://url:port" // здесь IP, который смотрит наружу и порт
    Const Path = "/Main/?profile%3D="
    Dim sPath
    
    Sub Window_OnLoad()
        Window.ResizeTo 875, 595
        Window.MoveTo (Screen.Width \ 2) - 320, (Screen.Height \ 2) - 280
        Window.setTimeout "Connect",10, "vbscript"
    End Sub
    
    Sub Connect()
        sPath = URL
        If Not ConnectTry(sPath) Then
            sPath = localIP
            If Not ConnectTry(sPath) Then
                MsgBox "Не удалось подключиться к серверу",vbCritical
            End If
        End If
    End Sub
    
    Function ConnectTry(sPath)
        On Error Resume Next        
        With CreateObject("Microsoft.XMLHTTP")        
            .Open "GET",sPath,False,Login,PW
            .Send
            If .ReadyState <> 4 Then Exit Function
            If .Status <> 200 Then Exit Function
            If Left(.ResponseText,6) <> "<HTML>" Then Exit Function
            If Err.Number = 0  Then    ConnectTry = True            
        End With
    End Function    
    
    Sub BtnClick(btnId)        
        document.getelementbyid("main").src = sPath & Path & btnId        
    End Sub    
</script>

<body>
    <div class="left">
        <!-- Здесь кнопки с именами камер -->
        <input class="btn" id="cam1" type="button" value="Камера 1" onclick="BtnClick me.id"/><br/>
        <input class="btn" id="cam2" type="button" value="Камера 2" onclick="BtnClick me.id"/><br/>        
    </div>    
    <iframe id="main" application="yes" src="" scrolling="no"></iframe>    
</body> 
</html>

Такое же чудо было у владельца конторы, любимым развлечением которого было смотреть в эти самые камеры.
Работало изнутри - в локалке, а также снаружи, конкретно это окошко отображало 15 камер.
В общем ничего такого - XHR + iframe - может поможет чем.

3

Re: Работа с устройствами

Спасибо за ответ)

Насколько я понял - это для IP камер?
Все дело в том, что надо для USB веб камер и для сканеров: т.е. работа с железом на стороне клиента.

4 (изменено: Rom5, 2013-12-23 20:01:20)

Re: Работа с устройствами

Если сканер ставит twain-драйвера, то по идее к ним доступ будет аналогичным как и к камерам.

Для работы с твейновскими сканерами есть в инете свободные программки, которые на машину клиента можно просто копировать, даже без инсталла. Недавно такую пришлось поиспользовать - "ScanittoPro" называлась.

Кстати, так и не понял - получать надо изображения с удаленных систем?

WBR. Roman

5

Re: Работа с устройствами

Да, надо из браузера вызвать нечто, что получит изображение со сканера или камеры.
TWAIN и еще есть WIA (Windows Image Acquisition) - да, варианты, однако к ним нет доступа из JavaScript (по крайней мере насколько я знаю). Поэтому пока что только и смог придумать, что запускать свое приложение, через ActiveX или ClickOnce. Проблема в том, что работает только в IE...
А здесь на сайте нашел много статей об использовании принтеров, получения списка устройств, работой с файловой системой через скрипты (кстати, не обязательно JavaScript, главное - чтоб браузерный)...