Panasonic DIGITAL SCANNER VEQ1325

Девайс

Попалось в руки такое устройство: Panasonic DIGITAL SCANNER VEQ1325.

Panasonic DIGITAL SCANNER VEQ1325
(Увеличить [700x249])

Никакой документации.

Из всей информации в интернете удалось понять, что это сканер штрих-кода, Который используют в "развитых" странах для программирования записи видеорекордера по штрих-коду передачи, публикуемой в программе телепередач. То есть, приходит к тебе телепрограмма, ты в ней что-то нашёл, провёл по штрих-коду, нажал на кнопочку, и твой рекордер уже запрограммирован на запись этой телепередачи.

Штрих-код

В интернете нашёлся только вот такой фрагмент таблицы со штрих-кодами:

Фрагмент таблицы со штрихкодами 
перекрытый сканером VEQ1325
(Увеличить [896x600])

Распечатал этот снимок, попробовал на плучившихся штрих-кодах сканер - РАСПОЗНАЁТ! В основном на нижних, более чётких.

Попытки найти описание кодирования в такой штрих-код никчему не привели.

Задача

Появилась интересная задачка: найти, как всё это кодируется и восстановить таблицу полностью.

Разборки

Экспериментальным путём нашёл (смотрите имевшуюся таблицу), что Первые две тонких полоски везде одинаковые - стартовые. Далее - цифры каналов, дней, часов - кодируются пятью полосками, из них две более толстые.

После семи полосок, остальные, групповые или командные (выбор канала, установка дня, установка часа включения, установка минут и т.д.).

Меджу пятью цифровыми полосками - два пробела, которые могут оказаться в разных местах.

Один баркод

Назовём для себя:
1 - тонкая полоска;
2 - толстая полоска;
0 - пробел.

Дальше выявилась закономерность: меняя положение пробелов, меняются единицы в числе, получаемом сканером.

   1,1,  1,1,1,2,0,2,0,  1,0,1,1 --> 77
   1,1,  1,1,1,0,2,2,0,  1,0,1,1 --> 74
   1,1,  1,1,0,1,2,2,0,  1,0,1,1 --> 72
   1,1,  1,0,1,1,2,2,0,  1,0,1,1 --> 71
   1,1,  1,1,1,0,2,0,2,  1,0,1,1 --> 70
   1,1,  1,1,0,1,2,0,2,  1,0,1,1 --> 79
   1,1,  1,0,1,1,2,0,2,  1,0,1,1 --> 78
   1,1,  1,1,0,1,0,2,2,  1,0,1,1 --> 76
   1,1,  1,0,1,1,0,2,2,  1,0,1,1 --> 75
   1,1,  1,0,1,0,1,2,2,  1,0,1,1 --> 73

Здесь нолики в центральном блоке перебрали все возможные свои положения ни разу не повторившись.

Попробуем так же двигать и двойки: и увидим, что меняются десятки. Тут же их сразу и отсортируем.

   1,1,  1,1,2,0,2,0,1,  1,0,1,1 --> 0
   1,1,  2,1,1,0,1,0,2,  1,0,1,1 --> 10
   1,1,  1,2,1,0,1,0,2,  1,0,1,1 --> 20
   1,1,  2,2,1,0,1,0,1,  1,0,1,1 --> 30
   1,1,  1,1,2,0,1,0,2,  1,0,1,1 --> 40
   1,1,  2,1,2,0,1,0,1,  1,0,1,1 --> 50
   1,1,  1,2,2,0,1,0,1,  1,0,1,1 --> 60
   1,1,  1,1,1,0,2,0,2,  1,0,1,1 --> 70
   1,1,  2,1,1,0,2,0,1,  1,0,1,1 --> 80
   1,1,  1,2,1,0,2,0,1,  1,0,1,1 --> 90

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

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

Рисунок разъясняющий код 37

Создаём таблицу

Для каналов переберём все 0..99.

Для часов - 0..23.

Минуты - 0..59.

А вот в разделе дней оказалось несколько сюрпризов.

1..31 - дни месяца. 0 - каждый день. Есть конкретные дни недели и группы с понедельника по пятницу и с понедельника по субботу.

В этом же разделе расположены форматы записи SP и LP, ещё какие-то настройки, и, самое интересное - код 91 - при двойном вводе выдаёт на индикаторе подсветку всех сегментов.

Весь дисплей сканера VEQ1325
(Увеличить [750x180])

Вся таблица разместилась на одном листе A4.

Таблица c бар-кодами для сканера VEQ1325

Ну, и напоследок, код, с помощью которого реинкарнировалась эта таблица.

#!/usr/bin/perl
# Генератор табицы bar codes для Panasonic Digital Scanner VEQ1325
# Автор: Андрей Илларионов

$Y=0;
$X=0;
open STDOUT, ">1.svg";
print <<SVG;
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
    "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">

<svg width="1150px" height="700px"
    viewBox="-10 -5 1140 695"
    preserveAspectRatio="xMinYMin meet">
<text x="590" y="627">http://www.illari.ru</text>
<text x="590" y="640">Panasonic DIGITAL SCANNER VEQ1325</text>
SVG

# Десятки - заменяем знак в позиции
@D=([2,3],[0,4],[1,4],[0,1],[2,4],[0,2],[1,2],[3,4],[0,3],[1,3]);
# Единицы - вставляем после знака в позиции:
@E=([2,3],[0,4],[1,4],[0,1],[2,4],[0,2],[1,2],[3,4],[0,3],[1,3]);


 $TITLE="Channel";
 @Command=(1,0,1,1); # Выбор канала
 @ALL=(0..99);  $dx=95;
&makeBarCodes();

 $TITLE="Day";
 @Command=(2,0,1,1); # Выбор дня месяца или дня недели
 @ALL=(0..31,76,77,79..86,95,96,42..45,99,91);
 $dx=100;
&makeBarCodes();

 $TITLE="On Hour";
 @Command=(1,1,2,0,2,0,1,1,0,1,1); # Выбор Часа начала
 @ALL=(0..23);  $Y=0; #$X+=105;
&makeBarCodes();

 $TITLE="Off Hour";
 @Command=(1,1,2,0,2,0,1,2,0,1,1); # Выбор Часа окончания
 @ALL=(0..23);  $Y=0; $X+=130;
&makeBarCodes();

 $TITLE="Minutes";
 @Command=(1,0,2,1); # Выбор минут
 @ALL=(0..59);  $Y=0; $dx=95; $X+=130;
&makeBarCodes();

print '</svg>';

exit;

######################################################
sub makeBarCodes(){
  $v=20;

print <<SVG;
<text x="$X" y="10"> $TITLE</text>
<path d="M$X,5 h-7v620" fill="none" stroke="#ccc" 
stroke-width="1" stroke-dasharray="8,2"/>
SVG

  for $r(@ALL){

print <<SVG;
<g transform="translate($X, $Y)">
<path d="M25,40
SVG

    $d=int $r/10;
    $e=$r-$d*10;

    @CODE=(1,1,1,1,1);#базовый

    @CODE[$D[$d][0]]=2;#заменяем десятки
    @CODE[$D[$d][1]]=2;
    $t='';

    for $i(0..4){ # добавляем единицы
      $t.=$CODE[$i];
      if ($E[$e][0]==$i){
        $t.='0';
      }
      if ($E[$e][1]==$i){
        $t.='0';
    } }

    #   Start   Value            Command
    @A=(1,1,    (split //,$t),   @Command);

    for (@A){
      if ($_==1){
        print "v-${v}h2v${v}h2";
      } elsif($_==2) {
        print "v-${v}h4v${v}h2";
      } elsif($_==0) {
        print "h2";
      } else {
        print "m-50,30";
    } }

print <<SVG;
" fill="#000" stroke-width="none" />
<text x="2" y="40">$r</text>
</g>
SVG

    $Y+=25;
    if ($Y>600){
      $Y=0;
      $X+=$dx;
} } }

Андрей Илларионов
19-12-2009

1. z4 18-08-2010, 11:00
Я сталкивался с таким сканером, как то давно был видик PANASONIC, еще кассетный, у него встроенный в пульт ДУ сканер, и как раз такая табличка на картоне. Тема конечно интересная но жаль она не актуальна у нас.
24. Al__________________ 05-05-2011, 20:21
Это бы перепостить туда где форматы данных складируют. А вот коменты от нецензурных спамеров портят впечатления. Равно как и заявление на слишком короткое имя//
25. Al__________________ 05-05-2011, 20:22
И н т е е с н о С п а и б о