| ||||||||
| ||||||||
Формат файла калькулятораШестнадцатеричный код, представленный в редакторе, не всегда удобен для выполнения расчетов, пакетной обработки данных или правки считанного дампа под конкретное оборудование. Калькулятор позволяет выполнить над этими данными определенные действия и вывести их в виде стандартных элементов управления Windows. В диалоговом окне пользователь может изменить нужные ему параметры, после чего калькулятор обработает и сохранит их в исходном файле. Если вмешательство пользователя не требуется, то программа позволяет запускать калькулятор в фоновом режиме и автоматически вносить нужные изменения перед записью каждой микросхемы. ![]() Файл калькулятора представляет собой обычный текстовый файл, содержащий С-подобный скрипт. [Calculators\Dallas CRC] Size(280,100); Form{ Group("Описание",5,5,270,50) { Label(lb1,"",5,20); } } OnShow{ lb1 = Калькулятор для расчета 8-битной CRC; } OnApply{ Var0 = 0; @Var0 = @Var0 + 1; if (@Var0 = 0){@0x1 = @0x1 + 1} CRC = 0; while (Var0 < 0x07) { inp = CRC ^ @Var0; CRC = 0; if((inp & 0x1) != 0) { CRC = CRC ^ 0x5e; } if((inp & 0x2) != 0) { CRC = CRC ^ 0xbc; } if((inp & 0x4) != 0) { CRC = CRC ^ 0x61; } if((inp & 0x8) != 0) { CRC = CRC ^ 0xc2; } if((inp & 0x10) != 0) { CRC = CRC ^ 0x9d; } if((inp & 0x20) != 0) { CRC = CRC ^ 0x23; } if((inp & 0x40) != 0) { CRC = CRC ^ 0x46; } if((inp & 0x80) != 0) { CRC = CRC ^ 0x8c; } Var0 = Var0 + 1; } lb1 = "Сумма = " + #b.crc; @Var0 = CRC; } Для совместимости с другими проектами, первая строка файла должна содержать название файла, заключенное в квадратные скобки. Название должно начинаться с начала строки, без ведущих или ведомых пробелов. Между квадратными скобками и первым и последним символом названия также не должно быть пробелов. Далее указывается размер клиентской области окна: Size(280,100); (ширина, высота), в которой могут находиться элементы управления, описываемые в секции "Form". Секция FORM содержит список элементов диалогового окна. Допустимо использовать только указанные названия компонентов. Регистр букв не важен. Другие компоненты не поддерживаются. GROUP("Caption",Left,Top,Width,Height) {...} LABEL(Name,"Caption",Left,Top); CHECKBOX(Name,"Caption",Left,Top); COMBOBOX(Name,"Caption",Left,Top,Width,"Items0","Items1",...); DIGIT(Name,"Caption",Left,Top,Width); HEXDIGIT(Name,"Caption",Left,Top,Width,MaxLength); PICTURE(Name,"FileName.bmp",Left,Top,0,0); Элементы представляют собой обычные оконные компоненты Windows и не нуждаются в особом описании. Секция OnShow содержит код, который будет исполняться в момент вывода диалога на экран. Секция OnApply содержит код, который будет исполняться при нажатии пользователем кнопки Ok. Содержимое этих секций представляет собой сильно упрощенный синтаксис языка си. В отличие от других проектов, программа не накладывает ограничения на имена переменных и на использование в выражениях оконных переменных, не привязывает тип переменной к ее имени, понимает отрицательный результат операции, позволяет выполнять операции непосредственно с дампом памяти и идентификаторами компонентов. Также имеет расширенные команды форматирования строки. Компилятор поддерживает только два оператора: Доступны следующие арифметические и логические операторы: + - * / % & | ^ << >>Операции сравнения: = != <= >= < > Приоритет операций задается только скобками. Оператор "@" позволяет обратиться к содержимому буфера. Var1 = 12; //Данные можно вводить в десятичном Var2 = 0x0B; // или в шестнадцатеричном формате adr1 = @0x0010; //Прямое обращение к дампу памяти @Var1 = @Var2 + adr1 - 1; //Косвенное, через адрес, содержащийся в Var1 lb1 = Var1; //Стандартный вывод данных на экран. lb1 = Var1 + " = " + #b.@Var1; //А можно и так. (в других проектах работать не будет) ... lb1 = "Текст"; //Оформление текстовых сообщений: lb1.bold = 1; // жирный шрифт lb1.color = 0xFF0000; // цвет шрифта ... lb1 = #b.D1 + " = " + #i.D1; //Команды форматирования строки: lb1 = #b.D1 + " = " + #c.D1; // i=256; c="я"; lb1 = "WORD = " + #h.D1; // b=FF; h=00FF; d=000000FF; В дополнение к "штатным" функциям тритоновский компилятор поддерживает вызов скоростных подпрограмм для работы с блоками данных. BlockCopy(Begin, Length, Dest); BlockMask(Begin, Length, Mode, Mask); BlockDelete(Begin, Length); BlockInsert(Begin, Length, Fill); В качестве параметров могут выступать как константы, так и переменные, включая имена оконных компонентов.
Чтобы упростить процесс разработки, в программе имеется визуальный конструктор оконных форм калькулятора. Вход в режим редактирования и выход из него находятся в системном меню окна калькулятора. Редактор позволяет добавлять и удалять компоненты, выравнивать, менять положение и размеры, редактировать текст. При выходе из режима редактирования, данные сохраняются в текстовом виде в Буфере обмена для последующей вставки в файл калькулятора. ![]() Для добавления компонента, установите курсор в нужное место, нажмите правую кнопку мыши и выберите нужный компонент из списка. Перемещение компонента осуществляется с помощью мыши. Для изменения размера используется правый нижний угол компонента. Клик левой кнопкой мышки на компоненте, позволяет изменить в нем текст. Для удаления текста используется клавиша BACKSPACE. Клик правой кнопкой мыши позволяет удалить, выровнять по сетке или добавить новый компонент. Компонент GROUP является контейнером для размещенных в нем компонентов. При выравнивании или удалении этого компонента, данное действие будет применено ко всем находящимся в нем компонентам. Программа поддерживает многоуровневые вложения компонента GROUP. | ||||||||
ООО «ТЦ ТРИТОН» (495) 500-7890 |