Окружение AVR-DOS — различия между версиями

Материал из roboforum.ru Wiki
Перейти к: навигация, поиск
м (Использование команд ввода-вывода в различных режимах)
м (Error codes)
Строка 280: Строка 280:
 
|}
 
|}
  
== Error codes ==
+
== Коды ошибок ==
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
Строка 289: Строка 289:
 
|0
 
|0
 
|cpNoError
 
|cpNoError
|No Error
+
|Нет ошибки
 
|-
 
|-
 
|1
 
|1
 
|cpEndOfFile
 
|cpEndOfFile
|Attempt behind End of File
+
|Попытка чтения файла за пределами его конца
 
|-
 
|-
 
|17
 
|17
 
|cpNoMBR
 
|cpNoMBR
|Sector 0 on Card is not a Master Boot Record
+
|Сектор 0 на диске не является Master Boot Record
 
|-
 
|-
 
|18
 
|18
 
|cpNoPBR
 
|cpNoPBR
|No Partition Sector
+
|Нет Partition Sector
 
|-
 
|-
 
|19
 
|19
 
|cpFileSystemNotSupported
 
|cpFileSystemNotSupported
|Only FAT16 File system is supported
+
|Неподдерживаемая файловая система, поддерживается только FAT16'''«(в описании другое)»'''
 
|-
 
|-
 
|20
 
|20
 
|cpSectorSizeNotSupported
 
|cpSectorSizeNotSupported
|Only sector size of 512 Bytes is supported
+
|Неподдерживаемый размер сектора, поддерживаются сектора 512 Байт.
 
|-
 
|-
 
|21
 
|21
 
|cpSectorsPerClusterNotSupported
 
|cpSectorsPerClusterNotSupported
|Only 1, 2, 4, 8, 16, 32, 64 Sectors per Cluster is supported. These are values of normal formatted partitions. Exotic sizes, |which are not power of 2 are not supported
+
|Подддерживаются только 1, 2, 4, 8, 16, 32, 64 секторов в кластере. Это нормальные значения для отформатированного раздела. Экзотические размеры кластера, не делящиеся нацело на 2, не поддерживаются
 
|-
 
|-
 
|22
 
|22
 
|cpCountOfClustersNotSupported
 
|cpCountOfClustersNotSupported
|Count of FAT (valid is 1 or 2) not supported (will be renamed with one of next release)
+
|Данное количество разделов не поддерживается (поддерживается только 1 или 2 раздела)
 +
'''«Count of FAT (valid is 1 or 2) not supported (will be renamed with one of next release)»'''
 
|-
 
|-
 
|33
 
|33
 
|cpNoNextCluster
 
|cpNoNextCluster
|Error in file cluster chain
+
|Следующий кластер файла недоступен '''«Error in file cluster chain»'''
 
|-
 
|-
 
|34
 
|34
 
|cpNoFreeCluster
 
|cpNoFreeCluster
|No free cluster to allocate (Disk full)
+
|Нет свободный клатеров'''«(cluster)»''', диск заполнен
 
|-
 
|-
 
|35
 
|35
 
|cpClusterError
 
|cpClusterError
|Error in file cluster chain
+
|Ошибка чтения кластера файла '''«Error in file cluster chain»'''
 
|-
 
|-
 
|49
 
|49
 
|cpNoFreeDirEntry
 
|cpNoFreeDirEntry
|Directory full
+
|Директория заполнена '''«Directory full»'''
 
|-
 
|-
 
|50
 
|50
Строка 341: Строка 342:
 
|51
 
|51
 
|cpFileDeleteNotAllowed
 
|cpFileDeleteNotAllowed
|Deleting of file not allowed (System, Hidden, Read-Only)
+
|Удаление файла запрещено его атрибутами(файл скрытый, системный, или только для чтения)
 
|-
 
|-
 
|52
 
|52
 
|cpSubDirectoryNotEmpty
 
|cpSubDirectoryNotEmpty
|Removing of sub-directory not possible, because it is not empty
+
|Невозможно удалить каталог, он не пуст.
 
|-
 
|-
 
|53
 
|53
Строка 353: Строка 354:
 
|54
 
|54
 
|cpNoASubDirectory
 
|cpNoASubDirectory
|Passed name is a file name and not a directory name
+
|Имя не соотвествует каталогу, это файл.
 
|-
 
|-
 
|65
 
|65
 
|cpNoFreeFileNumber
 
|cpNoFreeFileNumber
|No free file number available, only theoretical error, if 255 file handles in use
+
|Нет свободных идентификаторов файлового потока (возможно открыть не более 255 файлов одновременно)
 
|-
 
|-
 
|66
 
|66
 
|cpFileNotFound
 
|cpFileNotFound
|File not found
+
|Файл не найден
 
|-
 
|-
 
|67
 
|67
 
|cpFileNumberNotFound
 
|cpFileNumberNotFound
|No file handle with such file number
+
|Такой идентификатор файлового потока не существует
 
|-
 
|-
 
|68
 
|68
 
|cpFileOpenNoHandle
 
|cpFileOpenNoHandle
|All file handles occupied
+
|Все идентификаторы файлового потока неверны '''«All file handles occupied»'''
 
|-
 
|-
 
|69
 
|69
 
|cpFileOpenHandleInUse
 
|cpFileOpenHandleInUse
|File handle number in use, can't create a new file handle with same file number
+
|Такой идентификатор файлового потока уже используется, невозможно создать новый поток с таким идентификатором
 
|-
 
|-
 
|70
 
|70
|cpFileOpenShareConflict
+
|cpFileOpenShareConflict
|Tried to open a file in read and write modus in two file handles
+
|Невозможно получить доступ к файлу(напр, одновременне открытие для записи и чтения)
 
|-
 
|-
 
|71
 
|71
 
|cpFileInUse
 
|cpFileInUse
|Can't delete file, which is in use
+
|Невозможно удалить файл, использующийся в данный момент
 
|-
 
|-
 
|72
 
|72
 
|cpFileReadOnly
 
|cpFileReadOnly
|Can't open a read only file for writing
+
|Невозможно произвести запись, файл только для чтения.
 
|-
 
|-
 
|73
 
|73
 
|cpFileNoWildCardAllowed
 
|cpFileNoWildCardAllowed
|No wildcard allowed in this function
+
|Специальные символы(WildCards) не разрешены при использовании данной функции
 
|-
 
|-
 
|74
 
|74
 
|CpFileNumberInvalid
 
|CpFileNumberInvalid
|File number 0 is not allowed
+
|Файловый идентификатор не поддерживается (напр, '''0''')
 
|-
 
|-
 
|97
 
|97
 
|cpFilePositionError
 
|cpFilePositionError
|
+
|Позиция файлового курсора неверна '''(«сам придумал»)'''
 
|-
 
|-
 
|98
 
|98
 
|cpFileAccessError
 
|cpFileAccessError
|function not allowed in this file open mode
+
|Функция не может выполнятся в текущем режиме открытия файла'''«(подробнее)»'''
 
|-
 
|-
 
|99
 
|99
 
|cpInvalidFilePosition
 
|cpInvalidFilePosition
|new file position pointe is invalid (minus or 0)
+
|Новая позиция файлового курсора неверна (отрицательное значение или '''0''')
 
|-
 
|-
 
|100
 
|100
 
|cpFileSizeToGreat
 
|cpFileSizeToGreat
|File size to great for function BLoad
+
|Размер файла слишком большой для использования функции BLoad
 
|}
 
|}
  

Версия 05:40, 7 января 2009

Окружение AVR-DOS — конфигурация системы

AVR-DOS применительно к на данному микроконтроллеру.

Конфигурация файловой системы

Задается файлом config_avr-dos.bas.

Параметр Значение
cFileHandles Count of Filehandles: for each file opened at same

time, a filehandle buffer of 538 Bytes is needed

cSepFATHandle For higher speed in handling file operations the FAT

info can be stored in an own buffer, which needs

additional 517 Bytes.

Assign Constant cSepFATHandle with 1, if wanted,

otherwise with 0.

cFATDirSaveAtEnd Handling of saving changed FAT and Directory

Information of a open file for output.

Parameter 0 saves FAT and Directory information with

every saving of a data sector

Parameter 1 saves FAT and Directory Information only at

the CLOSE and FLUSH statement. This option increases the

writing speed of data and decreases the write frequency

of FAT and Directory Sectors

cTextQuotationMarks Surrounding String with Quotation Marks at the Command

WRITE

0 = No Surrounding of strings with quotation.marks

1 = Surrounding of strings with quotation.marks (f.E.

"Text")

cFATSecondUpdate Suppress updating of second FAT. Windows accepts a not

updated second FAT

PC-Command: chkdsk /f corrects the second FAT, it

overwrites the

second FAT with the first FAT

set this parameter to 0 for high speed continuing saving

data

0 = Second FAT is not updated

1 = Second FAT is updated if exist [default]

cVariableSeparator Character to separate ASCII Values in WRITE - statement

(and INPUT)

Normally a comma (,) is used, but it can be changed to

other values, f.E. to TAB (ASCII-Code 9) if EXCEL Files

with Tab separated values should be written or read.

This parameter works for WRITE and INPUT

Parameter value is the ASSCII-Code of the separator

44 = comma [default] 9 = TAB

Использование памяти файловой системой

General File System information (35 Bytes)

Параметр Тип Использование
gbDOSError Byte holds DOS Error of last file handling routine
gbFileSystem Byte File System Code from Master Boot Record
gbFileSystemStatus Byte Holds Information about FAT Type (16 or 32)
glFATFirstSector Long Number of first Sector of FAT Area on the Card
gbNumberOfFATs Byte Count of FAT copies
glSectorsPerFat Long Count of Sectors per FAT
glRootFirstSector Long Number of first Sector of Root Area on the Card
gwRootEntries Word Count of Root Entries
glDataFirstSector Long Number of first Sector of Data Area on the Card
gbSectorsPerCluster Byte Count of Sectors per Cluster
glMaxClusterNumber Long Highest usable Cluster number
glLastSearchedCluster Long Last cluster number found as free
glFS_Temp1 Long temorary Long variable for file system

Directory (559 Bytes)

Параметр Тип Использование
glDirFirstSectorNumber Long Number of first sector of current actual directory
gwFreeDirEntry Word Number of first free Dir-Entry
glFreeDirSectorNumber Long Number of Sector number with first free Directory Entry
gsDir0TempFileName String*11 Temporary Buffer for file name
gwDir0Entry Word Temporary Buffer for Directory Entry Number
glDir0SectorNumber Long Temporary Buffer for Directory Sector Number
gsTempFileName String*11 Hold file name for directory search
gwDirRootEntry Word Number of last handled directory entry
glDirSectorNumber Long Number of current loaded Sector
gbDirBufferStatus Byte Sector Buffer Status
gbDirBuffer Byte (512) Buffer for directory Sector

FAT (517 Bytes)

FAT Buffer is only allocated if the constant: cSepFATHandle = 1

Параметр Тип Использование
glFATSectorNumber Long Number of current loaded FAT sector
gbFATBufferStatus Byte Buffer status
gbFATBuffer Byte(512) buffer for FAT sector

File handling

Each file handle has a block of 538 Bytes in the variable abFileHandle which is a byte-array of size (538 * cFileHandles)

Параметр Тип Использование
FileNumber Byte File number for identification of the file in I/O

operations to the opened file

FileMode Byte File open mode
FileDirEntry Word Number of directory entry
FileDirSectorNumber Long Number of Sector which holds the Directory entry of the file
FileFirstCluster Word First cluster
FileSize Long file size in bytes
FilePosition Long file pointer (next read/write) 0-based
FileSectorNumber Long number of current loaded sector
FileBufferStatus Byte buffer Status
FileBuffer Byte(512) buffer for the file sector
SectorTerminator Byte additional 00 Byte (string terminator) for direct reading ASCII files from the buffer

Коды ошибок

Код Имя в компиляторе Объяснение
0 cpNoError Нет ошибки
1 cpEndOfFile Попытка чтения файла за пределами его конца
17 cpNoMBR Сектор 0 на диске не является Master Boot Record
18 cpNoPBR Нет Partition Sector
19 cpFileSystemNotSupported Неподдерживаемая файловая система, поддерживается только FAT16«(в описании другое)»
20 cpSectorSizeNotSupported Неподдерживаемый размер сектора, поддерживаются сектора 512 Байт.
21 cpSectorsPerClusterNotSupported Подддерживаются только 1, 2, 4, 8, 16, 32, 64 секторов в кластере. Это нормальные значения для отформатированного раздела. Экзотические размеры кластера, не делящиеся нацело на 2, не поддерживаются
22 cpCountOfClustersNotSupported Данное количество разделов не поддерживается (поддерживается только 1 или 2 раздела)

«Count of FAT (valid is 1 or 2) not supported (will be renamed with one of next release)»

33 cpNoNextCluster Следующий кластер файла недоступен «Error in file cluster chain»
34 cpNoFreeCluster Нет свободный клатеров«(cluster)», диск заполнен
35 cpClusterError Ошибка чтения кластера файла «Error in file cluster chain»
49 cpNoFreeDirEntry Директория заполнена «Directory full»
50 cpFileExist
51 cpFileDeleteNotAllowed Удаление файла запрещено его атрибутами(файл скрытый, системный, или только для чтения)
52 cpSubDirectoryNotEmpty Невозможно удалить каталог, он не пуст.
53 cpSubDirectoryError General error at handling with sub-directory
54 cpNoASubDirectory Имя не соотвествует каталогу, это файл.
65 cpNoFreeFileNumber Нет свободных идентификаторов файлового потока (возможно открыть не более 255 файлов одновременно)
66 cpFileNotFound Файл не найден
67 cpFileNumberNotFound Такой идентификатор файлового потока не существует
68 cpFileOpenNoHandle Все идентификаторы файлового потока неверны «All file handles occupied»
69 cpFileOpenHandleInUse Такой идентификатор файлового потока уже используется, невозможно создать новый поток с таким идентификатором
70 cpFileOpenShareConflict Невозможно получить доступ к файлу(напр, одновременне открытие для записи и чтения)
71 cpFileInUse Невозможно удалить файл, использующийся в данный момент
72 cpFileReadOnly Невозможно произвести запись, файл только для чтения.
73 cpFileNoWildCardAllowed Специальные символы(WildCards) не разрешены при использовании данной функции
74 CpFileNumberInvalid Файловый идентификатор не поддерживается (напр, 0)
97 cpFilePositionError Позиция файлового курсора неверна («сам придумал»)
98 cpFileAccessError Функция не может выполнятся в текущем режиме открытия файла«(подробнее)»
99 cpInvalidFilePosition Новая позиция файлового курсора неверна (отрицательное значение или 0)
100 cpFileSizeToGreat Размер файла слишком большой для использования функции BLoad

Buffer Status: Bit definitions of Buffer Status Byte (Directory, FAT and File)

Bit DIR FAT File Compiler Alias Remark
0 (LSB) + dFATDirSaveAnyWay Status Bit which is set from CLOSE and FLUSh statement, to show AVR-DOS to save FAT and Directory Sectors
1 + dEOF End of File
2 + dEOFinSector End of File in this sector (= last sector loaded)
3 + + + dWritePending Something was written to sector, it must be saved to Card, before loading next sector
4 + dFATSector This is an FAT Sector, at writing to Card, Number of FAT copies must be checked and copy updated if necessary
5 + dFileEmpty File is empty, no sector (Cluster) is allocated in FAT to this file
6 + dFATDIRWritePending For this file FAT or directory was updated
7 + dFATDirSaveAtEnd Indicates, that FAT and Directory Information have only to be updated at FLUSH and CLOSE staements

Использование команд ввода-вывода в различных режимах

Команда Input Output Append Binary
Attr + + + +
Close + + + +
Put +
Get +
LOF + + + +
LOC + + + +
EOF + [1] [1] +
SEEK (Get Position) + +[1] +[1] +
SEEK (Set Position) +
Line Input + +
Print + + +
Input + +
Write + + +
  1. 1 2 3 4 Курсор всегда находится в позиции конца файла

Поддерживаемые выражения и функции: INITFILESYSTEM , OPEN , CLOSE, FLUSH , PRINT, LINE INPUT, LOC, LOF , EOF , FREEFILE , FILEATTR , SEEK , BSAVE , BLOAD , KILL , DISKFREE , DISKSIZE , GET , PUT ,FILEDATE , FILETIME , FILEDATETIME , DIR , FILELEN , WRITE , INPUT