Вход

Просмотр полной версии : СП-310Р: не могу сделать экспорт обычной исторической таблицы на USB



StF
31.08.2023, 10:50
Добрый день, бьюсь над простой задачей : необходимо хранить несколько тысяч исторических событий на дисплее в энергонезависимой памяти, с возможностью экспорта их разом на USB (в памяти дисплея они остаются при этом). События отображаются текстом в таблице: видов событий около 300 штук. Запись должна быть циклическая.

ОК.
Беру обычную историческую таблицу без колонки квитирования. Накидываю туда событий, всё на дисплее отображается, в энергонезависимой памяти сохраняется, прекрасно.
Делаю функц. кнопку для экспорта (Export CSV) и тут наступаю на грабельки: или панель пищит секунд 5 и зависает или экспортирует только пустой файл с наименованиями колонок. Видимо что то не то с настройками экспорта? Посмотрите пожалуйста.

kondor3000
31.08.2023, 11:14
Добрый день, бьюсь над простой задачей : необходимо хранить несколько тысяч исторических событий на дисплее в энергонезависимой памяти, с возможностью экспорта их разом на USB (в памяти дисплея они остаются при этом). События отображаются текстом в таблице: видов событий около 300 штук. Запись должна быть циклическая.

ОК.
Беру обычную историческую таблицу без колонки квитирования. Накидываю туда событий, всё на дисплее отображается, в энергонезависимой памяти сохраняется, прекрасно.
Делаю функц. кнопку для экспорта (Export CSV) и тут наступаю на грабельки: или панель пищит секунд 5 и зависает или экспортирует только пустой файл с наименованиями колонок. Видимо что то не то с настройками экспорта? Посмотрите пожалуйста.

Название в экспорте сделайте на английском и лучше использовать автооблать хранения начиная с регистра PFW4096
Соответственно и записывать надо в автообласть и экспорт из неё.

petera
31.08.2023, 11:20
Добрый день, бьюсь над простой задачей : необходимо хранить несколько тысяч исторических событий на дисплее в энергонезависимой памяти, с возможностью экспорта их разом на USB (в памяти дисплея они остаются при этом). События отображаются текстом в таблице: видов событий около 300 штук. Запись должна быть циклическая.

ОК.
Беру обычную историческую таблицу без колонки квитирования. Накидываю туда событий, всё на дисплее отображается, в энергонезависимой памяти сохраняется, прекрасно.
Делаю функц. кнопку для экспорта (Export CSV) и тут наступаю на грабельки: или панель пищит секунд 5 и зависает или экспортирует только пустой файл с наименованиями колонок. Видимо что то не то с настройками экспорта? Посмотрите пожалуйста.
Что Вы там собрались экспортировать? В структуре архива исторической таблицы физически нет текстов событий, а только их условный код, т.е. нет там String-ов от слова - совсем.
Кроме того структура одной записи в архиве исторической таблицы сложнее той, что Вы в экспорте создали, столбцов должно быть больше в два раза!!!
вообщем - "monkey business" (по русски - мартышкин труд)
https://owen.ru/forum/attachment.php?attachmentid=11951&d=1392750788

petera
31.08.2023, 11:55
ЗЫ
Структура записи об одном событии занимает 12 регистров WORD (то, что вы скрыли столбец с квитированием совершенно не означает, что в хранилише не резервируются столбцы с временем квитирования)
год события
месяц события
день события
час события
минуты события
код события
квитировано да(1)/нет(0)
год квитирования
месяц квитирования
день квитирования
час квитирования
минуты квитирования
вот так можно представить архив исторической таблицы в виде набора регистров
69964

petera
31.08.2023, 12:03
ЗЫ.
А так это выглядит в панели

https://owen.ru/forum/attachment.php?attachmentid=69933&d=1693472543

StF
31.08.2023, 18:16
Хорошо, таблица хранится не так как я предполагал... Ок, это я скорректирую .
Но почему не выходит просто экспорт на USB сделать в формате CSV пачки регистров? Хоть флеш, хоть обычной памяти. В моем понимании задал стартовый регистр, их количество, формат данных - и понеслось. А оно пищит, зараза. :(

kondor3000
31.08.2023, 18:28
Хорошо, таблица хранится не так как я предполагал... Ок, это я скорректирую .
Но почему не выходит просто экспорт на USB сделать в формате CSV пачки регистров? Хоть флеш, хоть обычной памяти. В моем понимании задал стартовый регистр, их количество, формат данных - и понеслось. А оно пищит, зараза. :(

Скачайте пример petera и запустите. Посмотрите как настроено. И уже писал, пишите в экспорте теги на английском.
На сайте тоже есть примеры по всем таблицам и экспорту. Только не делайте экспорт раз в секунду, чем реже, тем лучше. Или выложите свой проект.

StF
31.08.2023, 19:33
Спасибо, я понял что логика работы несколько другая относительно того что я себе в голове напридумывал. (Экспорт CSV берет из Хранилища, в котором сначала данные должны оказаться с помощью Архивирования в панели...)

petera
31.08.2023, 19:44
Спасибо, я понял что логика работы несколько другая относительно того что я себе в голове напридумывал. (Экспорт CSV берет из Хранилища, в котором сначала данные должны оказаться с помощью Архивирования в панели...)
Совсем не обязательно архивирование в панели использовать, экспорт в CSV можно сделать для ЛЮБОЙ области регистров панели..

petera
31.08.2023, 21:32
ЗЫ
модификация проекта с кнопкой экспорта
69956

настройки экспорта
69957 69958


69959 69960

petera
31.08.2023, 21:41
ЗЫ

Совсем не обязательно архивирование в панели использовать, экспорт в CSV можно сделать для ЛЮБОЙ области регистров панели..
https://owen.ru/forum/attachment.php?attachmentid=69961&d=1693507212


проект во вложении

petera
01.09.2023, 09:47
ЗЫ.
Напоминаю еще раз,
мне в эмуляции удобно было сохранять файл на диске D:, поэтому "ID устройства" =1 (код диска 0- C:\; 1- D:\; 2- E:\; и т.д)

69978

Для реальной панели следует "ID устройства" сделать "0", если конечно флешка не разбита на несколько логических дисков.

StF
15.09.2023, 20:39
Спасибо за подробный разбор существующего элемента, однако к сожалению мне не стало понятней как сделать экспорт вида "дата время | тестовое сообщение" в эксель, кроме как написать с нуля самому этот элемент, начиная с отображения на экран, с кольцевым буфером и прочими прелестями.

petera
15.09.2023, 21:23
Спасибо за подробный разбор существующего элемента, однако к сожалению мне не стало понятней как сделать экспорт вида "дата время | тестовое сообщение" в эксель, кроме как написать с нуля самому этот элемент, начиная с отображения на экран, с кольцевым буфером и прочими прелестями.

Ни как. Текстовых сообщений в архиве исторической таблицы в явном виде нет.

написать с нуля самому этот элемент, начиная с отображения на экран, с кольцевым буфером и прочими прелестями
Можно сделать из "Архивирование на USB", но учитывая, что "видов событий около 300 штук" я бы и не начинал...

petera
15.09.2023, 23:45
ЗЫ.

написать с нуля самому этот элемент, начиная с отображения на экран, с кольцевым буфером и прочими прелестями
Вот эту тему почитайте https://owen.ru/forum/showthread.php?t=25381

StF
17.09.2023, 19:15
Мне необходимо чтобы при экспорте в CSV файле сохранялась информация в виде 2 столбцов. Первый столбец - дата и время. Второй столбец - текст сообщения об ошибке. В приведенном вами примере к сожалению формат отличается.

petera
17.09.2023, 20:55
Мне необходимо чтобы при экспорте в CSV файле сохранялась информация в виде 2 столбцов. Первый столбец - дата и время. Второй столбец - текст сообщения об ошибке. В приведенном вами примере к сожалению формат отличается.

Я же Вам удочку даю(принцип решения), а Вы все равно рыбы просите...

МихаилГл
18.09.2023, 04:45
Я же Вам удочку даю(принцип решения), а Вы все равно рыбы просите...

Ну это не инженерный подход называется... "Дайте мне решение, а то я в ваших каракулях не хочу разбираться")

StF
18.09.2023, 15:35
ЗЫ.

Вот эту тему почитайте https://owen.ru/forum/showthread.php?t=25381

Спасибо, ушёл изучать.

StF
19.09.2023, 22:31
Вроде бы удалось написать задуманное, реализовав с нуля табличку с данными, кольцевым буфером, листанием, экспортом итд, однако меня не покидает ощущение что это можно было всё решить как то гораздо проще. Или я заблуждаюсь?

petera
20.09.2023, 11:47
Вроде бы удалось написать задуманное, реализовав с нуля табличку с данными, кольцевым буфером, листанием, экспортом итд, однако меня не покидает ощущение что это можно было всё решить как то гораздо проще. Или я заблуждаюсь?

Жалко, что я чайник в языке Си (Читаю и перевожу со словарем :) ).
Но я бы оставил стандартную историческую таблицу, а на Си сделал экспорт в файл. Мне кажется было бы проще. Ведь в архиве исторической таблицы, каждая запись - 5 регистров штамп времени, далее один регистр индекс сообщения в массиве сообщений, остальные шесть регистров игнорируем.
Адреса каждой записи в архиве известны, печатаем каждую запись в буфер функцией snprintf() в нужном формате (дату-время + "," + сообщение из массива по индексу + 0x0D + 0x0A). После перебора всех записей в архиве - записать содержимое буфера в конец файла "CE.csv"

StF
20.09.2023, 18:56
Нашел вашу тему ( https://owen.ru/forum/showthread.php?t=25381 ) и в принципе она меня надоумила кое-что (многое) упростить: предложенное вами решение элегантней и проще.
в итоге кода на С стало на пару десятков строчек от силы, и обусловлено это тем что на множество сообщений об ошибках функциональные области рисовать не хватит места.

Однако есть проблемы:
1)Таблица не хочет стираться, хотя казалось бы стандартная кнопка интерфейса как листание.
2)Таблица таки не хочет в нормальном виде (аналогичном виду таблицы на экране) экспортироваться на USB тогда когда мне нужно, по нажатию кнопки.

Если будет возможность - посмотрите пожалуйста.

petera
20.09.2023, 19:27
Нашел вашу тему ( https://owen.ru/forum/showthread.php?t=25381 ) и в принципе она меня надоумила кое-что (многое) упростить: предложенное вами решение элегантней и проще.
в итоге кода на С стало на пару десятков строчек от силы, и обусловлено это тем что на множество сообщений об ошибках функциональные области рисовать не хватит места.

Однако есть проблемы:
1)Таблица не хочет стираться, хотя казалось бы стандартная кнопка интерфейса как листание.
2)Таблица таки не хочет в нормальном виде (аналогичном виду таблицы на экране) экспортироваться на USB тогда когда мне нужно, по нажатию кнопки.

Если будет возможность - посмотрите пожалуйста.

Чтобы очистить таблицу нужна "обнулить" адреса циклического буфера - адрес головы и адрес хвоста установить на начальные значения. Если базовый адрес таблицы PFW1000, то функциональной кнопкой сделать PFW1000 = 1004 и PFW1002 = 1004.

Дальше проект пока не изучал.

petera
20.09.2023, 21:11
Нашел вашу тему ( https://owen.ru/forum/showthread.php?t=25381 ) и в принципе она меня надоумила кое-что (многое) упростить: предложенное вами решение элегантней и проще.
в итоге кода на С стало на пару десятков строчек от силы, и обусловлено это тем что на множество сообщений об ошибках функциональные области рисовать не хватит места.

Однако есть проблемы:
1)Таблица не хочет стираться, хотя казалось бы стандартная кнопка интерфейса как листание.
2)Таблица таки не хочет в нормальном виде (аналогичном виду таблицы на экране) экспортироваться на USB тогда когда мне нужно, по нажатию кнопки.

Если будет возможность - посмотрите пожалуйста.

Разбор полетов
1. Самое простое - очистка таблицы
убираем эту кнопку управления событием
70325

вместо неё используем обычную ф.кнопку, в ней сбрасываем адреса циклического буфера в исходное состояние
70326

Теперь если нажать на эту кнопку таблица будет отображаться пустой.

2. Вы невнимательно изучили мой пример по ссылке. Элемент Архивирование на USB служит там исключительно для формирования записей в архиве. Для физического экспорта он не не должен использоваться, совместить две функции не получится хотя бы по тому, что
а) пока весь архив (15 записей) не заполнится ничего физически экспортироваться не будет, даже если включит бит разрешения экспорта, т.е. по заполнении архива запись всех 15 записей на USB происходит автоматом. По команде - ни как!
б) во внутренней структуре элемента Архивирование на USB есть ошибка - после заполнения архива и соответственно установки указателей циклического буфера в конечное положение запись последующих событий происходит всегда в конец очереди и т.к. очередь заполнена, то с каждым ОДНИМ новым событием ВЕСЬ архив сбрасывается(добавляется в конец) в файл. И в файл будет забит повторением уже ранее записанных строк.
Победить это можно если вкл. галку "Очистить регистры после экспорта". А это не что иное как сброс адресов циклического буфера в исходное состояние. И соответственно очистка таблицы на экране.
По этому экспорт нужно вообще запретить, как в моем исходном примере
Это убираем
70327

А это добавляем
70328

3. Экспортом займется функция Экспорт в CSV
в ф.кнопке вместо этого
70329

делаем так
70330

И здесь уже и делаем настройки экспорта

70331 70332

70333 70334

70335

Вот пример экспорта в файл
70336

В заключении про экран 2
1. Сказали А, говорите и Б
Т.е. для индексной адресации используйте коэффициент 11
70337 70338

Ну и вишенка на торте - поиграйтесь с полной клавиатурой моего дизайна.
70339 70340
ВНИМАНИЕ.
Если поменять тип панели, клавиатура пропадет, по этому прилагают тот же файл но для СП310

ЗЫ.
Если Вы хотите в файле видеть один столбец с датой временем, то поменяйте порядок столбцов в таблице на
Событие, статус, дата время.
Тогда в функции экспорта можно вместо первых 6 отдельных столбцов задействовать вкладку Дата время
70335

petera
21.09.2023, 11:01
В данном примере тексты сообщений можно не только редактировать с экрана, но и загрузить из внешнего файла
70363 70364

70365

https://owen.ru/forum/attachment.php?attachmentid=70362&d=1695282915

Ollema
04.10.2023, 10:10
Небольшие разочарования от архивирования на USB:

1. Не понимает флешки, форматированные в NTFS - файл ограничен размером FAT32.
2. Если сделать разбивку записей по дате (тогда каждый день создается новый файл, а не пишется все в один) - будьте добры получить названия заголовков после каждой записи в файле.

Или я что то упустил в конфигурировании?

kondor3000
04.10.2023, 10:23
Небольшие разочарования от архивирования на USB:

1. Не понимает флешки, форматированные в NTFS - файл ограничен размером FAT32.
2. Если сделать разбивку записей по дате (тогда каждый день создается новый файл, а не пишется все в один) - будьте добры получить названия заголовков после каждой записи в файле.

Или я что то упустил в конфигурировании?

Можно писать в один файл, можно по дате ( самое удобное), можно каждый раз новый.
И главное не писать часто (раз в сек), лучше собирать инфу за 1-5 мин, и потом писать

Ollema
04.10.2023, 10:35
Можно писать в один файл, можно по дате ( самое удобное), можно каждый раз новый.
И главное не писать часто (раз в сек), лучше собирать инфу за 1-5 мин, и потом писать

Шикарно, но я не об этом спрашивал))
Если писать по дате, то заголовки данных пишутся при каждой новой записи! Этого нельзя исключить?

kondor3000
04.10.2023, 10:55
Шикарно, но я не об этом спрашивал))
Если писать по дате, то заголовки данных пишутся при каждой новой записи! Этого нельзя исключить?

По моему нет.