Просмотр полной версии : СП-310Р: не могу сделать экспорт обычной исторической таблицы на USB
Добрый день, бьюсь над простой задачей : необходимо хранить несколько тысяч исторических событий на дисплее в энергонезависимой памяти, с возможностью экспорта их разом на USB (в памяти дисплея они остаются при этом). События отображаются текстом в таблице: видов событий около 300 штук. Запись должна быть циклическая.
ОК.
Беру обычную историческую таблицу без колонки квитирования. Накидываю туда событий, всё на дисплее отображается, в энергонезависимой памяти сохраняется, прекрасно.
Делаю функц. кнопку для экспорта (Export CSV) и тут наступаю на грабельки: или панель пищит секунд 5 и зависает или экспортирует только пустой файл с наименованиями колонок. Видимо что то не то с настройками экспорта? Посмотрите пожалуйста.
kondor3000
31.08.2023, 11:14
Добрый день, бьюсь над простой задачей : необходимо хранить несколько тысяч исторических событий на дисплее в энергонезависимой памяти, с возможностью экспорта их разом на USB (в памяти дисплея они остаются при этом). События отображаются текстом в таблице: видов событий около 300 штук. Запись должна быть циклическая.
ОК.
Беру обычную историческую таблицу без колонки квитирования. Накидываю туда событий, всё на дисплее отображается, в энергонезависимой памяти сохраняется, прекрасно.
Делаю функц. кнопку для экспорта (Export CSV) и тут наступаю на грабельки: или панель пищит секунд 5 и зависает или экспортирует только пустой файл с наименованиями колонок. Видимо что то не то с настройками экспорта? Посмотрите пожалуйста.
Название в экспорте сделайте на английском и лучше использовать автооблать хранения начиная с регистра PFW4096
Соответственно и записывать надо в автообласть и экспорт из неё.
Добрый день, бьюсь над простой задачей : необходимо хранить несколько тысяч исторических событий на дисплее в энергонезависимой памяти, с возможностью экспорта их разом на USB (в памяти дисплея они остаются при этом). События отображаются текстом в таблице: видов событий около 300 штук. Запись должна быть циклическая.
ОК.
Беру обычную историческую таблицу без колонки квитирования. Накидываю туда событий, всё на дисплее отображается, в энергонезависимой памяти сохраняется, прекрасно.
Делаю функц. кнопку для экспорта (Export CSV) и тут наступаю на грабельки: или панель пищит секунд 5 и зависает или экспортирует только пустой файл с наименованиями колонок. Видимо что то не то с настройками экспорта? Посмотрите пожалуйста.
Что Вы там собрались экспортировать? В структуре архива исторической таблицы физически нет текстов событий, а только их условный код, т.е. нет там String-ов от слова - совсем.
Кроме того структура одной записи в архиве исторической таблицы сложнее той, что Вы в экспорте создали, столбцов должно быть больше в два раза!!!
вообщем - "monkey business" (по русски - мартышкин труд)
https://owen.ru/forum/attachment.php?attachmentid=11951&d=1392750788
ЗЫ
Структура записи об одном событии занимает 12 регистров WORD (то, что вы скрыли столбец с квитированием совершенно не означает, что в хранилише не резервируются столбцы с временем квитирования)
год события
месяц события
день события
час события
минуты события
код события
квитировано да(1)/нет(0)
год квитирования
месяц квитирования
день квитирования
час квитирования
минуты квитирования
вот так можно представить архив исторической таблицы в виде набора регистров
69964
ЗЫ.
А так это выглядит в панели
https://owen.ru/forum/attachment.php?attachmentid=69933&d=1693472543
Хорошо, таблица хранится не так как я предполагал... Ок, это я скорректирую .
Но почему не выходит просто экспорт на USB сделать в формате CSV пачки регистров? Хоть флеш, хоть обычной памяти. В моем понимании задал стартовый регистр, их количество, формат данных - и понеслось. А оно пищит, зараза. :(
kondor3000
31.08.2023, 18:28
Хорошо, таблица хранится не так как я предполагал... Ок, это я скорректирую .
Но почему не выходит просто экспорт на USB сделать в формате CSV пачки регистров? Хоть флеш, хоть обычной памяти. В моем понимании задал стартовый регистр, их количество, формат данных - и понеслось. А оно пищит, зараза. :(
Скачайте пример petera и запустите. Посмотрите как настроено. И уже писал, пишите в экспорте теги на английском.
На сайте тоже есть примеры по всем таблицам и экспорту. Только не делайте экспорт раз в секунду, чем реже, тем лучше. Или выложите свой проект.
Спасибо, я понял что логика работы несколько другая относительно того что я себе в голове напридумывал. (Экспорт CSV берет из Хранилища, в котором сначала данные должны оказаться с помощью Архивирования в панели...)
Спасибо, я понял что логика работы несколько другая относительно того что я себе в голове напридумывал. (Экспорт CSV берет из Хранилища, в котором сначала данные должны оказаться с помощью Архивирования в панели...)
Совсем не обязательно архивирование в панели использовать, экспорт в CSV можно сделать для ЛЮБОЙ области регистров панели..
ЗЫ
модификация проекта с кнопкой экспорта
69956
настройки экспорта
69957 69958
69959 69960
ЗЫ
Совсем не обязательно архивирование в панели использовать, экспорт в CSV можно сделать для ЛЮБОЙ области регистров панели..
https://owen.ru/forum/attachment.php?attachmentid=69961&d=1693507212
проект во вложении
ЗЫ.
Напоминаю еще раз,
мне в эмуляции удобно было сохранять файл на диске D:, поэтому "ID устройства" =1 (код диска 0- C:\; 1- D:\; 2- E:\; и т.д)
69978
Для реальной панели следует "ID устройства" сделать "0", если конечно флешка не разбита на несколько логических дисков.
Спасибо за подробный разбор существующего элемента, однако к сожалению мне не стало понятней как сделать экспорт вида "дата время | тестовое сообщение" в эксель, кроме как написать с нуля самому этот элемент, начиная с отображения на экран, с кольцевым буфером и прочими прелестями.
Спасибо за подробный разбор существующего элемента, однако к сожалению мне не стало понятней как сделать экспорт вида "дата время | тестовое сообщение" в эксель, кроме как написать с нуля самому этот элемент, начиная с отображения на экран, с кольцевым буфером и прочими прелестями.
Ни как. Текстовых сообщений в архиве исторической таблицы в явном виде нет.
написать с нуля самому этот элемент, начиная с отображения на экран, с кольцевым буфером и прочими прелестями
Можно сделать из "Архивирование на USB", но учитывая, что "видов событий около 300 штук" я бы и не начинал...
ЗЫ.
написать с нуля самому этот элемент, начиная с отображения на экран, с кольцевым буфером и прочими прелестями
Вот эту тему почитайте https://owen.ru/forum/showthread.php?t=25381
Мне необходимо чтобы при экспорте в CSV файле сохранялась информация в виде 2 столбцов. Первый столбец - дата и время. Второй столбец - текст сообщения об ошибке. В приведенном вами примере к сожалению формат отличается.
Мне необходимо чтобы при экспорте в CSV файле сохранялась информация в виде 2 столбцов. Первый столбец - дата и время. Второй столбец - текст сообщения об ошибке. В приведенном вами примере к сожалению формат отличается.
Я же Вам удочку даю(принцип решения), а Вы все равно рыбы просите...
МихаилГл
18.09.2023, 04:45
Я же Вам удочку даю(принцип решения), а Вы все равно рыбы просите...
Ну это не инженерный подход называется... "Дайте мне решение, а то я в ваших каракулях не хочу разбираться")
ЗЫ.
Вот эту тему почитайте https://owen.ru/forum/showthread.php?t=25381
Спасибо, ушёл изучать.
Вроде бы удалось написать задуманное, реализовав с нуля табличку с данными, кольцевым буфером, листанием, экспортом итд, однако меня не покидает ощущение что это можно было всё решить как то гораздо проще. Или я заблуждаюсь?
Вроде бы удалось написать задуманное, реализовав с нуля табличку с данными, кольцевым буфером, листанием, экспортом итд, однако меня не покидает ощущение что это можно было всё решить как то гораздо проще. Или я заблуждаюсь?
Жалко, что я чайник в языке Си (Читаю и перевожу со словарем :) ).
Но я бы оставил стандартную историческую таблицу, а на Си сделал экспорт в файл. Мне кажется было бы проще. Ведь в архиве исторической таблицы, каждая запись - 5 регистров штамп времени, далее один регистр индекс сообщения в массиве сообщений, остальные шесть регистров игнорируем.
Адреса каждой записи в архиве известны, печатаем каждую запись в буфер функцией snprintf() в нужном формате (дату-время + "," + сообщение из массива по индексу + 0x0D + 0x0A). После перебора всех записей в архиве - записать содержимое буфера в конец файла "CE.csv"
Нашел вашу тему ( https://owen.ru/forum/showthread.php?t=25381 ) и в принципе она меня надоумила кое-что (многое) упростить: предложенное вами решение элегантней и проще.
в итоге кода на С стало на пару десятков строчек от силы, и обусловлено это тем что на множество сообщений об ошибках функциональные области рисовать не хватит места.
Однако есть проблемы:
1)Таблица не хочет стираться, хотя казалось бы стандартная кнопка интерфейса как листание.
2)Таблица таки не хочет в нормальном виде (аналогичном виду таблицы на экране) экспортироваться на USB тогда когда мне нужно, по нажатию кнопки.
Если будет возможность - посмотрите пожалуйста.
Нашел вашу тему ( https://owen.ru/forum/showthread.php?t=25381 ) и в принципе она меня надоумила кое-что (многое) упростить: предложенное вами решение элегантней и проще.
в итоге кода на С стало на пару десятков строчек от силы, и обусловлено это тем что на множество сообщений об ошибках функциональные области рисовать не хватит места.
Однако есть проблемы:
1)Таблица не хочет стираться, хотя казалось бы стандартная кнопка интерфейса как листание.
2)Таблица таки не хочет в нормальном виде (аналогичном виду таблицы на экране) экспортироваться на USB тогда когда мне нужно, по нажатию кнопки.
Если будет возможность - посмотрите пожалуйста.
Чтобы очистить таблицу нужна "обнулить" адреса циклического буфера - адрес головы и адрес хвоста установить на начальные значения. Если базовый адрес таблицы PFW1000, то функциональной кнопкой сделать PFW1000 = 1004 и PFW1002 = 1004.
Дальше проект пока не изучал.
Нашел вашу тему ( 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
В данном примере тексты сообщений можно не только редактировать с экрана, но и загрузить из внешнего файла
70363 70364
70365
https://owen.ru/forum/attachment.php?attachmentid=70362&d=1695282915
Небольшие разочарования от архивирования на USB:
1. Не понимает флешки, форматированные в NTFS - файл ограничен размером FAT32.
2. Если сделать разбивку записей по дате (тогда каждый день создается новый файл, а не пишется все в один) - будьте добры получить названия заголовков после каждой записи в файле.
Или я что то упустил в конфигурировании?
kondor3000
04.10.2023, 10:23
Небольшие разочарования от архивирования на USB:
1. Не понимает флешки, форматированные в NTFS - файл ограничен размером FAT32.
2. Если сделать разбивку записей по дате (тогда каждый день создается новый файл, а не пишется все в один) - будьте добры получить названия заголовков после каждой записи в файле.
Или я что то упустил в конфигурировании?
Можно писать в один файл, можно по дате ( самое удобное), можно каждый раз новый.
И главное не писать часто (раз в сек), лучше собирать инфу за 1-5 мин, и потом писать
Можно писать в один файл, можно по дате ( самое удобное), можно каждый раз новый.
И главное не писать часто (раз в сек), лучше собирать инфу за 1-5 мин, и потом писать
Шикарно, но я не об этом спрашивал))
Если писать по дате, то заголовки данных пишутся при каждой новой записи! Этого нельзя исключить?
kondor3000
04.10.2023, 10:55
Шикарно, но я не об этом спрашивал))
Если писать по дате, то заголовки данных пишутся при каждой новой записи! Этого нельзя исключить?
По моему нет.
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot