Fanuc C-Executer Operating Manual
B-62443EN-3/03E
- 410 -
void example( void )
{
struct odbapb alarm ;
struct alminfo *alarm_buf ;
char *temp_str, *ptr_axch, axch ;
int type, idx ;
get_axisname() ;
alarm_buf = (struct alminfo *)malloc( 2+38*MAX_ALM ) ;
temp_str = (char *)malloc( sizeof( alarm_buf->u.alm2.alm[0].alm_msg )
+ 1 ) ;
cnc_alarm( &alarm ) ;
if ( alarm.data ) {
for ( type = 0 ; type < 11 ; type++ ) {
cnc_rdalminfo( 1, type, 2+38*MAX_ALM, alarm_buf ) ;
idx = 0 ;
while ( alarm_buf->u.alm2.alm[idx].axis != 0xffff ) {
strncpy( temp_str,
alarm_buf->u.alm2.alm[idx].alm_msg,
alarm_buf->u.alm2.alm[idx].msg_len ) ;
temp_str[alarm_buf->u.alm2.alm[idx].msg_len] = '\000' ;
if ( alarm_buf->u.alm2.alm[idx].axis ) {
ptr_axch = strchr( temp_str, ':' ) ;
if ( ptr_axch != NULL ) {
if ( *(ptr_axch+2) == ' ' )
ptr_axch += 2 ;
else
ptr_axch += 3 ;
if ( *ptr_axch == '\000' )
*(ptr_axch+1) = '\000' ;
}
while ( alarm_buf->u.alm2.alm[idx].axis ) {
axch = axis_name[idx_to_num(
&alarm_buf->u.alm2.alm[idx].axis )] ;
if ( ptr_axch != NULL )
*ptr_axch = axch ;
printf( "%04d %s\n",
alarm_buf->u.alm2.alm[idx].alm_no, temp_str ) ;
}
}
else {
printf( "%04d %s\n",
alarm_buf->u.alm2.alm[idx].alm_no, temp_str ) ;
}
idx++ ;
}
}
}
else
printf( "NO ALARMS\n" ) ;
free( alarm_buf ) ;
free( temp_str ) ;
}