Страница 12 из 16 ПерваяПервая ... 21011121314 ... ПоследняяПоследняя
Показано с 111 по 120 из 177

Тема: Работа с USB Flash карт в новом ПЛК110

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

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию

    Конечно рассматриваю. Если бы Владислав ответил, что это опечатка, то вопрос был бы сразу закрыт.

  2. #2

    По умолчанию

    Да, очепятка.
    Тролль-наседка, добрый, нежный и ласковый

  3. #3
    Пользователь
    Регистрация
    12.07.2007
    Адрес
    Воронеж
    Сообщений
    884

    По умолчанию

    Владислав, добрый день!
    Подскажите по такому вопросу:
    Делаю архивирование на флешку.
    С записью все ОК.
    Некая проблема с чтением.
    При MinCycleLenght в 1 мс - выходит статус ASYNC_BLOCK_ACCESS
    Опытным путем понял, что при цикле в 4 мс ошибка не вылетает, и все нормально работает.

    Флешка пустая, 8 гб.
    Далее от ошибки не избавиться никак, помогает лишь перезагрузка.
    Пробовал при ошибке выполнять OwenFileCloseAllOpenAsync, так же не помогает.

    И подскажите - SysLibDir не поддерживается?
    Можно как то папки создавать?

  4. #4

    По умолчанию

    Если всё и сразу делать с циклом 1 мс - конечно будет блокировка, вы сколько файлов за раз пытаетесь обрабатывать? Максимум можно 5 штук.
    Тролль-наседка, добрый, нежный и ласковый

  5. #5
    Пользователь
    Регистрация
    12.07.2007
    Адрес
    Воронеж
    Сообщений
    884

    По умолчанию

    Цитата Сообщение от Филоненко Владислав Посмотреть сообщение
    Если всё и сразу делать с циклом 1 мс - конечно будет блокировка, вы сколько файлов за раз пытаетесь обрабатывать? Максимум можно 5 штук.
    Файл один.
    Чтение и запись разнесены (и блокируют друг друга, чтобы избежать одновременной работы с файлом).

    Все обращения к файл разделены на два этапа (как в примере).
    CASE state OF
    0: (*Открытие файла - этап 1*)
    res:=OwenFileOpenAsync(Queue[0],'r',ADR(handle));(*возвращает дескриптор файла, либо 0 (в некоторых случаях 4 294 967 295 или -1) в случае ошибки*)
    IF res=ASYNC_WORKING THEN
    state:=1;(*нет ошибок, переход на открытие файла этап 2*)
    ELSE
    state:=0;
    END_IF


    1: (*Открытие файла - этап 2*)
    res:=OwenFileOpenAsync(Queue[0],'r',ADR(handle));
    IF res=ASYNC_DONE THEN (*если "готов", и нет ошибок, то переход в состояние 2*)
    IF handle<>0 THEN
    state:=11;(*нет ошибок, переход на чтение длины файла 1*)
    ELSE
    state:=0;(*иначе можно перейти на 1 этап открытия файла, либо предусмотреть собственное действие самостоятельно *)
    END_IF
    ELSIF res<0 THEN
    state:=0;
    END_IF


    11: (*Чтение размера, этап 1*)
    res:=OwenFileGetSizeAsync(Queue[0],ADR(sizeRead));(*возвращает дескриптор файла, либо 0 (в некоторых случаях 4 294 967 295 или -1) в случае ошибки*)
    IF res=ASYNC_WORKING THEN
    state:=12;(*нет ошибок, переход на открытие файла этап 2*)
    ELSE
    state:=4;
    END_IF


    12: (*Чтение размера, этап 2*)
    res:=OwenFileGetSizeAsync(Queue[0],ADR(sizeRead));(*возвращает дескриптор файла, либо 0 (в некоторых случаях 4 294 967 295 или -1) в случае ошибки*)
    IF res=ASYNC_DONE THEN
    (*нет ошибок, переход на открытие файла этап 2*)
    По условию либо state:=13; либо state:=2;
    ELSE
    state:=4;
    END_IF

    13: (*Установим начальную позиция для чтения этап 1*)
    res:=OwenFileSetPosAsync(handle,posQueue,ADR(resul t));(*возвращает дескриптор файла, либо 0 (в некоторых случаях 4 294 967 295 или -1) в случае ошибки*)
    IF res=ASYNC_WORKING THEN
    state:=14;(*нет ошибок, переход на открытие файла этап 2*)
    ELSE
    state:=4;
    END_IF

    14: (*Установим начальную позиция для чтения этап 1*)
    res:=OwenFileSetPosAsync(handle,posQueue,ADR(resul t));(*возвращает дескриптор файла, либо 0 (в некоторых случаях 4 294 967 295 или -1) в случае ошибки*)
    IF res=ASYNC_DONE THEN
    state:=2;(*нет ошибок, переход на открытие файла этап 2*)
    ELSE
    state:=4;
    END_IF

    2: (*Чтение из файл - этап 1*)
    (*Читаем кусок из файла*)
    res:=OwenFileReadAsync(handle,ADR(arrPostData), sizeRead, ADR(result));(*пишем данные *)
    IF res=ASYNC_WORKING THEN
    state:=3;(*нет ошибок, переход на запись файла этап 2, либо по усмотрению пользователя*)
    ELSE
    state:=4;(*иначе можно перейти на этап закрытия файла, либо предусмотреть собственное действие самостоятельно *)
    END_IF

    3: (*Запись в файл - этап 2*)
    res:=OwenFileReadAsync(handle,ADR(arrPostData), sizeRead, ADR(result));(*пишем данные *)
    IF res=ASYNC_DONE THEN
    SysMemCpy(ADR(strAll),ADR(arrPostData),2048);
    state:=4;
    bGoGet:=TRUE;
    ELSIF res<0 THEN
    state:=0;
    END_IF

    4: (*Закрываем файл - этап 1*)
    res:=OwenFileCloseAsync(handle, ADR(result));
    IF res=ASYNC_WORKING THEN
    state:=5;(*нет ошибок, переход на закрытие файла этап 2*, либо по усмотрению пользователя*)
    ELSE
    state:=0;(*иначе можно перейти на этап открытия файла, либо предусмотреть собственное действие самостоятельно *)
    END_IF

    5: (*Закрываем файл - этап 2*)
    res:=OwenFileCloseAsync(handle, ADR(result));
    IF res=ASYNC_DONE THEN
    bDataRead:=FALSE;
    handle:=0;
    IF result=0 THEN
    state:=0;(*если файл закрыт успешно, то выходим из условного оператора CASE *)
    ELSE
    state:=0;(*иначе всё равно выходим, либо предусмореть собственное действие*)
    END_IF
    ELSIF res<0 THEN (*выход, либо собственное действие*)
    state:=0;
    END_IF
    ELSE state:=0;
    END_CASE

  6. #6

    По умолчанию

    ASYNC_BLOCK_ACCESS возвращается если есть доступ к библиотеке с др. запросом до окончания первого.
    Тролль-наседка, добрый, нежный и ласковый

  7. #7
    Пользователь
    Регистрация
    12.07.2007
    Адрес
    Воронеж
    Сообщений
    884

    По умолчанию

    Как же тогда возможность работы с 5 файлами?
    Тогда точно будет доступ к библиотеке с другим запросом, до окончания первого.

    Что делать с этим ASYNC_BLOCK_ACCESS?
    Только перезагружать?

  8. #8

    По умолчанию

    Цитата Сообщение от приборист Посмотреть сообщение
    Как же тогда возможность работы с 5 файлами?
    Тогда точно будет доступ к библиотеке с другим запросом, до окончания первого.

    Что делать с этим ASYNC_BLOCK_ACCESS?
    Только перезагружать?
    5 одновременных запросов к РАЗНЫМ файлам
    Тролль-наседка, добрый, нежный и ласковый

  9. #9

    По умолчанию

    1. А каким образом это сделать?
    2. Попробую.
    3. Не проверял. Попробую.

  10. #10

    По умолчанию

    У меня такая проблема тоже была при использовании SysLibFile на М02, пришел на OwenLibFileAsync.
    Для форматирование есть команда в ПЛК-Браузер formatFFS.

Страница 12 из 16 ПерваяПервая ... 21011121314 ... ПоследняяПоследняя

Похожие темы

  1. Работа с USB флешками в ПЛК110 [м02]
    от alexx12 в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 22.12.2015, 18:28
  2. Библиотеки для работы ПЛК110 с USB
    от Ilych в разделе ПЛК1хх
    Ответов: 12
    Последнее сообщение: 30.05.2015, 00:14
  3. Ответов: 12
    Последнее сообщение: 25.12.2014, 10:55
  4. Связь ПК с ПЛК110-30 при помощи USB
    от Иван Юрьевич в разделе ПЛК1хх
    Ответов: 6
    Последнее сообщение: 17.12.2014, 12:19
  5. связь с плк110 по Usb-com
    от Валерий Бурик в разделе ПЛК1хх
    Ответов: 2
    Последнее сообщение: 05.05.2010, 08:12

Ваши права

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