PDA

Просмотр полной версии : CAA.File.library: ошибка 5802



GoodLuck
05.12.2014, 09:16
Пытаюсь открыть файл, который записан на SD карте, с помощью библиотеки CAA.File.library. В результате выдает ошибку 5802. В справке кодесиса нет расшифровки для данного кода ошибки.

Не пойму в чем дело, раньше все было нормально, правда с другими SD. Вероятно, все дело в карте памяти, хотя формат карты SDHC, скорость 10.

Но, может быть кто-то знает в чем проблема?

PhilipLykov
04.12.2015, 09:06
Получилось ли у вас решить проблему? У меня такая же ошибка.

Трофимов Артем
04.12.2015, 09:40
судя по вложенным в CAA.File библиотекам - данная ошибка - ошибка хэндла файла
не обнуляется ли он где либо у Вас? есть ли доступ до карты? может она не примонтирована?
21180

PhilipLykov
04.12.2015, 10:27
Артем, спасибо за помощь.
Дело в том что эта ошибка появляется при первом же открытии файла. И соответсвенно хэндл не возвращается.

Трофимов Артем
04.12.2015, 15:07
путь до файла какой у Вас?
тип файла какой?
каковы атрибуты файла?
через winscp файл виден в ОС ПЛК?

PhilipLykov
04.12.2015, 17:02
Файл на диске создается корректно ('/root/TestFile.txt'), я его там вижу.

21195

Сейчас он уже не выдает ошибку, но и xDone также не устанавливает.

PhilipLykov
04.12.2015, 17:31
А я вот еще чего не могу понять: почему после "filop.xExclusive:=FALSE;" он все равно остается равен TRUE?

GoodLuck
04.12.2015, 20:38
Получилось ли у вас решить проблему? У меня такая же ошибка.

Данную проблему решить не получилось, удалось ее обойти. Не знаю, как у вас, но у меня эта ошибка появляется время от времени. Поэтому если, допустим, в течение 3 сек, файл открыть не удалось, то все обнуляю и делаю повторное открытие файла. Со второго раза никакой ошибки не выдает.

capzap
05.12.2015, 07:59
Вы бы приобрели в магазине флешку и эксперементировали на ней, ресурсы внутренней флеш ограничены, так скоро Вы останетесь без контроллера

PhilipLykov
05.12.2015, 12:44
потому что следующей строкой Вы присваиваете этой переменной true и выполняете блок, так что эта Ваша строчка бесполезна в этом коде

и да, Вы бы приобрели в магазине флешку и эксперементировали на ней, ресурсы внутренней флеш ограничены, так скоро Вы останетесь без контроллера

Вы правы по поводу ресурса флэш памяти, так и поступлю.
А вот по поводу кода, Вы вероятно перепутали, там следующей строкой xExecute, а не xExclusive. Проблема с кодом решилась после того как я сделал Reset Origin и залил заново код. Я этот код вношу в собственную библиотеку и вероятно это как-то не корректно заливается при он-лайн изменении кода.

Но главное что проблема не исчезла, у меня по прежнему файл создается, ошибки уже нет никакой, но хэндл не возвращается и xDone не встает.

PhilipLykov
07.12.2015, 02:01
Я нашел проблему. Я пишу библиотеку для ведения простого лога ошибок и аварий. Я объявил функции File.Open и т.п. не в функциональном блоке, а в его методе. Поэтому все содержимое переменных функций File.* очищалось с каждым циклом.

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

capzap
07.12.2015, 06:43
Кстати, а может быть есть готовая библиотека для простого логирования в текстовый файл?

ищите примеры с бибкой syslibexec