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

Products Home
Antenna Rotator System
Introduction
ARS for DOS
ARSWIN
Compatible Rotors      
RCI Boards
Setup
FAQ's
Developers Area

 

Download Area


Antenna Rotator System - ARS for DOS (API)

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;
     }
   }

}

<Previous