- •Important Information
- •Warranty
- •Copyright
- •Trademarks
- •Organization of This Manual
- •Conventions Used in This Manual
- •Related Documentation
- •Customer Communication
- •Introduction
- •Classes of External Code
- •Supported Languages
- •Macintosh
- •Microsoft Windows 3.1
- •Microsoft Windows 95 and Windows NT
- •Solaris
- •Steps for Creating a CIN
- •1. Place the CIN on a Block Diagram
- •2. Add Input and Output Terminals to the CIN
- •Input-Output Terminals
- •Output-Only Terminals
- •3. Wire the Inputs and Outputs to the CIN
- •4. Create .c File
- •Special Macintosh Considerations
- •5. Compile the CIN Source Code
- •Macintosh
- •THINK C for 68K (Versions 5-7)
- •Symantec C++ 8.0 for Power Macintosh
- •Metrowerks CodeWarrior for 68K
- •Metrowerks CodeWarrior for Power Macintosh
- •Microsoft Windows 3.x
- •Watcom C Compiler
- •Microsoft Windows 95 and Windows NT
- •Microsoft SDK C/C++ Compiler
- •Visual C++ for Windows 95 or Windows NT
- •Solaris 1.x
- •Solaris 2.x
- •6. Load the CIN Object Code
- •LabVIEW Manager Routines
- •Online Reference
- •Pointers as Parameters
- •Debugging External Code
- •DbgPrintf
- •Debugging CINs Under Windows 95 and Windows NT
- •Debugging CINs Under Sun or Solaris
- •Debugging CINs Under HP-UX
- •Introduction
- •CIN .c File
- •How LabVIEW Passes Fixed Sized Data to CINs
- •Scalar Numerics
- •Scalar Booleans
- •Refnums
- •Clusters of Scalars
- •Return Value for CIN Routines
- •Examples with Scalars
- •1. Place the CIN on the Block Diagram
- •2. Add Two Input and Output Terminals to the CIN
- •3. Wire the Inputs and Outputs to the CIN
- •4. Create the CIN Source Code
- •5. Compile the CIN Source Code
- •Macintosh
- •THINK C for 68K and Symantec C++
- •Microsoft Windows 3.x
- •Watcom C Compiler
- •Microsoft Windows 95 and Windows NT
- •Microsoft SDK Compiler
- •Microsoft Visual C++ Compiler
- •Solaris 1.x, Solaris 2.x, and HP-UX
- •6. Load the CIN Object Code
- •Comparing Two Numbers, Producing a Boolean Scalar
- •How LabVIEW Passes Variably Sized Data to CINs
- •Alignment Considerations
- •Arrays and Strings
- •Paths (Path)
- •Clusters Containing Variably Sized Data
- •Resizing Arrays and Strings
- •SetCINArraySize
- •NumericArrayResize
- •Examples with Variably Sized Data
- •Concatenating Two Strings
- •Working with Clusters
- •CIN Routines
- •Data Spaces and Code Resources
- •CIN Routines: The Basic Case
- •Loading a VI
- •Unloading a VI
- •Loading a New Resource into the CIN
- •Compiling a VI
- •Running a VI
- •Saving a VI
- •Aborting a VI
- •Multiple References to the Same CIN
- •Reentrancy
- •Code Globals and CIN Data Space Globals
- •Examples
- •Using Code Globals
- •Using CIN Data Space Globals
- •Calling a Windows 3.1 Dynamic Link Library
- •Calling a 16-Bit DLL
- •1. Load the DLL
- •2. Get the address of the desired function
- •3. Describe the function
- •4. Call the function
- •Example: A CIN that Displays a Dialog Box
- •The Block Diagram
- •The CIN Code
- •Compiling the CIN
- •Optimization
- •Introduction
- •Creating Shared External Subroutines
- •External Subroutine
- •Macintosh
- •THINK C Compiler and CodeWarrior 68K Compiler
- •MPW Compiler
- •Solaris 1.x, Solaris 2.x, and HP-UX
- •Calling Code
- •Macintosh
- •THINK C Compiler
- •CodeWarrior 68K Compiler
- •MPW Compiler
- •Solaris 1.x, Solaris 2.x, and HP-UX
- •Simple Example
- •External Subroutine Example
- •Compiling the External Subroutine
- •Macintosh
- •THINK C Compiler and CodeWarrior 68K Compiler
- •MPW Compiler
- •Microsoft Windows 3.1
- •Watcom C Compiler
- •Microsoft Windows 95 and Windows NT
- •Solaris 1.x, Solaris 2.x, and HP-UX
- •Calling Code
- •Compiling the Calling Code
- •Macintosh
- •THINK C Compiler
- •CodeWarrior 68K Compiler
- •MPW Compiler
- •Microsoft Windows 3.1
- •Watcom C Compiler
- •Microsoft Windows 95 and Windows NT
- •Solaris 1.x, Solaris 2.x, and HP-UX
- •Introduction
- •Basic Data Types
- •Scalar Data Types
- •Booleans
- •Numerics
- •Complex Numbers
- •char Data Type
- •Dynamic Data Types
- •Arrays
- •Strings
- •C-Style Strings (CStr)
- •Pascal-Style Strings (PStr)
- •LabVIEW Strings (LStr)
- •Concatenated Pascal String (CPStr)
- •Paths (Path)
- •Memory-Related Types
- •Constants
- •Memory Manager
- •Memory Allocation
- •Static Memory Allocation
- •Dynamic Memory Allocation: Pointers and Handles
- •Memory Zones
- •Using Pointers and Handles
- •Simple Example
- •Reference to the Memory Manager
- •Memory Manager Data Structures
- •File Manager
- •Introduction
- •Identifying Files and Directories
- •Path Specifications
- •Conventional Path Specifications
- •Empty Path Specifications
- •LabVIEW Path Specification
- •File Descriptors
- •File Refnums
- •Support Manager
- •Allocating and Releasing Handles
- •Allocating and Releasing Pointers
- •Manipulating Properties of Handles
- •AZHLock
- •AZHPurge
- •AZHNoPurge
- •AZHUnlock
- •Memory Utilities
- •ClearMem
- •MoveBlock
- •SwapBlock
- •Handle and Pointer Verification
- •Memory Zone Utilities
- •File Manager Data Structures
- •File/Directory Information Record
- •File Type Record
- •Path Data Type
- •Permissions
- •Volume Information Record
- •File Manager Functions
- •Performing Basic File Operations
- •FCreate
- •FCreateAlways
- •FMClose
- •FMOpen
- •FMRead
- •FMWrite
- •Positioning the Current Position Mark
- •FMSeek
- •FMTell
- •Positioning the End-Of-File Mark
- •FGetEOF
- •FSetEOF
- •Flushing File Data to Disk
- •FFlush
- •FExists
- •FGetAccessRights
- •FGetInfo
- •FGetVolInfo
- •FSetAccessRights
- •FSetInfo
- •Getting Default Access Rights Information
- •FGetDefGroup
- •FListDir
- •FNewDir
- •Copying Files
- •FCopy
- •Moving and Deleting Files and Directories
- •FMove
- •FRemove
- •Locking a File Range
- •FLockOrUnlockRange
- •Matching Filenames with Patterns
- •FStrFitsPat
- •Creating Paths
- •FAddPath
- •FAppendName
- •FAppPath
- •FEmptyPath
- •FMakePath
- •FNotAPath
- •FRelPath
- •Disposing Paths
- •FDisposePath
- •Duplicating Paths
- •FPathCpy
- •FPathToPath
- •Extracting Information from a Path
- •FDepth
- •FDirName
- •FName
- •FNamePtr
- •FVolName
- •FArrToPath
- •FFlattenPath
- •FPathToArr
- •FPathToAZString
- •FPathToDSString
- •FStringToPath
- •FTextToPath
- •FUnFlattenPath
- •Comparing Paths
- •FIsAPath
- •FIsAPathOrNotAPath
- •FIsEmptyPath
- •FPathCmp
- •Determining a Path Type
- •FGetPathType
- •FIsAPathOfType
- •FSetPathType
- •Manipulating File Refnums
- •FDisposeRefNum
- •FIsARefNum
- •FNewRefNum
- •FRefNumToFD
- •FRefNumToPath
- •Byte Manipulation Operations
- •Mathematical Operations
- •For THINK C Users
- •RandomGen
- •String Manipulation
- •BlockCmp
- •CPStrCmp
- •CPStrIndex
- •CPStrInsert
- •CPStrRemove
- •CPStrReplace
- •CPStrSize
- •CToPStr
- •HexChar
- •IsAlpha
- •IsDigit
- •IsLower
- •IsUpper
- •LStrCmp
- •LToPStr
- •PPStrCaseCmp
- •PPStrCmp
- •PStrCaseCmp
- •PStrCat
- •PStrCmp
- •PStrCpy
- •PStrNCpy
- •PToCStr
- •PToLStr
- •StrCat
- •StrCmp
- •StrCpy
- •StrLen
- •StrNCaseCmp
- •StrNCmp
- •StrNCpy
- •ToLower
- •ToUpper
- •Utility Functions
- •BinSearch
- •QSort
- •Time Functions
- •ASCIITime
- •DateCString
- •DateToSecs
- •MilliSecs
- •SecsToDate
- •TimeCString
- •TimeInSecs
- •Microsoft Windows 3.1, Windows 95, and Windows NT
- •Macintosh
- •How do I debug my CIN?
- •Can LabVIEW be used to call a DLL in Windows?
- •Glossary
- •Index
Chapter 7 File Manager Functions
typedef struct { |
|
|
int32 |
size; |
/* size in bytes of a kuhvkjhgvku |
|
|
volume */ |
int32 |
used; |
/* number of bytes used on volume |
|
|
*/ |
int32 |
free; |
/* number of bytes available for |
|
|
use on volume */ |
} |
VInfoRec; |
|
File Manager Functions
Performing Basic File Operations
FCreate
syntax |
MgErr |
FCreate(fdp, path, permissions, openMode, |
|
|
denyMode, group); |
FCreate creates a file with the name and location specified by path and with the specified permissions, and opens it for writing and reading, as specified by openMode. If the file already exists, an error is returned.
You can use denyMode to control concurrent access to the file from within LabVIEW. The group parameter allows you to assign the file to a UNIX group; under Windows or Macintosh, group is ignored.
If the function creates the file, the resulting file descriptor is stored in the address referred to by fdp. If an error occurs, the function stores 0 in the address referred to by fdp and returns an error.
Note: |
Before attempting to call this function, make sure that you understand |
|
|
how to use the fdp parameter. See the Pointers as Parameters section of |
|
|
Chapter 1, CIN Overview, for more information about this parameter. |
|
Parameter |
Type |
Description |
fdp |
File * |
Address at which FCreate stores the file |
|
|
descriptor for the new file. If FCreate fails, it |
|
|
stores 0 in the address fdp. |
|
|
See the Pointers as Parameters section of |
|
|
Chapter 1, CIN Overview, for more information |
|
|
about using this parameter. |
path |
Path |
Path of the file that you want to create. |
LabVIEW Code Interface Reference Manual |
7-4 |
National Instruments Corporation |
|
|
|
Chapter 7 File Manager Functions |
|
|
permissions |
int32 |
Permissions to assign to the new file. See the File |
|
|
|
|
Manager Data Structures section for a description |
|
|
|
|
of permissions. |
|
|
openMode |
int32 |
Access mode to use in opening the file. Can have the |
|
|
|
|
following values, which are defined in the file |
|
|
|
|
extcode.h. |
|
|
|
|
• openReadOnly: Open for reading. |
|
|
|
|
• openWriteOnly: Open for writing |
|
|
|
|
• openReadWrite: Open for both reading |
|
|
|
|
and writing |
|
|
denyMode |
int32 |
Mode that determines what level of concurrent |
|
|
|
|
access to the file is allowed. Can have the following |
|
|
|
|
values, which are defined in the file extcode.h. |
|
|
|
|
• denyReadWrite: Prevents others from |
|
|
|
|
reading from and writing to the file while it is |
|
|
|
|
open. |
|
|
|
|
• denyWriteOnly: Prevents others from |
|
|
|
|
writing to the file only while it is open |
|
|
|
|
• denyNeither: allows others to read from |
|
|
|
|
and write to the file while it is open. |
|
|
group |
PStr |
UNIX group you want to assign to the new file. |
|
returns |
MgErr, which can contain the errors in the following list. |
|||
|
Error |
Description |
|
|
|
mgArgErr |
A bad argument was passed to the function. Verify path. |
||
|
fIsOpen |
File is already open for writing. This error is returned only on the |
||
|
|
Macintosh and the Sun. The PC returns fIOErr when the file is |
||
|
|
already open for writing. |
||
|
fNoPerm |
Access denied (something is locked/protected). |
||
|
fDupPath |
A file of that name already exists. |
||
|
fTMFOpen |
Too many files open. |
||
|
fIOErr |
Unspecified I/O error occurred. |
||
|
|
|
|
|
FCreateAlways
syntax |
MgErr |
FCreateAlways(fdp, path, permissions, |
|
|
openMode, denyMode, group); |
National Instruments Corporation |
7-5 |
LabVIEW Code Interface Reference Manual |
Chapter 7 File Manager Functions
FCreateAlways creates a file with the name and location specified by path and with the specified permissions, and opens the file for writing and reading, as specified by openMode. If the file already exists, this function opens and truncates the file.
You can use denyMode to control concurrent access to the file from within LabVIEW. The group parameter allows you to assign the file to a UNIX group; under Windows or Macintosh, group is ignored.
If the function creates the file, the resulting file descriptor is stored in the address referred to by fdp. If an error occurs, the function stores 0 in the address referred to by fdp and returns an error.
Note: Before attempting to call this function, make sure that you understand how to use the fdp parameter. See the Pointers as Parameters section of Chapter 1, CIN Overview, for more information about this parameter.
Parameter |
Type |
Description |
fdp |
File * |
Address at which FCreateAlways stores the file |
|
|
descriptor for the new file. If FCreateAlways |
|
|
fails, it stores 0 in the address fdp. |
|
|
See the Pointers as Parameters section of |
|
|
Chapter 1, CIN Overview, for more information |
|
|
about using this parameter. |
path |
Path |
Path of the file that you want to create. |
permissions |
int32 |
Permissions to assign to the new file. See the File |
|
|
Manager Data Structures section of this chapter for |
|
|
a description of permissions. |
openMode |
int32 |
See FMOpen for a description of openMode. |
denyMode |
int32 |
See FMOpen for a description of denyMode. |
group |
PStr |
UNIX group you want to assign to the new file. |
returns |
MgErr, which can contain the errors in the following list. |
|
Error |
Description |
|
mgArgErr |
A bad argument was passed to the function. Verify path. |
|
fIsOpen |
File is already open for writing. This error is returned only on the |
|
|
Macintosh and the Sun. The PC returns fIOErr when the file is |
|
|
already open for writing. |
|
fNoPerm |
Access denied (something is locked/protected). |
|
fDupPath |
A file of that name exists. |
|
fTMFOpen |
Too many files open. |
|
fIOErr |
Unspecified I/O error occurred. |
LabVIEW Code Interface Reference Manual |
7-6 |
National Instruments Corporation |
Chapter 7 File Manager Functions
FMClose
syntax |
MgErr |
FMClose(fd); |
FMClose closes the file associated with the file descriptor fd.
Parameter |
Type |
Description |
fd |
File |
File descriptor associated with the file you want to |
|
|
close. |
returns |
MgErr, which can contain the errors in the following list. |
|
|
Error |
Description |
|
mgArgErr |
Not a valid file descriptor. |
|
fIOErr |
Unspecified I/O error occurred. |
|
|
|
FMOpen
syntax |
MgErr |
FMOpen(fdp, path, openMode, denyMode); |
Note: |
Before attempting to call this function, make sure that you understand |
|
|
how to use the fdp parameter. See the Pointers as Parameters section of |
|
|
Chapter 1, CIN Overview, for more information about this parameter. |
FMOpen opens a file with the name and location specified by path for writing and reading, as specified by openMode.
With the denyMode parameter, you control concurrent access to the file from within LabVIEW.
If this function opens the file, the resulting file descriptor is stored in the address referred to by fdp. If an error occurs, 0 is stored in the address referred to by fdp and the error is returned.
Parameter |
Type |
Description |
fdp |
File * |
Address at which FMOpen stores the file descriptor |
|
|
for the opened file. If the function fails, FMOpen |
|
|
stores 0 in the address fdp. |
National Instruments Corporation |
7-7 |
LabVIEW Code Interface Reference Manual |
Chapter 7 File Manager Functions
|
|
See the Pointers as Parameters section of |
|
|
Chapter 1, CIN Overview, for more information |
|
|
about using this parameter. |
path |
Path |
Path of the file that you want to open. |
openMode |
int32 |
Access mode to use in opening the file. Can have the |
|
|
following values, which are defined in the file |
|
|
extcode.h. |
|
|
• openReadOnly: Open for reading. |
|
|
• openWriteOnly: Open for writing; file is |
|
|
not truncated (data is not removed). On the |
|
|
Macintosh, this mode provides true write- |
|
|
only access to files. On a PC or a UNIX |
|
|
system, LabVIEW I/O functions are built in |
|
|
the C standard I/O library, with which you |
|
|
have write-only access to a file only if you are |
|
|
truncating the file or making the access |
|
|
append-only. Therefore, this mode actually |
|
|
allows both read and write access to files on |
|
|
a PC or UNIX system. |
|
|
• openReadWrite: Open for both reading |
|
|
and writing. |
|
|
• openWriteOnlyTruncate: Open for |
|
|
writing; truncates the file. |
denyMode |
int32 |
Mode that determines what level of concurrent |
|
|
access to the file is allowed. Can have the following |
|
|
values, which are defined in the file extcode.h. |
|
|
• denyReadWrite: Prevents others from |
|
|
reading from and writing to the file while it is |
|
|
open. |
|
|
• denyWriteOnly: Prevents others from |
|
|
writing to the file only while it is open |
|
|
• denyNeither: allows others to read from |
|
|
and write to the file while it is open. |
returns |
MgErr, which can contain the errors in the following list. |
|
Error |
Description |
|
mgArgErr |
A bad argument was passed to the function. Verify path. |
LabVIEW Code Interface Reference Manual |
7-8 |
National Instruments Corporation |