Показано с 1 по 9 из 9

Тема: проблемы с SysFileClose

  1. #1

    По умолчанию проблемы с SysFileClose

    Всем привет. Пытаюсь освоить системные бибилиотеки. А именно SysLibFile. Файл открывается. Возвращается количество записанных байт. Удаляется. Считывается. А вот закрыть не удаётся...Не знаю где собака порылась.
    Вложения Вложения

  2. #2

    По умолчанию

    Это ошибка в реализации библиотеки. На самом деле файл закрывается.
    Функция Close на самом деле возвращает DWORD.
    - Слова Филоненко Александра, с какой-то темы. Но если установить переменной (присвающей значение SysFileClose)тип DWORD. то компилятор выдаёт ошибку несоответствия типов. ???

  3. #3

    По умолчанию

    Да...похоже не очень популярный вопрос я задал. Никто из ОВЕНа не отозвался. Теперь следующие вопросы к производителям ПЛК 154. В приведённом ниже примере файл прекрасно пишется и закрывается.
    Но есть два вопроса:
    1) Функция записи работает только в режиме 'W'. В режиме 'a' выдаёт ошибку 100.
    2) Так и не ясно , что возвращает xReturn := SysFileClose(dwHandle) в случае ошибки и возвращает ли, что либо ещё кроме FALSE. Мои эксперименты показали, что в случае удачного закрытия файла возвращается FALSE, а не TRUE как в описании. Добиться момента когда произойдёт ошибка мне не удалось.
    Хотелось бы понять это ошибки самой библиотеки или же в контроллере не полностью реализованы эти функционалы?
    Вложения Вложения

  4. #4

    По умолчанию

    День, добрый. Скажем так, не очень много пользователей используют данный функционал. Попробуйте мой пример с архивом поглядеть. У меня все работало:
    http://www.owen.ru/forum/showpost.ph...7&postcount=45

  5. #5

    По умолчанию

    Цитата Сообщение от Александр Приходько Посмотреть сообщение
    Попробуйте мой пример с архивом поглядеть. У меня все работало:
    ===========
    SysFileClose(f1);
    t(IN := FALSE, PT:= T#0s);
    ===========

    - Хех, если коды возврата не проверять то так конечно будет "работать"

  6. #6

    По умолчанию

    1. SysWrite действительно работает только в режимах w и r. Которые и описаны в документации. Других режимов в документации не описано. Это не библиотечная функция C!
    1а. Режим A можно реализовать самому, вызвав после открытия функцию SysFileSeek()
    2. Документацию желательно читать ДО.
    3. SysFileClose всегда закрывает файл. Причин ей помешать нет.

    P.S. Я Владислав

  7. #7

    По умолчанию

    Цитата Сообщение от Филоненко Владислав Посмотреть сообщение
    1. SysWrite действительно работает только в режимах w и r. Которые и описаны в документации. Других режимов в документации не описано. Это не библиотечная функция C!
    Мне 'a' не нужно было, но вы меня заинтриговали, вот что говорит доступная мне документация (F1 в CoDeSys):
    ==================
    Access mode:
    w write (File will be updated or created newly)
    r read (File will only be opened for reading; if the file does not exist, an error will be returned)
    rw read and write (File will be updated; if the file does not exist, an error will be returned)
    a append (File will be opened like described for 'w', but the written data will be appended at the end of the file)
    ==================
    Слово в слово содержимое файла SysLibFile_E.pdf и перевод в SysLibFile_RU.pdf. Хотя вы правы, я не поленился проверить - оно действительно не работает.
    Источник PDF'ок файл Bibl_CoDeSys.zip, откуда слил не помню, но с огромной долей вероятности с www.owen.ru.

  8. #8

    Wink

    Смотрим описание тут:
    SysLibFile_RU.zip

  9. #9
    Пользователь
    Регистрация
    09.08.2013
    Адрес
    Башкортостан
    Сообщений
    234

    По умолчанию

    В приведенном по ссылке файле явно указаны режимы "rw" при открытии файла.
    Больше двух лет проблеме и она до сих пор не решена?
    Ну хоть описание поддерживаемых функций поправьте.

Ваши права

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