Среда, 20.09.2017, 15:58
Приветствую Вас, Гость
Главная » Статьи » Загрузка весов » Задача Загрузки весов

Работа с весами SM-300
В других файлах, наоборот, содержится информация, которую драйвер считывает из памяти весов. При этом информация существкует информация разного типа. Это может быть список товаров, список описаний ингредиентов, список категорий товаров, список видов тары, список видов скидок или наценок, графический образ этикетки и другие виды информации. Для каждого вида информации используется свой отдельный вид файла. Причем в имени файла зашифрована вся информация о его содержимом. По имени можно узнать: код весов для которых для которых предназначена (с которых считана) информация, вид информации, а так же признак - это считанная из весов информация или предназначена для записи.


Например, в файле SM174F25.DAT содержится информация, предназначенная для записи в весы номер 174. Вид информации - список товаров.
Расшифровка формата: SM - постоянный префикс имени. 174 - номер весов, F - признак "Данные для записи", 25 - Код вида информации (список товаров), DAT - обязательное расширение файла.

Та же информация, считанная из тех же весов будет помещена в файл SM174T25.DAT. Как вы конечно поняли, буква T - это признак "Считанные данные".

Забегая вперед, хочу сказать, что мы будем работать только с двумя типами данных: Список товаров (или, как это называется в документации - список PLU), и образ этикетки. Список товаров, как мы уже знаем, имеет код 25, а образ этикетки имеет код 34. Возникает вопрос: Почему мы не будем использовать вид данных "Список описаний ингредиентов"? Дело в том, что протокол шифрования данных весов SM-300 очень гибкий (и очень сложный). Он предполагает множество вариантов настроек. Настройки протокола зашифрованы тут же в самом файле данных вместе с данными. В зависимости от настроек целые области кодировки данных могут присутствовать, а могут отсутствовать. Это сделано для гибкости. Пользователь сам может выбрать режим шифрования. Так вот, в отличии от других подобных протоколов, данный протокол поддерживает два способа кодирования ингредиентов.

Первый способ - ингредиенты отдельно. Список товаров представляет собой таблицу. Каждая строка - это описание одного из товаров. Строка состоит из полей. В каждом поле содержится одна из характеристик товара. В нашем случае это код (артикул) товара, наименование, код группы, к которой относится товар, цена, единица измерения веса и так далее. На каждый параметр в списке товаров выделяется строго фиксированное число знаков. Что касается ингредиентов, то в списке товаров для них имеется лишь поле в фиксированной длины, которое называется "Код описания ингредиента". Сами же ингредиенты хранятся в другом списке (и другом файле). В этом файле гибкая структура. На запись каждого ингредиента выделяется тоже одна строка, но длинна каждой строки может быть произвольной длинны. В первом поле строки содержится тот самый код описания ингредиента. Далее имеется поле, где записана реальная длина этой строки. Ну а окончание строки занимает текст описания ингредиентов. Подобный способ хранения информации позволяет одно и то же описание ингредиентов, если это возможно, использовать для разных товаров, что может сэкономить память. Однако, такой способ усложняет процесс изменения описаний ингредиентов, так как требует сложного алгоритма контроля соответствия ингредиентов и описаний. Учитывая, что процент товаров с одинаковыми описаниями ингредиентов крайне мал, удобнее использовать второй способ.

Второй способ хранения информации об ингредиентах - хранение описаний ингредиентов непосредственно в списке товаров. При таком способе отдельный список ингредиентов не используется. Зато в списке товаров вместо поля "Номер описания ингредиента" фиксированной длины появляется поле произвольной длины, где и хранится описание ингредиента. При этом, естественно,в формат файла добавляется поле длины текста описания. На самом деле формат еще сложнее. Описание ингредиента само состоит из разных частей. Многие из частей сами имеют переменную длину и для них так же имеются поля определяющие их размер и признаки окончания строки, помогающие компьютеру расшифровывать данные.

Отдельный вопрос - образ этикетки. Дело в том, что по умолчанию весы SM-300 содержат в памяти стандартный образ этикетки минимального размера. Если бы нам не нужно было печатать описание ингредиентов, то такая этикетка вполне подошла бы и другой образ загружать бы не пришлось. Но площадь стандартной этикетки не позволяет выводить на ней описание ингредиентов. Поэтому пришлось разработать свой нестандартный вид этикетки. Весы позволяют разрабатывать и вводить в память несколько разных форматов этикетки. Номер формата этикетки включен в список товаров, как один из параметров. Для разработки новых вариантов этикетки существует специальный редактор этикеток. Программа редактора включена в демонстрационный пакет демо версии программы. Файл программы - редактора этикеток для весов SM-300 называется LabelMaster.exe. Файл образа этикетки называется F34.DAT и находится в специальной директории тестовой информационной базы демо версии (vesi\vesiSM300\etiketki\). Для того, что бы передать образ этикетки в весы, нужно его переименовать. Например, для передачи этикетки в весы номер 174 файл должен называться SM174T34.DAT. Думаю, тут все понятно. 174 - это номер весов. T - это признак "данные для закачивания". 34 - это код типа данных ("Образ этикетки"). Однако, в нашем случае образ этикетки переименовывается программно. Вы выбираете из списка нужные вам весы, а номер весов программа подставляет автоматически. Поэтому вы должны просто скопировать файл образа этикетки в ту же самую директории, но с именем SM000T34.DAT, а программа уже переименует и отправит файл используя этот промежуточный файл. Вернее вам вообще не нужно беспокоиться об этикетке. В демо версии программы уже имеется готовый файл, который уже лежит в нужном месте.

Теперь разберемся с термином "Код весов". Для идентификации весов в локальной компьютерной сети магазина драйвер весов использует стандартные средства Windows. Каждые весы, как и любой хост, включенный в сеть, имеют свой уникальный IP адрес. Но программа использует не IP адрес, а код весов. Для сопоставления кода весов и его IP адреса используется файл hosts. Этот файл используется операционной системой Windows для сопоставлен имени хоста и его IP адреса. В Windosw XP, например этот файл находится в директории C:\WINDOWS\system32\drivers\etc\. Структура этого файла очень проста. Для каждого хоста в файл добавляется запись. Каждая запись - это отдельная строчка. В строке два столбца, разделенных пробелом. Первый столбец - это IP адрес, а второй - имя хоста. По умолчанию, кроме комментария содержится всего одна строка: 127.0.0.1 localhost. Запись определяет IP адрес локального хоста. Для того, что бы заработал драйвер весов, необходимо в просто найти файл hosts, открыть его в любом редакторе (желательно использовать редактор "Блокнот") и вручную добавить в список описание всех ваших весов. В данной программе принято в имени хоста для весов использовать последнюю цифру их IP адреса. Эта же цифра называется кодом весов. Так как имя хоста не может начинаться с цифры, драйвер весов использует имена, которые начинаются с латинской буквы "S" за которой идут четыре знака с кодом весов. Незначащие цифры заменяются нулями. Вот как это должно выглядеть:

127.0.0.1 localhost
192.168.0.174 S0174
192.168.0.175 S0175
192.168.0.176 S0176
192.168.0.181 S0181
192.168.0.182 S0182
192.168.0.185 S0185

Естественно, вы должны подставить свои IP адреса и свои коды. Так же вы должны вписать IP адреса своих весов в справочник весов тестовой информационной базы демонстрационной программы (если вы именно ее будете использовать). Соответствие кода весов и последней цифры IP адреса обязательно, так как такое соответствие используется в программе загрузки.

О работе с другой моделью весов а так же о работе с демо версией программы загрузки весов читайте в других статьях раздела "Загрузка весов" данного сайта.
Категория: Задача Загрузки весов | Добавил: bigman (01.10.2013)
Просмотров: 1458 | Комментарии: 1 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *: