Description
Read NC data registered on the memory in CNC.
This function reads the characters of NC data as long as it is specified by '*length'.
However, if the number of characters to read is less than the specified number by delaying CNC data process,
this function reads the characters as many as possible and then sets length' with the real number of
characters which are read in the buffer.
In case that this function cannot read at least one character, it returns EW_BUFFER, so again call this function with the same arguments.
Because importance is attached to the speed of data transfer to the CNC, in general, return of errors(EW_DATA, etc.) may be delayed. Namely, an error status may refrect the result caused by the previously executed cnc_upload callings. And the error status for some cnc_upload callings just before the finish of uploading is returned by cnc_upend4 function.
Format of input dataNC data which is read from CNC is the string composed of ASCII characters as following format.
% LF Block1 LF Block2 LF ... LF %
where LF = 0x0A ('\n')
or
% LF CR CR Block1 LF CR CR Block2 LF CR CR ... LF CR CR %
where CR = 0x0D ('\r') , LF = 0x0A ('\n')
The parameter (Series 15i:0000#3, Series 16i/18i/21i/0i/Power Mate i:0100#3)
determines which is used. And space code (' ') may be inserted before LF for TV check.
A null character('\x00') is not added at the end of each string stored in the buffer.
The last character of read NC data is '%'. If the application keeps reading by using this function
after reading the last '%', cnc_upload3 returns EW_RESET.
When the CNC parameter No.6019#0 is '1', the number of the macro variable and the variable data are output as a comment continuously after '%' of the end of data.
The last character of comment data is also '%'. If the application keeps reading by using this function after reading the last '%', cnc_upload4 returns EW_RESET.The protected NC program(O8000-/O9000- protection, encoding) is acquired as "% LF % LF", and EW_PROT error will return by cnc_upend4.
Universal Fanuc Driver
Fanuc Focas Library CD
Declaration
Arguments
Specify the library handle. See "Library handle" for details.
Specify the pointer of the variable to the character length of NC data.
Set read number of characters by one time to it and it must be a multiple of 256.
After reading, the number of characters actually read is set in this variable again.
This function returns EW_LENGTH if '*length' is less than 256.
Specify the pointer to the buffer to be read.
Return
EW_OK is returned on successful completion, otherwise any value except EW_OK is returned.
The major error codes are as follows.
Return code | Meaning/Error handling | ||||||
---|---|---|---|---|---|---|---|
(-2) |
The data to read is nothing. Call the cnc_upend4 function. |
||||||
(1) |
|||||||
(2) |
|||||||
(5) |
In order to get more information for this err_no return value, execute cnc_getdtailerr function. The following detail status will be set onto the member, err_no of ODBERR structure.
|
||||||
(7) |
Tape memory is read-protected by the CNC parameter setting(O8000-/O9000- protection, encoding). See Description about the timing of error. |
||||||
(10) |
Retry because the buffer is empty. See Description about the timing of error. |
As for the other return codes or the details, see "Return status of Data window function"
CNC option
And this function is related to the following CNC option.
Custom macro
Work zero offset
For HSSB connection,
CNC parameter
This function is related to the following CNC parameter.
See the manual of CNC parameter for details.
0100#3
3202#0,#4,#6
3204#3,#4
3210,3211
6019#0
CNC mode
This function can be used in any CNC mode.
Available CNC
0i-A | 0i-B/C(Note) | 0i-D | 0i-F | 15 | 15i | 16 | 18 | 21 | 16i-A | 18i-A | 21i-A | 16i-B | 18i-B | 21i-B | 30i-A | 30i-B | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
M (Machining) | |||||||||||||||||
T (Turning) | - | ||||||||||||||||
LC (Loader) | - | - | - | - | - | - | - | - |
0i-D | 0i-F | 16i | 18i | 30i-A | 30i-B | |
---|---|---|---|---|---|---|
P (Punch press) | - | |||||
L (Laser) | - | - | - | - | ||
W (Wire) | - | - |
Power Mate i-D | |
Power Mate i-H | |
Power Motion i-A | O |
"O" | : | Both Ethernet and HSSB | |
"E" | : | Ethernet | |
"H" | : | HSSB | |
"X" | : | Cannot be used | |
"-" | : | None |
Note) 0i-C does not support the HSSB function.
See Also
Example(C Language)
The following program reads the specified NC program registered in CNC,
and displays its contents on the screen.
#include "fwlib32.h"
#define BUFSIZE 1280
/* prgname is NC program name to read. */
short example( char *prgname )
{
char buf[BUFSIZE+1] ;
short ret ;
long len ;
ret = cnc_upstart4( h, 0, prgname ) ;
if ( ret ) return ( ret ) ;
do {
len = BUFSIZE ;
ret = cnc_upload4( h, &len, buf ) ;
if ( ret == EW_BUFFER ) {
continue ;
}
if ( ret == EW_OK ) {
buf[len] = '\0' ;
printf( "%s", buf ) ;
}
if ( buf[len-1] == '%' ) {
break ;
}
} while (( ret == EW_OK ) || ( ret == EW_BUFFER ));
ret = cnc_upend4( h ) ;
return ( ret ) ;
}
Example(C#)
The following program reads the specified NC program registered in CNC,
and displays its contents on the screen.
class example
{
public const short BUFSIZE = 1280;
/* prgname is NC program name to read. */
public short sample(string prgname)
{
char[] buf = new char[BUFSIZE + 1];
short ret;
int len;
ret = Focas1.cnc_upstart4(h, 0, prgname);
if (ret != Focas1.EW_OK) return (ret);
do
{
len = BUFSIZE;
ret = Focas1.cnc_upload4(h, ref len, buf);
if (ret == (short)Focas1.focas_ret.EW_BUFFER)
{
continue;
}
if (ret == (short)Focas1.focas_ret.EW_OK)
{
buf[len] = '\0';
Console.Write(buf, 0, len);
}
if (buf[len - 1] == '%')
{
break;
}
} while ((ret == Focas1.EW_OK) || (ret == (short)Focas1.focas_ret.EW_BUFFER));
ret = Focas1.cnc_upend4(h);
return (ret);
}
}