Просмотри видео на сканере штрихкодов


    «Из всех искусств для нас важнейшими являются кино и цирк»
    — В.И. Ленин


    Просмотр видео — одно из любимых развлечений в современном мире, фильмы сейчас смотрят практически на всех устройствах, даже на холодильниках. К сожалению, рядом не оказалось подходящего холодильника, и я решил просмотреть фильм на сканере штрихкодов. Под рукой оказался сканер Cipher Lab 8001. Технические характеристики плеера сканера:
    • 16-битный CMOS процессор
    • 1 Мб памяти для программ
    • 1 Мб SRAM для данных
    • FSTN дисплей с LED подсветкой разрешением 100×64


    1 Мб памяти должно было хватить для хранения ролика, но это бы лишило плеер интерактивности, и усложнило процесс разработки. Поэтому выводить на экран будем данные, которые поступают непосредственно с инфракрасного порта. Также для простоты не используются крайние 4 столбца экрана. Итоговое разрешение картинки 96×64 (количество точек в строке кратно размеру байта).

    Прошивка сканера


    В прошивке нет ничего сложного:
    1. Считываем данные с инфракрасного порта;
    2. выводим на экран;
    3. посылаем компьютеру запрос на следующий кадр.

    Единственное, на что следует обратить внимание — размер входящего буфера ограничен 256 байтам. А так как размер целого кадра 96×64/8 = 768 байт, нам придется разбить кадр на 4 блока по 16 строчек. Да, данные влезли бы в 3 блока по 256 байт, но хотелось, чтобы номер блока передавался как первый байт входного буфера.

    int PlaceFromCom(void) {
        long timer;
        int position;
        char c, picture[BLOCK_SIZE];
        unsigned char blockId, loaded;
        
        SendRequest();

        timer = sys_msec;
        loaded = 0;
        position = 0;
        while (sys_msec <= timer + TIMEOUT_MSEC) {
            if (read_com(COM_PORT_NUM, &c)){
                picture[position] = c;
                position++;
                if (position == BLOCK_SIZE){
                    loaded = 1;
                    break;
                }
            }
        }
        if (!loaded){
            printf("Comm error\r\n");
            return 1;
        }
        blockId = (picture[0] % 4);
        show_image (0, blockId * BLOCK_H, IMAGE_WIDTH, BLOCK_H, &(picture[1]));
        return 0;
    }

    Программа вывода


    Программа для вывода видео в COM выглядит еще проще, чем прошивка:
    1. Делаем скриншот экрана;
    2. меняем его размер и конвертируем в двухцветное изображение;
    3. разбиваем на блоки и конвертируем в поток байтов;
    4. ждем запроса от сканера, возвращаем буфер.

    По какой-то причине снятие скриншота в Питоне занимает очень много времени, поэтому в программе это действие вынесено в отдельный поток. Остальной код тривиален. Например, цикл вывода:
    while True:
        data = ser.read(9999)
        if len(data) > 0:
            if data[0] == "V":
                ser.write(chr(currentBlock))
                ser.write(desktop.strings[currentBlock])
                currentBlock = (currentBlock + 1) % blockCount

    Результат работы




    Исходники программ можно скачать тут.
    Поделиться публикацией
    Похожие публикации
    Ой, у вас баннер убежал!

    Ну. И что?
    Реклама
    Комментарии 71
      +7
      круть
        +63
        Автор знает толк)
        +8
        С ума сойти
          +1
          2 раза.
          +20
          Музыка тоже через него играет? :-)
            +22
            Это тема следующего топика. Частотный диапазон устройства 1—6 кГц, длительность ноты от 1/100 секунды.
              +2
              Отлично, будем ждать :-)
                0
                Я подумал, что это невозможно, но смотреть видео на сканере штрих кодов тоже.
                0
                Не исключено что, в сканере есть спикер, но в ролике явно звук при обработке добавлен или воспроизводится параллельно с записью видео. Да и процессор не вовремя с обновлением кадров справляется, какой уж тут звук. :-)
                –19
                Не мне одному показался ролик больно знакомым?
                • НЛО прилетело и опубликовало эту надпись здесь
                    –2
                    Это клип Benny Benassi — Satisfaction, ваш самизнаетекто.
                    +3
                    Обожемой. Satisfaction тут как нельзя кстати.
                      +1
                      Это супер!
                        +3
                        Отличный пятничный JFF-пост =)
                        • НЛО прилетело и опубликовало эту надпись здесь
                          –2
                          MaaadMan!!!
                            +4
                            Один из немногих случаев, когда я смотрел видео «плохого» качества задержав дыхание.
                              +6
                              У меня где-то завалялись исходники, исполняющие мелодию из «Бумера» на фискальном регистраторе, но ваш experience недостижим. Браво!
                                +27
                                Женские журналы проигрывают видео, сканеры штрих-кодов…
                                Расскажи это футурологам прошлого — в дурку посадят.
                                  +3
                                  Фулл ЭйчДи прям ))
                                    +1
                                    Маньяк))
                                      0
                                      Чем дальше в будущее, тем оно страшнее.
                                      А что вообще должно было делать это устройство, зачем в нем дисплей и клавиатура?
                                        +7
                                        Это не совсем сканер штрихкодов, это — терминал сбора данных, используется в основном на складах. Он может хранить базу товаров, считать их количество, записывать приходы, расходы, а позже синхронизировать все с компьютером.
                                          0
                                          — Что ты сделал с моим сканером?
                                          — А ты пожалуйся начальству, что я заставил твой сканер клипы показывать, посмотрим, кому больше поверят.
                                        0
                                        Блин) не сдержусь на работе таких много проскакивает )
                                          +6
                                          Офигеть до чего додуматься можно! Класс!

                                          В последнее время все больше появляется подобных нестандартных «изобретений». Можно пофантазировать о том, что могут придумать (если еще нет :-):

                                          Проецирование фильма на какую-нибудь плоскость (например, стену) с помощью фар автомобиля — что-то вроде мобильного кинотеатра;
                                          Или фонарик с таким же принципом;
                                          Или, например, видео на PHP — автоматически обновляемый скриптик, который отображает по порядку автоматически генерированные картинки.

                                          Много чего придумать можно :-)
                                            0
                                            Я думаю проецировать экран через фары не сложно. Надо всего лишь вместо стекла фары поставить ЖК-матрицу :) А так как фары две, то можно проецировать стерео-картинку.
                                            +5
                                            Примерно как я смотрю аниме через libcaca. Через ssh. На воге.
                                              –18
                                              Безусловно круто, но…



                                                +11
                                                Вам безусловно стало легче, при публикации этой неновой картинки, значит свою функцию она выполнила.

                                                Просто поразмышляйте на досуге, что где-то существуют люди которые просто могут делать необычные вещи и им (затраты времени, денег, ума) это почти ничего не стоит, в отличии от.
                                                  –6
                                                  Картинка не нова. И я не сомневаюсь, что её видели все кто только мог. Смысл заложенный в ней от этого не меняется.

                                                  Автор поста, безусловно — талантище. Но столько трудов… искусство ради искусства.

                                                  Наверное я слишком прагматичен чтобы оценить это.
                                                  • НЛО прилетело и опубликовало эту надпись здесь
                                                      0
                                                      Но столько трудов… искусство ради искусства.
                                                      Наверное я слишком прагматичен чтобы оценить это.

                                                      А ради чего тогда, если не ради самого себя существует искусство?
                                                        0
                                                        Все, что делается не дари искусства, называется ремеслом.
                                                    –1
                                                    Респект, что цитату привели целиком. А то ее обычно пафосно произносят, без последнего слова.
                                                    P.S. Кино — безусловно великое искусство, но вырывание из контекста меняет смысл кординально.
                                                      +19
                                                      Полностью она звучит так: "Пока народ безграмотен, из всех искусств для нас важнейшими являются кино и цирк". (Полное собрание сочинений. 5-е изд., Т. 44., с. 579)
                                                        0
                                                        Что-то мне кажется, что в массе своей народ всегда будет безграмотным, особенно в свете последних тенденции…
                                                        Простите, понесло.
                                                          +1
                                                          Респект, однако. Думал — вы изучали труды этого товарища в институте, т.к. это было неотъемлемой частью программы. А вы оказывается моложе меня :) (А я о неполности цитаты сужу, можно сказать, — по наслышке).
                                                            0
                                                            Мне недавно попадалась интересная ссылка — «Фразы, не дослушанные до конца».
                                                              0
                                                              А еще помница такое было: "… путешествие в тысячу ли начинается с одного шага. Кто действует — потерпит неудачу."
                                                        0
                                                        А что там со скриншотами на питоне не так? ImageGrub из PIL достаточно быстро работает вроде
                                                          0
                                                          У меня получалось 1/4 секунды на скриншот. Если в этот момент ничего не выводить на сканер, то это очень заметно.
                                                          0
                                                          Когда-то давно для примитивного Siemens C55 была такая программка, которая показывала видео. Это было завораживающе. Так вот, эта программка умела показывать 4 градации серого, имитируя это мерцанием.
                                                            +3
                                                            Этот сканер хоть остался сканером?? или дорога в один конец?)
                                                              +1
                                                              Остался сканером, там прошивка тоже заливается через ИК порт.
                                                              +1
                                                              Будет чем заняться на работе в понедельник. Как раз новую задачу с Cipher'ом поставили…
                                                                0
                                                                Прикольно :) На более старших Сайферах есть поддержка радиосвязи. В программировании ничего хитрого тоже.
                                                                  0
                                                                  А для сабжа есть SDK какой-то? А то не очень понятно, чем компилить и как шить. И что такое «8000lib.h» например. Не очень понятно так же, что все-таки там за процессор, моделька не указана. Какая частота например?
                                                                  А так все супер, улыбнули с утра.
                                                                    0
                                                                    Там родной SDK именно для этих сканеров, и компилятор от Тошибы (почему?). Прошивается загрузчиком который идет в комплекте со сканером.
                                                                    0
                                                                    А если на устройстве сделать буфер хотя бы для 2х-3х кадров, то возможно видео не будет так подтормаживать?
                                                                      0
                                                                      Возможно, я не проверял. В связке может быть три бутылочных горлышка:
                                                                      1. Снятие скриншота (см. выше).
                                                                      2. Передача данных (по ИК порту удалось получить только 38400 кБит/с)
                                                                      3. Непосредственно вывод
                                                                      Надо комбинировать и искать самый оптимальный вариант, но это выходит за рамки пятничного поста)
                                                                      0
                                                                      Автор, а какой там процессор стоит? Вы пользовались родным SDK?
                                                                        0
                                                                        Какой процессор не знаю, SDK родной.
                                                                        0
                                                                        а еще такое предложение: возможно ли было передавать только изменяющиеся области экрана? тогда бы скорость прорисовки на статических сценах увеличилась, впрочем вы и сами это понимаете.
                                                                          –1
                                                                          Тогда уж видеопоток гнать напрямую %)
                                                                          +1
                                                                          Обалдеть! Я уже и забыл, что в своё время змейку забацал на точно таком же. =)
                                                                          Приятные воспоминания…
                                                                            +1
                                                                            LioL > задали написать софт для штрихкод-сканера, чтоб с нашей левой базой не глючил… осталось ровно 32кб памяти
                                                                            LioL > ну я и написал змейку… управляется через последнюю цифру штрихкода
                                                                            LiOL > сегодня прихожу на склад… грузчики наклеили на лист бумаги по четыре штрихкода и играют… ВСЕ…
                                                                            вы?
                                                                              0
                                                                              Не, не моё =)
                                                                              С клавиш управлялось, но аппарат здоровский!
                                                                            0
                                                                            Стимбой аднака ))
                                                                              0
                                                                              Круто! А я прочитал заголовок и подумал, что уже и там стали ставить такое железо, которое видео тянет, а все хитрее оказалось. Кстати, а ИК порт еще где-то сохранился в устройствах или приходится какой-то внешний вариант использовать?
                                                                                0
                                                                                Классный пост, из области Artisan Crafts в IT. Честь вам и хвала, автор! Невольно вспоминается Code Pilot, девайс из продвинутых старых наборов LEGO Technic, он с помощью штрихкодов управлял моторчиками и музыкой, и даже одним-двумя концевиками. Особой прелестью была автоматическая генерация условий в получавшейся программе. Помнится, я даже спроектировал на основе набора довольно функциональную автоматическую линию… Жаль, фото не сохранилось.
                                                                                  0
                                                                                  Лишь эпиграф в этой статье надо бы поправить.
                                                                                  Ленин никогда не произносил части этой фразы «и цирк». По крайней мере источников пока не обнаружено.
                                                                                    0
                                                                                    Интересно, можно ли управлять считывателем штрих-кодов так, чтобы он свой красный луч с определённой частотой включал-отключал? Можно было бы на стенах картинки рисовать ) А ещё у нас есть такой девайс, как «дисплей покупателя» — тоже, наверное, можно было бы интересного напрограммировать…
                                                                                      0
                                                                                      торт

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

                                                                                      Самое читаемое