Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 22

Тема: Особенности библиотеки SysLibFile

  1. #1

    По умолчанию Особенности библиотеки SysLibFile

    Доброго дня!

    При работе с библиотекой SysLibFile возникают некоторые непонятности:

    При создании файла пишу: hfile:=SysFileOpen('archive.log', 'w');
    Загружаю проект в контроллер.
    Файл создается, его можно скачать через Online>Read file from PLC. Но вот функция SysFileWrite не хочет ничего в него записывать.

    Дальше - интересно: меняем имя архива на любое другое, заливаем проект в контроллер, и все работает!

    Таргет - 2.02, прошивка - 2.02.8

    Подскажите, в чем дело? Как все это делается по-нормальному?
    Вложения Вложения

  2. #2

    По умолчанию

    1. Проверьте, не открыли ли Вы его 2 раза. в этом случае 2-е открытие будет всегда в режиме "R" независимо от настроек.
    2. Перед любой операцией с файлом по имени (удаление, переименование) закройте файл.

  3. #3

    По умолчанию

    1. Да, спасибо. Вы были правы. Не поставил триггер на кнопку - и файл создавался/открывался несколько раз. Теперь работает.
    2. Перед тем как определять размер файла, его тоже надо закрывать?

  4. #4

    По умолчанию

    И еще один вопрос: что делать, если файл все-таки был открыт 2 раза? SysFileClose(hfile) не помогает.

  5. #5

    По умолчанию

    На последний вопрос отвечу сам, может кому пригодится:

    SysFileClose(hFile);
    hFile:=SysFileOpen(file_name, 'w');
    Кажется, помогает

  6. #6

    По умолчанию Не работает запись в файл!!!

    Уважаемые! Помогите! Просидел целый день, а запись в файл так и неработает. Не понимаю в чем дело?
    PLC model MODEL PLC 100.K.M
    Binary VERSION 2.02.8
    Need Target version 2.02
    Вложения Вложения

  7. #7

    По умолчанию

    Что возвращает SysFileWrite(hFile, ADR(WriteBuffer), LEN(WriteBuffer)); ?

  8. #8

    По умолчанию

    Возвращало 0. Сейчас убрал опрос размера файла, начал писать. Видимо здесь собака порылась. А для обращения к файлу по имени его закравать нужно?
    Последний раз редактировалось Назаров Александр; 31.10.2008 в 18:35.

  9. #9

    По умолчанию

    Да, закрыл, опросил, открыл, записал, закрыл.
    Обращаю внимание, что операции открытия, закрытия, а тем более записи длительные и лучше не вызывать их все в 1 цикле ПЛК, а разнести на несколько десятков циклов. Особенно если запись > 30 кБайт за раз или > 25 кБайт в секунду - кэш записи переполнится и пока всё непомещающееся в кэш не запишется во Flash - ВСЁ будет стоять. А это ~30-40 мс на Кбайт.
    P.S. лучше не закрывать файл после каждой записи, а только когда его надо закрыть по любому (стирание, переименование, доступ на запись извне)

  10. #10

    По умолчанию

    Цитата Сообщение от Филоненко Владислав Посмотреть сообщение
    P.S. лучше не закрывать файл после каждой записи, а только когда его надо закрыть по любому (стирание, переименование, доступ на запись извне)
    Как же его не закрывать если при записи лога необходимо дозаписывать информацию в конец файла? Команда Append не работает, а чтобы узнать размер файла его необходимо закрыть. Или Вы предлагаете вести свой счетчик позиции? В принципе тоже вариант! Только не возникнет ли каких либо сбоев?
    И еще. Похоже имена файлов не могут быть любыми. Например в файл FileLog.txt записи проходят, а в FileLog.arh нет. Казалось бы какая разница?
    Последний раз редактировалось Назаров Александр; 01.11.2008 в 19:00.

Страница 1 из 3 123 ПоследняяПоследняя

Ваши права

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