Home |  Products |  Download |  Contact |  Support |  Orders |  Partners |  Links |   
www.ea4tx.com
 
 
In This Section

Products Home
Antenna Rotator System
Developers Area
ARSWIN API
ARS for DOS API
Download Area


Developers Area - DOS API - "C" Example

#include "stdio.h"
#include "stdlib.h"
#include "dos.h"
#include "conio.h"
#include "ctype.h"
#include "memory.h"
#include "string.h"

#define STOP 0
#define ON 1
#define LEFT 2
#define RIGHT 4
#define UP 0x16
#define DOWN 0x32

#define INT 0x61

char buffer[9] ;
int x,ch ;
static void (interrupt far *IntRCI) (void) ; // Pointer to Int61

void main()
{

char far * bufptr ;
int car ;
//char car ;
union REGS inregs,outregs ;
struct SREGS segregs ;
unsigned int value ;

IntRCI = _dos_getvect(INT) ;
if (IntRCI == 0)
{

printf("\nERROR: RCIPLUS not loaded.") ;
printf("\n You must load the RCIPLUS driver before.") ;
exit(1) ;

}

inregs.h.al = 00 ;
inregs.h.ch = 00 ;
inregs.h.cl = 00 ;
inregs.h.dh = 00 ;
inregs.h.dl = 00 ;

printf("\n\n\n\n\n") ;
printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n") ;
printf("* D E M O P R O G R A M F O R T E S T T H E R C I *\n") ;
printf("* ( B Y E A 4 T X ) *\n") ;
printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *") ;


while(car != 0x1b)
{

printf("\n\n\t1.- Init(LPT)") ;
printf("\n\t2.- Brake 3.- Left 4.- Right 5.- Stop") ;
printf("\n\t6.- Up 7.- Down") ;
printf("\n\t8.- Read Azi. Posit.(0-360 Deg) 9.- Read Azi. Posit.(0-255 Dig)");
printf("\n\tA.- Read Elev. Posit.(0-360 Deg) B.- Read Elev. Posit.(0-255 Dig)");
printf("\n\tC.- Status") ;
printf("\n\tD.- Turn to a Possition Azimut") ;
printf("\n\tE.- Turn to a Possition Elevation") ;
printf("\n\t0.- Stop use the Interface") ;
printf("\n\tEsc.- Quit") ;
printf("\n\t--------------------------------------------------------------\n");
car=getch() ;

switch(car)
{
case '1': // Init LPT
  • inregs.h.ah = 00 ;
    inregs.h.dh = 0x00 ; // i.e. ARS.CNF
    inregs.h.dl = 0x00 ;
    // inregs.h.dh = 0x03 ; // i.e. Port_Base=0x378
    // inregs.h.dl = 0x78 ;
    int86x(INT,&inregs,&outregs,&segregs) ;
    if(outregs.h.ah==0 && outregs.h.al==0)
    • printf("Init Lpt Driver: Ok. ") ;

    else

    • printf("Init Lpt Driver: Ko. Verify the LPT port or there is a Hardware Problem!") ;

    break;

case '2': // Turn On Brake

  • inregs.h.ah = 01 ;
    inregs.h.dl = 0x00 ;
    inregs.h.dh = ON ;
    int86x(INT,&inregs,&outregs,&segregs) ;
    value= outregs.h.ah*255+outregs.h.al ;
    printf("Return value= %d",value) ;
    break;

case '3': // Turn On Left Rele

  • inregs.h.ah = 01 ;
    inregs.h.dl = 0x00 ;
    inregs.h.dh = LEFT ;
    int86x(INT,&inregs,&outregs,&segregs) ;
    value= outregs.h.ah*255+outregs.h.al ;
    printf("Return value= %d",value) ;
    break;

case '4': // Turn On Right Rele

  • inregs.h.ah = 01 ;
    inregs.h.dl = 0x00 ;
    inregs.h.dh = RIGHT ;
    int86x(INT,&inregs,&outregs,&segregs) ;
    value= outregs.h.ah*255+outregs.h.al ;
    printf("Return value= %d",value) ;
    break;

case '5': // Stop Rele (step by step)

  • // Azimut
    inregs.h.ah = 01 ;
    inregs.h.dl = 0x00 ;
    inregs.h.dh = STOP ;
    int86x(INT,&inregs,&outregs,&segregs) ;
    value= outregs.h.ah*255+outregs.h.al ;
    printf("Return value Azimut= %d",value) ;
    // Elevation
    inregs.h.ah = 01 ;
    inregs.h.dl = 0x01 ;
    inregs.h.dh = STOP ;
    int86x(INT,&inregs,&outregs,&segregs) ;
    value= outregs.h.ah*255+outregs.h.al ;
    printf("\nReturn value Elevation= %d",value) ;
    break;

case '6': // Turn Up Rele

  • inregs.h.ah = 01 ;
    inregs.h.dl = 0x01 ;
    inregs.h.dh = UP ;
    int86x(INT,&inregs,&outregs,&segregs) ;
    value= outregs.h.ah*255+outregs.h.al ;
    printf("Return value= %d",value) ;
    break;

case '7': // Turn Down Rele

  • inregs.h.ah = 01 ;
    inregs.h.dl = 0x01 ;
    inregs.h.dh = DOWN ;
    int86x(INT,&inregs,&outregs,&segregs) ;
    value= outregs.h.ah*255+outregs.h.al ;
    printf("Return value= %d",value) ;
    break;

case '8': // Read Antenna Azimuth Position (Degree)

  • inregs.h.ah = 02 ;
    inregs.h.al = 00 ; //Degree
    inregs.h.dh = 0x01 ; //Number times
    inregs.h.dl = 0x00 ; //Azimuth
    int86x(INT,&inregs,&outregs,&segregs) ;
    value= outregs.h.ah*255+outregs.h.al ;
    printf("Read value= %d",value) ;
    break;

case 'a': // Read Antenna Elevation Position (Degree)
case 'A':

  • inregs.h.ah = 02 ;
    inregs.h.al = 00 ; //Degree
    inregs.h.dh = 0x01 ; //Number times
    inregs.h.dl = 0x01 ; //Elevation
    int86x(INT,&inregs,&outregs,&segregs) ;
    value= outregs.h.ah*255+outregs.h.al ;
    printf("Read value= %d",value) ;
    break;

case '9': // Read Antenna Position (Digital)

  • inregs.h.ah = 02 ;
    inregs.h.al = 01 ; //Digital
    inregs.h.dh = 0x01 ; //Number times
    inregs.h.dl = 0x00 ; //Azimuth
    int86x(INT,&inregs,&outregs,&segregs) ;
    value= outregs.h.ah*255+outregs.h.al ;
    printf("Read value= %d",value) ;
    break;

case 'b': // Read Antenna Position (Digital)
case 'B':

  • inregs.h.ah = 02 ;
    inregs.h.al = 01 ; //Digital
    inregs.h.dh = 0x01 ; //Number times
    inregs.h.dl = 0x01 ; //Elevation
    int86x(INT,&inregs,&outregs,&segregs) ;
    value= outregs.h.ah*255+outregs.h.al ;
    printf("Read value= %d",value) ;
    break;

case 'c': // RCI Status
case 'C':

  • inregs.h.ah = 03 ;
    int86x(INT,&inregs,&outregs,&segregs) ;
    value= outregs.h.ah*255+outregs.h.al ;
    printf("Return value= %d",value) ;
    break;

case 'd': // Turn Automaticaly to a Preset Azim
case 'D':

  • memcpy(buffer,'\0',sizeof(buffer)) ;
    x=0 ;
    inregs.h.ah = 04 ;
    inregs.h.al = 00 ;
    inregs.h.dl = 0x00 ; //Azimuth
    printf("\nInput the Preset Value: ") ;
    while(isalnum(ch = getche()))
    • buffer[x++] = (char)ch ;


    value=atoi(buffer) ;
    if(value>=360) value=0 ;

    inregs.h.dl=value % 256 ;
    inregs.h.dh=value / 255 ;


    int86x(INT,&inregs,&outregs,&segregs) ;
    value= outregs.h.ah*255+outregs.h.al ;
    printf("\nReturn value= %d",value) ;
    break;

case 'e': // Turn Automaticaly to a Preset Elev
case 'E':

  • memcpy(buffer,'\0',sizeof(buffer)) ;
    x=0 ;
    inregs.h.ah = 04 ;
    inregs.h.al = 01 ;
    inregs.h.dl = 0x01 ; //Elevation
    printf("\nInput the Preset Value: ") ;
    while(isalnum(ch = getche()))
    • buffer[x++] = ch ;


    value=atoi(buffer) ;
    if(value>=360) value=0 ;

    inregs.h.dl=value % 256 ;
    inregs.h.dh=value / 255 ;


    int86x(INT,&inregs,&outregs,&segregs) ;
    value= outregs.h.ah*255+outregs.h.al ;
    printf("\nReturn value= %d",value) ;
    break;

case '0': // STOP the Interface

  • inregs.h.ah = 05 ;
    int86x(INT,&inregs,&outregs,&segregs) ;
    value= outregs.h.ah*255+outregs.h.al ;
    printf("Return value= %d",value) ;
    break;


}

}


}