База данных сигналов |
Интерпретатор встроенного языка программирования поддерживает запросы к базе данных, в результате интерпретации и обработки которых база данных сигналов SDB возвращает ту или иную информацию.
Общая структура и формат запроса:
{query:
category = "фильтр_имени_категории";
group = "фильтр_имени_группы_сигналов";
name = "фильтр_имени_сигнала";
<what = "запрос"> };
где query – служебное слово, обозначающее запрос к базе данных,
Если запрос не указан, то по умолчанию возвращаемая информация — имена сигналов.
Если запрашиваемая информация — строковая, то запрос следует окружать кавычками (см. пример ниже). Если численная, то кавычки не нужны.
Формат запроса:
number_of_signals = {query:category = "фильтр_имени_категории";
group = "фильтр_имени_группы_сигналов";
name = "фильтр_имени_сигнала";
what = count };
Тип возвращаемого значения — целое число (integer). Фильтром имени категории может выступать как имя требуемой категории, так и маска с использованием символа * (звёздочки). Аналогичным образом задаются фильтр имени группы сигналов и фильтр имени сигнала.
Формат запроса:
names_of_groups = "{ query:
category = "фильтр_имени_категории";
group = "фильтр_имени_группы_сигналов";
name = "фильтр_имени_сигнала";
what = group }" ;
Тип возвращаемого значения — строка (string). В возвращенной строке содержится ноль символов, если группа сигналов в базе данных не найдена, имя одной группы сигналов если найдена одна группа, и несколько имен групп сигналов, если найдено несколько групп сигналов. Имена групп сигналов в строке разделяются служебным символом ; (точкой с запятой). Фильтром имени категории может выступать как имя требуемой категории, так и маска с использованием символа * (звёздочки). Аналогичным образом задается фильтр имени группы сигналов и фильтр имени сигнала.
Формат запроса:
numbers_of_groups = "{ query:
category = "фильтр_имени_категории";
group = "фильтр_имени_группы_сигналов";
name = "фильтр_имени_сигнала";
what = groupnumber }" ;
Тип возвращаемого значения — строка (string). В возвращенной строке содержится ноль символов, если группа сигналов в базе данных не найдена, номер одной группы сигналов если найдена одна группа, и несколько номеров групп сигналов, если найдено несколько групп сигналов. Номера групп сигналов в строке разделяются служебным символом ; (точкой с запятой). Фильтром имени категории может выступать как имя требуемой категории, так и маска с использованием символа * (звёздочки). Аналогичным образом задается фильтр имени группы сигналов и фильтр имени сигнала.
Если не использовано служебное слово what, то по умолчанию возвращаемая строка содержит имена сигналов, удовлетворяющих заданному фильтру. Формат запроса:
names_of_signals = "{ query:
category = "фильтр_имени_категории";
group = "фильтр_имени_группы_сигналов";
name = "фильтр_имени_сигнала" }" ;
Тип возвращаемого значения — строка (string). В возвращенной строке содержится ноль символов, если сигналов в базе данных не найдено, имя одного сигнала если найден 1 сигнал, и имена нескольких сигналов, если найдено несколько сигналов. Имена сигналов в строке разделяются служебным символом ; (точкой с запятой). Фильтром имени категории может выступать как имя требуемой категории, так и маска с использованием символа * (звёздочки). Аналогичным образом задается фильтр имени группы сигналов и фильтр имени сигнала.
Формат запроса:
titles_of_signals = "{ query:
category = "фильтр_имени_категории";
group = "фильтр_имени_группы_сигналов";
name = "фильтр_имени_сигнала";
what = caption }" ;
Тип возвращаемого значения — строка (string). В возвращенной строке содержится ноль символов, если сигналов в базе данных не найдено, название одного сигнала если найден 1 сигнал, и названия нескольких сигналов, если найдено несколько сигналов. Названия сигналов в строке разделяются служебным символом ; (точкой с запятой). Фильтром имени категории может выступать как имя требуемой категории, так и маска с использованием символа * (звёздочки). Аналогичным образом задается фильтр имени группы сигналов и фильтр имени сигнала.
Формат запроса:
values_of_signals = "{ query:
category = "фильтр_имени_категории";
group = "фильтр_имени_группы_сигналов";
name = "фильтр_имени_сигнала";
what = value }" ;
Тип возвращаемого значения — строка (string). В возвращенной строке содержится ноль символов, если сигналов в базе данных не найдено, значение одного сигнала если найден 1 сигнал, и значения нескольких сигналов, если найдено несколько сигналов. Значения сигналов в строке разделяются служебным символом ; (точкой с запятой). Фильтром имени категории может выступать как имя требуемой категории, так и маска с использованием символа * (звёздочки). Аналогичным образом задается фильтр имени группы сигналов и фильтр имени сигнала.
Для задания множественного фильтра надо его задавать так: group = "строка_1","строка_2". Разделитель фильтров — запятая. При этом в самих фильтрах допустим символ звёздочки, например: group="LBB*CP*","LBB*CT*";
Формат запроса:
number_of_signals = { query:
category = "фильтр_имени_категории";
group = "фильтр1","фильтр2","фильтр3";
name = "фильтр_имени_сигнала";
what = count };
Тип возвращаемого значения в данном запросе — целое число (integer). Но в зависимости от запроса тип будет соответствующим.
Пример экспорта информации из базы данных в текстовый файл, путем использования языка программирования SimInTech:
initialization formattext // количество сигналов в БД number_of_signals = { query: category = "Датчики"; group = "*"; name = "*"; what = count}; // имя группы, к которой принадлежит сигнал names_of_groups = "{ query: category = "Датчики"; group = "*"; name = "*"; what = group}"; // номер группы, к которой принадлежит сигнал numbers_of_groups = "{ query: category = "Датчики"; group = "*"; name = "*"; what = groupnumber}"; // по умолчанию выводятся имена сигналов в БД !!! names_of_signals = "{ query: category = "Датчики"; group = "*"; name = "*";}" ; // названия сигналов в БД titles_of_signals = "{ query: category = "Датчики"; group = "*"; name = "*"; what = caption}" ; // значение сигнала values_of_signals = "{ query: category = "Датчики"; group = "*"; name = "*"; what = value}" ; // короткое имя сигнала shortname_of_signals = "{ query: category = "Датчики"; group = "*"; name = "*"; what = shortname}" ; end; FileID = createfile("signals.out.txt",1); // открываем существующий!!! файл на запись writeln(FileID, number_of_signals ); writeln(FileID, names_of_groups ); writeln(FileID, names_of_signals ); writeln(FileID, titles_of_signals ); writeln(FileID, values_of_signals ); writeln(FileID, shortname_of_signals ); freeobject(FileID); // закрываем файл end;