Я тут обещал
[показать]Даре и
[показать]Виктору рассказать про интеллектуальные весы, с которыми я работаю (марки
Digi, Япония). Не думаю, что остальным будет особо интересно, поэтому остальное прячу под кат.
Обычные весы только взвешивают товар. Электронные еще умеют передавать вес в компьютер, узнавать у компьютера цену товара, показывать сумму и т.п.
Интеллектуальные весы содержат в себе список товаров (артикулов), его свойства (название, цена, штрихкод, инредиенты, срок годности, тара и т.п.), дополнителнительные данные... Возникает вопрос: зачем всё это нужно?
Такие весы используются для печати этикетки товара. Которая потом наклеивается на упаковку, и по ней товар можно потом четко идентифицировать - что за товар, сколько весит, какой его срок годности и т.п.
Естесственно, информация о том, как будет выглядеть этикетка, тоже хранится в весах.
На этикетку можно выводить не только данные артикула. Есть также текстовая и графическая информаци: реклама ("Покупайте наш Вискас!"), название магазина (" Спермаркет 'С Любовью' "), тексты ("Вообще-то зря вы это купили..."); картинки и логотипы (монохромные).
Всё это вводить на самих весах - ... задолбеш
Ься. Поэтому есть возможность приготовить данные на компьютере, а потом передать их в весы.
Интерефейсы передачи данных - RS-232C (последовательный порт), RS-245 (расширенный RS-232C), Ethernet.
Протокол передачи у большинства весов разный. Одни протокола оперируют бинарниками dbf-ного типа, другие - текстовыми файлами csv-шного типа...
Так вот. Специально для
[показать]Виктора рассказываю про передачу изображений.
Передаю файл. Формат примерно такой: код файла, номер записи (tab) номер последовательности (tab) ширина (tab) высота (tab) данные (tab) (конец строки)
И так далее (только без дальнейшего указания ширины и высоты)
Так вот. В весах, с которыми я работал ранее, данные кодировались так: восемь пикселей кодировались в один байт просто и ясно.
В новых весах они кодируют 4 пикселя в один байт. Да еще к получившемуся байту прибавляют 0x30. Зачем?
А вот зачем
Комбинация четырех байтов (если считать от 0) - от 0x00 до 0x0F. Если прибавить к ним 0x30, выйдет такой ряд:
0000 - 0x00 - '0'
0001 - 0x01 - '1'
0010 - 0x02 - '2'
0011 - 0x03 - '3'
0100 - 0x04 - '4'
0101 - 0x05 - '5'
0110 - 0x06 - '6'
0111 - 0x07 - '7'
1000 - 0x08 - '8'
1001 - 0x09 - '9'
1010 - 0x0A - ':'
1011 - 0x0B - ';'
1100 - 0x0C - '<'
1101 - 0x0D - '='
1110 - 0x0E - '>'
1111 - 0x0F - '?'
И выходит, что в файле нет НИ ОДНОГО символа, который нельзя было бы набрать с клавиатуры
Таким образом, эти файлы можно клепать в блокноте, а потом с помощью служебной утилитки загонять в весы
Вот такая глубина инженерной мысли китайцев