Как я могу направить вывод из программы, чтобы заполнить форму на веб-странице? - PullRequest
0 голосов
/ 21 июля 2011

Мой 1D сканер штрих-кода появляется в Linux как устройство ввода, позволяющее мне заполнять форму веб-страницы сканированием штрих-кода точно так же, как если бы я вводил данные вручную. Мне нужно повторить это поведение «отсканировать - поместить данные в веб-форму», используя двумерные штрих-коды, считанные с веб-камеры и извлеченные с помощью утилиты командной строки. Утилита, которую я использую (zbarcam), печатает обнаруженный код на стандартный вывод при обнаружении штрих-кода - очень приятно! Мне нужно как-то перенаправить этот поток stdout на текущую веб-страницу в моем браузере, чтобы я мог заполнить текстовое поле данными. Это похоже на простую проблему перенаправления, но я не могу понять, как заставить это работать. Возможно, есть способ заставить утилиту действовать как «виртуальное» устройство ввода?

Ответы [ 4 ]

1 голос
/ 14 января 2012

Используйте "Crikey"!

zbarcam -raw / dev / video0 | Crikey -i

Во-первых, вам нужно скачать и скомпилировать "Crikey", например так:

sudo apt-get установить libx11-dev x11proto-xext-dev libxt-dev libxtst-dev

wget http://www.shallowsky.com/software/crikey/crikey-0.8.3.tar.gz

tar -xzf crikey-0.8.3.tar.gz

cd crikey-0.8.3

сделать

sudo cp crikey / usr / local / bin

Теперь у вас все готово для работы, захвата и декодирования вашего штрих-кода, именно там, где вы поместили курсор .... окно Gedit, окно ввода Google, любое приложение ...

Просто введите zbarcam --raw / dev / video0 | Crikey -i

Если приведенная выше команда НЕ работает, попробуйте .. zbarcam --raw / dev / video1 | Crikey -i

Если у вас есть веб-камера, которая работает только с V4L1, попробуйте следующую команду. LD_PRELOAD = / usr / lib / libv4l / v4l1compat.so zbarcam --raw / dev / video1 | Crikey -i

или LD_PRELOAD = / usr / lib / libv4l / v4l1compat.so zbarcam --raw / dev / video0 | crikey -i

Здесь вы получили видеоролик, в котором показано, как я могу захватить любой штрих-код и получить результат в любом месте ...

http://www.youtube.com/watch?v=IPe_9bhPtT4

Наслаждайтесь! Любой комментарий или сомнение, пришлите мне по электронной почте на fmft71 на Yahoo точка ES

Привет

MrFMFT71

0 голосов
/ 21 июля 2011

Я могу помочь со второй частью вашего вопроса: заставить вашу программу загружать данные на ваш сервер или создавать веб-страницу. Вы должны быть знакомы с HTML-формами (и как они передаются с помощью GET и POST).

Загрузка данных прямо на ваш сервер

Используйте libCURL в C или urllib в Python для выполнения отправки формы. Ваша программа на C или python может имитировать действия парня, который вводит значения в форму и нажимает кнопку "Отправить". Вам просто нужно увидеть источник вашей веб-страницы и соответственно разработать свою программу.

Например, : response = urllib2.urlopen ('http://localhost:8983? Q = well & fl = id & wt = python') в python является примером запроса GET. Например , когда вы ищете ноутбук hp в Google, он запрашивает страницу http://www.google.co.in/#hl=en&q=hp+laptop&fp=1

Текущая веб-страница - и ужасный хак

Это кажется ужасным подходом, он совсем не надежен. Но он может ввести все значения в вашей форме для вас. Вы можете позвонить

system("browser-command url+*javascript*")

из программы на Си. Это имитирует открытие браузера в командной строке. Chromium позаботится о том, чтобы открыть URL в новой вкладке. Вам нужно будет создать некоторый встроенный код JavaScript, чтобы установить значения вашей формы.

Для встроенного кода JavaScript http://www.tizag.com/javascriptT/javascriptvoid.php

Для изучения объектной модели документа (манипулирование элементами на вашей странице): http://www.w3schools.com/js/js_ex_dom.asp

0 голосов
/ 22 июля 2011

Я бы пошел по этому пути.

Сначала отправьте выходные данные вашего приложения во временную папку, чтобы файл автоматически обновлялся при каждом считывании нового штрих-кода.

zbarcam <params> > /tmp/barcodeoutput

Тогда вы создадите такой скрипт, который будет автоматически использовать ajax и jquery, обновляя его содержимое.

index.php

<code><html>
<head>
    <title>jquery ajax</title>

    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
    <script type="text/javascript">
 $(document).ready(function() {
     $("#content").load("feed.php");
   var refreshId = setInterval(function() {
      $("#content").load('feed.php?randval='+ Math.random());
   }, 2000);
   $.ajaxSetup({ cache: false });
});
</script>
</head>
<body>

    <pre id="content">

    

И последним файлом будет php-файл, который index.php будет вызывать с помощью ajax.

feed.php

<?php
readfile('/tmp/barcodeoutput');


?>
0 голосов
/ 21 июля 2011

лучшим способом является отправка этого вывода в скрипт (или консольную программу), который отправляет POST-запрос в веб-форму.Perl - хороший кандидат на это.Это определенно сложнее (если вы не знакомы с написанием программы, выполняющей запрос POST), но я думаю, что это лучший способ сделать это.

...