Работа с данными из любого JS объекта любой страницы панели.

Работа с панелями оператора Weintek - подключение, программирование, совмещение с ПЛК

Модераторы: kiv, 8bit, VanMo

Работа с данными из любого JS объекта любой страницы панели.

Сообщение BondAlex » 14 сен 2024, 22:55

Здравствуйте!
Есть необходимость работать с табличными данными (около 1000 ячеек) на панели Weintek. В идеале в виде двухмерного массива (добавление/удаление данных, выборки, сортировка, чтение/сохранение на флешку).
Предполагаю делать это на JavaScript в составе панели, т.к. данные тесно связаны с графическим представлением на страницах панели.

Вопрос:
1) каким способом лучше организовать временное хранение данных в "оперативной памяти" для работы с ними (предполагается, что первоначально данные будут загружены с флэшки);
2) как обеспечить доступ к массиву данных с любой страницы панели из объекта JS?

P.S. Работу с регистрами LW из объекта JS изучил. Как вариант хранения данных в регистрах тоже рассматриваю, но не нравится, что драйвер чтения/записи работает асинхронно и медленней скрипта JS. Не уверен в правильности этого варианта, т.к. чтение/сохранение в регистры, парсинг придётся делать при каждой активности оператора.
P.P.S. Не разобрался с MemoryStorage https://dl.weintek.com/public/Document/JS_Object_SDK/Current/MemoryStorage.html. Может это то, что мне нужно? Примеры в SDK совсем убогие, подскажите как работать с памятью. В идеале в виде примера команд:
а) создать массив (для чисел) в JS объекте и записать в него данные;
б) объявить массив общедоступным для всех страниц?
в) считать данные в другом JS объекте с другой страницы панели.
Спасибо.
BondAlex
 
Сообщения: 3
Зарегистрирован: 01 сен 2024, 19:06

Re: Работа с данными из любого JS объекта любой страницы пан

Сообщение dimensy » 15 сен 2024, 16:44

А поглядите в сторону SQL, может достаточно будет?
https://www.rusavtomatika.com/upload_fi ... 181225.zip
https://www.rusavtomatika.com/upload_fi ... t_Demo.zip
dimensy
 
Сообщения: 195
Зарегистрирован: 14 мар 2018, 17:54

Re: Работа с данными из любого JS объекта любой страницы пан

Сообщение BondAlex » 16 сен 2024, 01:25

Моя панель, похоже, не поддерживает SQL (иконки БД в EasyBuilder не активны). И отдельного компьютера в оборудовании не предусмотрено.
Осмелюсь предположить, что требуются специальные панели с поддержкой БД серии SRV 100, либо серии cMT 3090 с персональным компьютером с предустановленной БД в сети.
Спасибо за ответ.
BondAlex
 
Сообщения: 3
Зарегистрирован: 01 сен 2024, 19:06

Re: Работа с данными из любого JS объекта любой страницы пан

Сообщение BondAlex » 16 сен 2024, 02:55

Разобрался с MemoryStorage. Думаю, код в комментариях не нуждается.

В одном JS Object пишем:
Код: Выделить всё
let myData = [1,2,3];
window.memoryStorage.setItem("myNameKey", myData);


На другой странице в другом JS Object пишем:
Код: Выделить всё
for (let i = 0; i < window.memoryStorage.length; i++)
{
  console.log('Найден ключ номер:', i);
 
  let nameKey = window.memoryStorage.key(i);
  console.log('Имя ключа:', nameKey);
 
  let dataKey = window.memoryStorage.getItem(nameKey);
  console.log('Содержимое:', dataKey);
};


Либо, если имя ключа известно (а оно нам известно), то просто:
Код: Выделить всё
let dataKey = window.memoryStorage.getItem('myNameKey');
console.log('Содержимое:', dataKey);


Код в JS Object выполняется сразу при открытии страницы (если в коде нет иных условий).
BondAlex
 
Сообщения: 3
Зарегистрирован: 01 сен 2024, 19:06


Вернуться в Weintek

Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot] и гости: 8