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


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


    Просмотр видео — одно из любимых развлечений в современном мире, фильмы сейчас смотрят практически на всех устройствах, даже на холодильниках. К сожалению, рядом не оказалось подходящего холодильника, и я решил просмотреть фильм на сканере штрихкодов. Под рукой оказался сканер 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
        С ума сойти
      • +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
                                                                                    торт

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