Любые блоки со значением поля Type, не указаным здесь, не должны модифицироватся скриптом.
Каждый
скрипт получает все стандартные библиотеки lua 5.1. Таким образом,
относитесь ответственно к запуску скриптов из не надежного источника.
Они могут модифицировать любой файл в системе! Автор не несет
ответственности за любые повреждения или потери при использовании Smart Sniffer Viewer и любых скриптов с ним. Если вы не согласны с этим заявлением, удалите программу с вашего компьютера.
В данный момент скрипты должны быть сохранены в однобайтной кодировке,
что накладывает ограничение на язык строк и их переводимость.
Рекомендуется использовать строки латиницей. Поддержка многобайтных
строк и переводимость скриптов пока не планируется.
Глобальные константы
Определены следующие глобальные константы, которые могут использовать скрипты:
- CallParam – параметр – строка, заданный в XML файле в тэге <callparam>.
- Selected – таблица
координат ячеек, которые выбраны пользователем. Может быть пустой. Каждый элемент содержит
два поля Row и Col. Нумерации полей и элементов начинаются с 1. Row
совпадает с номером блока. Пример:
for k,v in pairs(Selected) do
logOut(string.format(“%u,%u”,v.Col,v.Row));
end
Глобальные функции
Функции общего назначения
apiCheck(version)
Функция принимает целое число-номер требуемой версии API. Если текущая
версия меньше указанной в параметре, то скрипт прерывается с ошибкой.
Рекомендуется выполнять проверку в 1й строке скрипта, текущая версия 1 не требует такой проверки.
Функция ничего не возвращает.
yield()
Ничего не принимает и ничего не возвращает. Вызывает обработку
сообщение ОС. Следует использовать при длительных циклах для
предотвращения сообщения “процесс не отвечает”.
version = getApiVersion()
Функция без параметров, возвращает численное значение версии API. В
последующих версиях набор функций может быть изменен. Расширение должно
проверять версию перед использованием доп. функций.
copyText(string)
Копирует строку в глобальный буфер обмена, ничего не возвращает.
Функции работы с блоками данных
count = getBlockCount()
возвращает 1 число, содержащее общее количество блоков в списке,
количество может быть уменьшено или увеличено при использовании функций
этой группы.
getTimeBase()
Возвращает абсолютное значение времени начала записи в наносекундах. Если файл данных не загружен, результат не определен.
функция возвращает две таблицы, заголовок
и данные по номеру в списке (первый блок имеет номер 1). Данные
представляют собой таблицу чисел, занумерованых начиная с 1. Каждый
элемент это 1 байт записи. Для некоторых типов заголовков таблица
данных может быть пуста.
функция принимает 3 параметра, номер блока (блок должен существовать), таблицу-заголовок и таблицу-данные. Данные представляют собой таблицу чисел, занумерованых начиная с 1. Каждый элемент это 1 байт записи.
Текущие значения блока будут заменены на указанные. Третий параметр
“data” не является обязательным, при его отсутствии будет сохранено
текущее значение. Отсутствие 3го параметра может значительно ускорить
обработку больших файлов.
Функция ничего не возвращает.
insBlock(number)
функция добавляет в список пустой блок с указанным номером (начиная с
1), при этом существующий блок с таким же номером получит номер+1 и так
далее до конца списка. Возможно добавить блок в конец:
insBlock(getBlockCount()+1).
Функция ничего не возвращает.
delBlock(number)
удаляет блок из списка по номеру (начиная с 1). Все последующие блоки
сдвигаются, чтобы занять пустое место в нумерации: блок “номер+1″
становится блоком “номер”.
Функция ничего не возвращает.
data changeDataSize(number,newsize)
у блока “номер” (начиная с 1) изменяет размер данных на
“новыйразмер”, если новый размер меньше старого – байты данных
отбрасываются, если больше - добавляются нулевые байты.
Функция возвращает таблицу данных нового размера. Данные представляют
собой таблицу чисел, занумерованых начиная с 1. Каждый элемент это 1
байт записи.
Функция работает эффективнее аналогичных преобразований таблиц в lua.
getRecordPort()
Функция без параметров, возвращает целое число, тип записанного устройства. Может принимать значения:
- BT_COM – записано на COM порте.
- BT_USB – записано на USB порте.
- BT_LPT – записано на LPT порте.
- BT_LPTIO – записано на LPT порте через регистры.
Функции взаимодействия с пользователем
logOut(string)
выводит строку в файл лога (по умолчанию luaLogFile.txt).
Функция ничего не возвращает.
функция работает в нескольких режимах и принимает переменное число
параметров. Предназначенна для вывода диалога-запроса пользователю.
Первый параметр – число, номер режима, для указания используются
предопределенные константы. Второй параметр – строка-заголовок окна,
третий параметр – текст в окне.
Режимы (1 параметр):
- GETINT – показывает
диалог-запрос числа. Может иметь дополнительно следующие параметры(4й,
5й, 6й,7й): значение по умолчанию, минимальное значение, максимальное
значение, шаг изменения. Возвращает число, введенное пользователем.
- GETSTRING – показывает
диалог-запрос строки. Может иметь дополнительно 4й параметр со строкой
по умолчанию. Возвращает строку, введенную пользователем.
- GETLIST – показывает диалог-запрос из заданного списка. 4й параметр обязательно
должен быть таблицей строк вариантов выбора. 5й не обязательный -
число, указывающее выбраное значение в списке по умолчанию (нумерация с
1), 6й параметр – логическое значение, показывающее может ли
пользователь ввести свою строку, не указанную в списке. Возвращает
строку(текст, а не ее номер), которая выбрана в списке или введена
пользователем.
Функция возвращает два значения. Первое логическое, true, если
пользователь нажал “ОК”, false, если нажал “Отмена”. Второе значение
зависит от режима вызова функции (см. выше).
Пример:
ok,s = userInput(GETLIST,”Test”,”List:”,{“COM1″,”COM2″,”COM3″},2,false)
if (ok) then
logOut(string.format(“%s”,s))
else
logOut(“canceled”)
end
setSelection(table)
Выделяет ячейки, может быть заданно несколько ячеек в виде пар
координат (в функцию передается таблица таблиц, каждый элемент таблицы
есть таблица, содержащая Row & Col). Пример выделения двух
ячеей в одной строке:
setSelection({{["Row"]=i,["Col"]=3},
{["Row"]=i,["Col"]=2}});
Если блок не был еще нарисован, есть смысл использовать цепочку
“выбор-прокрутка-выбор”, т.к. иногда не происходит визуальное
отображение до 1го действия пользователя, например:
setSelection({{["Row"]=i,["Col"]=3}});
scrollToRow(i)
setSelection({{["Row"]=i,["Col"]=3}});
Функция ничего не возвращает.
функция прокручивает область просмотра так, что указанная строка
“номер” будет находится вверху окна. Нумерация строк начинается с 1.
Следует помнить, что каждому блоку соответствует 1 строка отображения.
Функция ничего не возвращает.
showWait(boolean)
функция показывает, если параметр равен true или прячет в ином случае
окно-предупреждение, блокирующее активность пользователя. Рекомендуется
использовать для длительных операций. При возникновении ошибки и прерывании скрипта, окно будет спрятано автоматически.
Функция ничего не возвращает.
showMsg(string)
Выводит сообщение с кнопкой ОК.
Функция ничего не возвращает.
listCOMPorts()
Функция возвращает 2 таблицы, где индексы (ключи) в первой таблице -
системные имена порта, вроде “COM1″, а значения в таблице -
дружественные описания, показываемые пользователю. Во второй
таблице ключи и значения поменяны местами, относительно первой.
Пример:
t1,t2 = listCOMPorts()
ok, s = userInput(GETLIST,”TEST”,”Ports”,t1,1,false);
showMsg(t2[s])