Показано с 1 по 10 из 19

Тема: Скрипт архивирование на USB (панель СП3хх) и fseek

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,310

    По умолчанию

    Цитата Сообщение от -=Vovka=- Посмотреть сообщение
    Здравствуйте!
    Тогда как мне пользуясь примером сделать дозапись в файл?
    Т.е. на флешке уже есть файл, записанный допустим в другой панели. Как БЫСТРО узнать конец файла? Считывать весь? А если там гигабайты?
    Извините - не сумел догадаться, что конечная цель - определить размер файла.

    Для чтения SEEK_END работает.

    Код:
    #define BUFSIZE   	80
    #define LF		  	0x0A  
    #define CR			0x0D  
    
    WORD TD_Array[5];
    WORD kode, data;
    FILE 	*pFile;
    char 	buf[BUFSIZE];
    
    pFile = fopen("log.csv", "r");
    if(pFile) 
    {
      fseek(pFile, 0, SEEK_END);
      PSW[300]=ftell(pFile);		// size of file in bytes
      fclose(pFile); 
    }

    СП315 была куплена пару месяцев назад. Обменяете?
    Обсуждаемый вопрос - напишите на support@owen.ru, пожалуйста.

  2. #2

    По умолчанию

    Этот вариант заработал!
    Но тут появился дополнительный тормоз с двойным открытием файла: сначала на чтение, потом на запись
    Последний раз редактировалось -=Vovka=-; 05.12.2018 в 09:21.

  3. #3
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,310

    По умолчанию

    Цитата Сообщение от -=Vovka=- Посмотреть сообщение
    Этот вариант заработал!
    Но тут появился дополнительный тормоз с двойным открытием файла: сначала на чтение, потом на запись
    Я правильно понимаю, что вы успеваете вытаскивать/вставлять новые флешки несколько раз в секунду?
    Потому что в других ситуациях какие-либо тормоза из-за двух операций с файлом вместо одной сложно будет заметить.

    Или закрыл файл и можно флешку вытаскивать?
    Да, именно так.

  4. #4

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Я правильно понимаю, что вы успеваете вытаскивать/вставлять новые флешки несколько раз в секунду?
    Потому что в других ситуациях какие-либо тормоза из-за двух операций с файлом вместо одной сложно будет заметить.
    Да, именно так.
    Мне интересен сам механизм закрытия файла: ведь на флешке может быть много файлов, да и со временем может притормаживать.
    Так вот, закрытия файла гарантирует физическую запись на флешку или как в Виндовс есть буферизация с отложенной записью и "Безопасное извлечение устройства"?

  5. #5

    По умолчанию

    Согласен, но хотелось бы "железобетонного" решения....

  6. #6
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,310

    По умолчанию

    Цитата Сообщение от -=Vovka=- Посмотреть сообщение
    Согласен, но хотелось бы "железобетонного" решения....
    В принципе, можно после записи опять проверять размер файла и если он увеличился на размер записанного буфера - то делать вывод об успешной записи в файл.
    Но, опять-таки, это дополнительная операция.

  7. #7

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    В принципе, можно после записи опять проверять размер файла и если он увеличился на размер записанного буфера - то делать вывод об успешной записи в файл.
    По моему тут глубже надо смотреть: на флешку мы послали данные, а вот она может притормозить и тогда если мы ее выдернули, то данные могут не успеть записаться.
    Может есть механизм узнать, что контроллер флешки закончил все операции?

  8. #8
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,310

    По умолчанию

    Цитата Сообщение от -=Vovka=- Посмотреть сообщение
    По моему тут глубже надо смотреть: на флешку мы послали данные, а вот она может притормозить и тогда если мы ее выдернули, то данные могут не успеть записаться.
    Может есть механизм узнать, что контроллер флешки закончил все операции?
    Лучше даташит на конкретную флэшку посмотреть, но даже неадекватно большие в рамках типового применения панели объемы данных (~100 Кб, например) должны записываться за какие-то доли секунды.

Похожие темы

  1. Скрипт
    от BSA в разделе Master SCADA 3
    Ответов: 26
    Последнее сообщение: 04.04.2019, 13:23
  2. Скрипт архивирование на USB (панель СП3хх)
    от akphantom в разделе Панели оператора (HMI)
    Ответов: 2
    Последнее сообщение: 30.11.2018, 07:24
  3. Панель СП3хх
    от Р.Александр в разделе Панели оператора (HMI)
    Ответов: 20
    Последнее сообщение: 16.08.2018, 19:28
  4. Экон134 и панель сп3хх
    от Aleksandr в разделе Эксплуатация
    Ответов: 6
    Последнее сообщение: 17.03.2016, 08:53
  5. С-скрипт документация
    от Falvik в разделе Master SCADA 3
    Ответов: 1
    Последнее сообщение: 18.03.2014, 11:56

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •